diff --git a/presto-jdbc/pom.xml b/presto-jdbc/pom.xml
index 776c2ce0ef5e..02565b4baa61 100644
--- a/presto-jdbc/pom.xml
+++ b/presto-jdbc/pom.xml
@@ -107,20 +107,6 @@
test
-
- com.facebook.presto
- presto-server
- test-jar
- test
-
-
-
- com.facebook.presto
- presto-main
- test-jar
- test
-
-
com.facebook.presto
presto-tpch
@@ -133,13 +119,13 @@
test
-
io.airlift
testing
test
+
org.apache.httpcomponents
httpclient
diff --git a/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestDriver.java b/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestDriver.java
index 0ced85880950..72ceb5f84bf4 100644
--- a/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestDriver.java
+++ b/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestDriver.java
@@ -13,7 +13,7 @@
*/
package com.facebook.presto.jdbc;
-import com.facebook.presto.server.TestingPrestoServer;
+import com.facebook.presto.server.testing.TestingPrestoServer;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import org.testng.annotations.AfterMethod;
diff --git a/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestJdbcResultSet.java b/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestJdbcResultSet.java
index 96b7e7fc7c68..71be844d0001 100644
--- a/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestJdbcResultSet.java
+++ b/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestJdbcResultSet.java
@@ -13,7 +13,7 @@
*/
package com.facebook.presto.jdbc;
-import com.facebook.presto.server.TestingPrestoServer;
+import com.facebook.presto.server.testing.TestingPrestoServer;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
diff --git a/presto-server/src/main/java/com/facebook/presto/server/testing/FileUtils.java b/presto-server/src/main/java/com/facebook/presto/server/testing/FileUtils.java
new file mode 100644
index 000000000000..2355014c85a6
--- /dev/null
+++ b/presto-server/src/main/java/com/facebook/presto/server/testing/FileUtils.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.facebook.presto.server.testing;
+
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.FileVisitor;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
+
+final class FileUtils
+{
+ private FileUtils() {}
+
+ public static void deleteRecursively(Path path)
+ {
+ try {
+ Files.walkFileTree(path, deletionVisitor());
+ }
+ catch (IOException e) {
+ // ignored
+ }
+ }
+
+ private static FileVisitor deletionVisitor()
+ {
+ return new FileVisitor()
+ {
+ @Override
+ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
+ throws IOException
+ {
+ return FileVisitResult.CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
+ throws IOException
+ {
+ delete(file);
+ return FileVisitResult.CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult visitFileFailed(Path file, IOException e)
+ throws IOException
+ {
+ delete(file);
+ return FileVisitResult.CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult postVisitDirectory(Path dir, IOException e)
+ throws IOException
+ {
+ delete(dir);
+ return FileVisitResult.CONTINUE;
+ }
+ };
+ }
+
+ private static void delete(Path path)
+ {
+ try {
+ Files.delete(path);
+ }
+ catch (IOException e) {
+ // ignored
+ }
+ }
+}
diff --git a/presto-server/src/test/java/com/facebook/presto/server/TestingPrestoServer.java b/presto-server/src/main/java/com/facebook/presto/server/testing/TestingPrestoServer.java
similarity index 84%
rename from presto-server/src/test/java/com/facebook/presto/server/TestingPrestoServer.java
rename to presto-server/src/main/java/com/facebook/presto/server/testing/TestingPrestoServer.java
index 6eb5fa6a5029..cc1d63410afd 100644
--- a/presto-server/src/test/java/com/facebook/presto/server/TestingPrestoServer.java
+++ b/presto-server/src/main/java/com/facebook/presto/server/testing/TestingPrestoServer.java
@@ -11,19 +11,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.facebook.presto.server;
+package com.facebook.presto.server.testing;
import com.facebook.presto.connector.ConnectorManager;
import com.facebook.presto.metadata.AllNodes;
import com.facebook.presto.metadata.InternalNodeManager;
import com.facebook.presto.metadata.Metadata;
-import com.facebook.presto.tpch.SampledTpchPlugin;
-import com.facebook.presto.tpch.TpchPlugin;
+import com.facebook.presto.server.PluginManager;
+import com.facebook.presto.server.ServerMainModule;
+import com.facebook.presto.spi.Plugin;
import com.google.common.base.Optional;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.io.Files;
import com.google.common.net.HostAndPort;
import com.google.inject.Injector;
import com.google.inject.Module;
@@ -40,22 +40,25 @@
import io.airlift.jmx.testing.TestingJmxModule;
import io.airlift.json.JsonModule;
import io.airlift.node.testing.TestingNodeModule;
-import io.airlift.testing.FileUtils;
import io.airlift.tracetoken.TraceTokenModule;
import org.weakref.jmx.guice.MBeanModule;
import java.io.Closeable;
-import java.io.File;
import java.net.URI;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.Map;
+import static com.facebook.presto.server.testing.FileUtils.deleteRecursively;
import static com.google.common.base.Preconditions.checkNotNull;
public class TestingPrestoServer
implements Closeable
{
- private final File baseDataDir;
+ private final Path baseDataDir;
private final LifeCycleManager lifeCycleManager;
+ private final PluginManager pluginManager;
+ private final ConnectorManager connectorManager;
private final TestingHttpServer server;
private final Metadata metadata;
private final InternalNodeManager nodeManager;
@@ -70,14 +73,14 @@ public TestingPrestoServer()
public TestingPrestoServer(boolean coordinator, Map properties, String environment, URI discoveryUri)
throws Exception
{
- baseDataDir = Files.createTempDir();
+ baseDataDir = Files.createTempDirectory("PrestoTest");
ImmutableMap.Builder serverProperties = ImmutableMap.builder()
.putAll(properties)
.put("coordinator", String.valueOf(coordinator))
- .put("storage-manager.data-directory", baseDataDir.getPath())
+ .put("storage-manager.data-directory", baseDataDir.toString())
.put("presto-metastore.db.type", "h2")
- .put("presto-metastore.db.filename", new File(baseDataDir, "db/MetaStore").getPath())
+ .put("presto-metastore.db.filename", baseDataDir.resolve("db/MetaStore").toString())
.put("presto.version", "testversion")
.put("analyzer.approximate-queries-enabled", "true");
@@ -118,14 +121,10 @@ public TestingPrestoServer(boolean coordinator, Map properties,
lifeCycleManager = injector.getInstance(LifeCycleManager.class);
- PluginManager pluginManager = injector.getInstance(PluginManager.class);
- pluginManager.installPlugin(new TpchPlugin());
- pluginManager.installPlugin(new SampledTpchPlugin());
+ pluginManager = injector.getInstance(PluginManager.class);
- ConnectorManager connectorManager = injector.getInstance(ConnectorManager.class);
+ connectorManager = injector.getInstance(ConnectorManager.class);
connectorManager.createConnection("default", "native", ImmutableMap.of());
- connectorManager.createConnection("tpch", "tpch", ImmutableMap.of());
- connectorManager.createConnection("tpch_sampled", "tpch_sampled", ImmutableMap.of());
server = injector.getInstance(TestingHttpServer.class);
metadata = injector.getInstance(Metadata.class);
@@ -147,10 +146,16 @@ public void close()
throw Throwables.propagate(e);
}
finally {
- FileUtils.deleteRecursively(baseDataDir);
+ deleteRecursively(baseDataDir);
}
}
+ public void installPlugin(Plugin plugin, String catalogName, String connectorName)
+ {
+ pluginManager.installPlugin(plugin);
+ connectorManager.createConnection(catalogName, connectorName, ImmutableMap.of());
+ }
+
public URI getBaseUrl()
{
return server.getBaseUrl();
diff --git a/presto-server/src/test/java/com/facebook/presto/server/TestDistributedQueries.java b/presto-server/src/test/java/com/facebook/presto/server/TestDistributedQueries.java
index 29002911d22e..7d1b9192dfe4 100644
--- a/presto-server/src/test/java/com/facebook/presto/server/TestDistributedQueries.java
+++ b/presto-server/src/test/java/com/facebook/presto/server/TestDistributedQueries.java
@@ -22,9 +22,12 @@
import com.facebook.presto.metadata.AllNodes;
import com.facebook.presto.metadata.QualifiedTableName;
import com.facebook.presto.metadata.QualifiedTablePrefix;
+import com.facebook.presto.server.testing.TestingPrestoServer;
import com.facebook.presto.spi.TableHandle;
import com.facebook.presto.sql.analyzer.Session;
+import com.facebook.presto.tpch.SampledTpchPlugin;
import com.facebook.presto.tpch.TpchMetadata;
+import com.facebook.presto.tpch.TpchPlugin;
import com.facebook.presto.tuple.TupleInfo;
import com.facebook.presto.tuple.TupleInfo.Type;
import com.facebook.presto.util.MaterializedResult;
@@ -440,6 +443,9 @@ private static TestingPrestoServer createTestingPrestoServer(URI discoveryUri, b
.put("datasources", "native,tpch,tpch_sampled")
.build();
- return new TestingPrestoServer(coordinator, properties, ENVIRONMENT, discoveryUri);
+ TestingPrestoServer server = new TestingPrestoServer(coordinator, properties, ENVIRONMENT, discoveryUri);
+ server.installPlugin(new TpchPlugin(), "tpch", "tpch");
+ server.installPlugin(new SampledTpchPlugin(), "tpch_sampled", "tpch_sampled");
+ return server;
}
}
diff --git a/presto-server/src/test/java/com/facebook/presto/server/TestExecuteResource.java b/presto-server/src/test/java/com/facebook/presto/server/TestExecuteResource.java
index a4d502108ad7..8119d95be815 100644
--- a/presto-server/src/test/java/com/facebook/presto/server/TestExecuteResource.java
+++ b/presto-server/src/test/java/com/facebook/presto/server/TestExecuteResource.java
@@ -14,6 +14,7 @@
package com.facebook.presto.server;
import com.facebook.presto.client.PrestoHeaders;
+import com.facebook.presto.server.testing.TestingPrestoServer;
import com.facebook.presto.sql.analyzer.Session;
import com.google.common.base.Charsets;
import com.google.common.net.HttpHeaders;
diff --git a/presto-server/src/test/java/com/facebook/presto/server/TestNodeResource.java b/presto-server/src/test/java/com/facebook/presto/server/TestNodeResource.java
index a41ed308332c..47acec4ae7e1 100644
--- a/presto-server/src/test/java/com/facebook/presto/server/TestNodeResource.java
+++ b/presto-server/src/test/java/com/facebook/presto/server/TestNodeResource.java
@@ -13,6 +13,7 @@
*/
package com.facebook.presto.server;
+import com.facebook.presto.server.testing.TestingPrestoServer;
import io.airlift.http.client.ApacheHttpClient;
import io.airlift.http.client.HttpClient;
import org.testng.annotations.AfterMethod;
diff --git a/presto-server/src/test/java/com/facebook/presto/server/TestServer.java b/presto-server/src/test/java/com/facebook/presto/server/TestServer.java
index 07777240352d..b6dc956434b3 100644
--- a/presto-server/src/test/java/com/facebook/presto/server/TestServer.java
+++ b/presto-server/src/test/java/com/facebook/presto/server/TestServer.java
@@ -13,6 +13,7 @@
*/
package com.facebook.presto.server;
+import com.facebook.presto.server.testing.TestingPrestoServer;
import io.airlift.http.client.ApacheHttpClient;
import io.airlift.http.client.HttpClient;
import io.airlift.http.client.StatusResponseHandler;