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;