Repository: sqoop
Updated Branches:
refs/heads/sqoop2 25d236c31 -> 66a86353c
SQOOP-2762: Sqoop2: Provide test infrastructure base class for connector loading tests
(Dian Fu via Colin Ma)
Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/66a86353
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/66a86353
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/66a86353
Branch: refs/heads/sqoop2
Commit: 66a86353ca2dd766a6ab005e28e3e5666436785d
Parents: 25d236c
Author: Colin Ma <colin@apache.org>
Authored: Fri Jan 29 15:48:26 2016 +0800
Committer: Colin Ma <colin@apache.org>
Committed: Fri Jan 29 15:48:26 2016 +0800
----------------------------------------------------------------------
.../mapreduce/MapreduceExecutionEngine.java | 7 +
.../java/org/apache/sqoop/job/mr/MRUtils.java | 4 +
.../sqoop/test/testcases/ConnectorTestCase.java | 285 -------------------
.../sqoop/test/testcases/JettyTestCase.java | 274 ------------------
.../BlacklistedConnectorTest.java | 35 +--
.../connectorloading/ClasspathTest.java | 27 +-
.../ConnectorClasspathIsolationTest.java | 25 +-
7 files changed, 64 insertions(+), 593 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sqoop/blob/66a86353/execution/mapreduce/src/main/java/org/apache/sqoop/execution/mapreduce/MapreduceExecutionEngine.java
----------------------------------------------------------------------
diff --git a/execution/mapreduce/src/main/java/org/apache/sqoop/execution/mapreduce/MapreduceExecutionEngine.java
b/execution/mapreduce/src/main/java/org/apache/sqoop/execution/mapreduce/MapreduceExecutionEngine.java
index d6f0ff7..e14a283 100644
--- a/execution/mapreduce/src/main/java/org/apache/sqoop/execution/mapreduce/MapreduceExecutionEngine.java
+++ b/execution/mapreduce/src/main/java/org/apache/sqoop/execution/mapreduce/MapreduceExecutionEngine.java
@@ -26,6 +26,7 @@ import org.apache.sqoop.job.MRJobConstants;
import org.apache.sqoop.job.etl.From;
import org.apache.sqoop.job.etl.To;
import org.apache.sqoop.job.io.SqoopWritable;
+import org.apache.sqoop.job.mr.MRUtils;
import org.apache.sqoop.job.mr.SqoopInputFormat;
import org.apache.sqoop.job.mr.SqoopMapper;
import org.apache.sqoop.job.mr.SqoopNullOutputFormat;
@@ -101,4 +102,10 @@ public class MapreduceExecutionEngine extends ExecutionEngine {
// Guava
jobrequest.addJarForClass(ThreadFactoryBuilder.class);
}
+
+ @Override
+ public void destroy() {
+ super.destroy();
+ MRUtils.destroy();
+ }
}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/66a86353/execution/mapreduce/src/main/java/org/apache/sqoop/job/mr/MRUtils.java
----------------------------------------------------------------------
diff --git a/execution/mapreduce/src/main/java/org/apache/sqoop/job/mr/MRUtils.java b/execution/mapreduce/src/main/java/org/apache/sqoop/job/mr/MRUtils.java
index 3e55778..5f685b5 100644
--- a/execution/mapreduce/src/main/java/org/apache/sqoop/job/mr/MRUtils.java
+++ b/execution/mapreduce/src/main/java/org/apache/sqoop/job/mr/MRUtils.java
@@ -92,4 +92,8 @@ public final class MRUtils {
throw new SqoopException(MRExecutionError.MAPRED_EXEC_0026, connectorName);
}
+
+ public static synchronized void destroy() {
+ connectorClassLoaderInited = false;
+ }
}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/66a86353/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java b/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java
deleted file mode 100644
index f071786..0000000
--- a/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.sqoop.test.testcases;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotSame;
-
-import org.apache.log4j.Logger;
-import org.apache.sqoop.client.SubmissionCallback;
-import org.apache.sqoop.common.test.asserts.ProviderAsserts;
-import org.apache.sqoop.common.test.db.DatabaseProvider;
-import org.apache.sqoop.common.test.db.DatabaseProviderFactory;
-import org.apache.sqoop.common.test.db.TableName;
-import org.apache.sqoop.connector.hdfs.configuration.ToFormat;
-import org.apache.sqoop.model.MConfigList;
-import org.apache.sqoop.model.MJob;
-import org.apache.sqoop.model.MLink;
-import org.apache.sqoop.model.MPersistableEntity;
-import org.apache.sqoop.model.MSubmission;
-import org.apache.sqoop.submission.SubmissionStatus;
-import org.apache.sqoop.test.data.Cities;
-import org.apache.sqoop.test.data.ShortStories;
-import org.apache.sqoop.test.data.UbuntuReleases;
-import org.apache.sqoop.test.utils.SqoopUtils;
-import org.apache.sqoop.validation.Status;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-
-/**
- * Base test case suitable for connector testing.
- *
- * In addition to Jetty based test case it will also create and initialize
- * the database provider prior every test execution.
- */
-@edu.umd.cs.findbugs.annotations.SuppressWarnings({"MS_PKGPROTECT", "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"})
-abstract public class ConnectorTestCase extends JettyTestCase {
-
- private static final Logger LOG = Logger.getLogger(ConnectorTestCase.class);
-
- protected static DatabaseProvider provider;
-
- /**
- * Default submission callbacks that are printing various status about the submission.
- */
- protected static final SubmissionCallback DEFAULT_SUBMISSION_CALLBACKS = new SubmissionCallback()
{
- @Override
- public void submitted(MSubmission submission) {
- LOG.info("Submission submitted: " + submission);
- }
-
- @Override
- public void updated(MSubmission submission) {
- LOG.info("Submission updated: " + submission);
- }
-
- @Override
- public void finished(MSubmission submission) {
- LOG.info("Submission finished: " + submission);
- }
- };
-
- @BeforeSuite(alwaysRun = true)
- public void startProvider() throws Exception {
- provider = DatabaseProviderFactory.getProvider(System.getProperties());
- LOG.info("Starting database provider: " + provider.getClass().getName());
- provider.start();
- }
-
- @AfterSuite(alwaysRun = true)
- public void stopProvider() {
- LOG.info("Stopping database provider: " + provider.getClass().getName());
- provider.stop();
- }
-
- public TableName getTableName() {
- return new TableName(getClass().getSimpleName());
- }
-
- protected void createTable(String primaryKey, String ...columns) {
- provider.createTable(getTableName(), primaryKey, columns);
- }
-
- protected void dropTable() {
- provider.dropTable(getTableName());
- }
-
- protected void insertRow(Object ...values) {
- provider.insertRow(getTableName(), values);
- }
-
- protected long rowCount() {
- return provider.rowCount(getTableName());
- }
-
- protected void dumpTable() {
- provider.dumpTable(getTableName());
- }
-
- /**
- * Fill link config based on currently active provider.
- *
- * @param link MLink object to fill
- */
- protected void fillRdbmsLinkConfig(MLink link) {
- MConfigList configs = link.getConnectorLinkConfig();
- configs.getStringInput("linkConfig.jdbcDriver").setValue(provider.getJdbcDriver());
- configs.getStringInput("linkConfig.connectionString").setValue(provider.getConnectionUrl());
- configs.getStringInput("linkConfig.username").setValue(provider.getConnectionUsername());
- configs.getStringInput("linkConfig.password").setValue(provider.getConnectionPassword());
- }
-
- protected void fillRdbmsFromConfig(MJob job, String partitionColumn) {
- MConfigList fromConfig = job.getFromJobConfig();
- fromConfig.getStringInput("fromJobConfig.tableName").setValue(getTableName().getTableName());
- fromConfig.getStringInput("fromJobConfig.partitionColumn").setValue(partitionColumn);
- }
-
- protected void fillRdbmsToConfig(MJob job) {
- MConfigList toConfig = job.getToJobConfig();
- toConfig.getStringInput("toJobConfig.tableName").setValue(getTableName().getTableName());
- }
-
- protected void fillHdfsLink(MLink link) {
- MConfigList configs = link.getConnectorLinkConfig();
- configs.getStringInput("linkConfig.confDir").setValue(getCluster().getConfigurationPath());
- }
-
- /**
- * Fill TO config with specific storage and output type.
- *
- * @param job MJob object to fill
- * @param output Output type that should be set
- */
- protected void fillHdfsToConfig(MJob job, ToFormat output) {
- MConfigList toConfig = job.getToJobConfig();
- toConfig.getEnumInput("toJobConfig.outputFormat").setValue(output);
- toConfig.getStringInput("toJobConfig.outputDirectory").setValue(getMapreduceDirectory());
- }
-
- /**
- * Fill FROM config
- *
- * @param job MJob object to fill
- */
- protected void fillHdfsFromConfig(MJob job) {
- MConfigList fromConfig = job.getFromJobConfig();
- fromConfig.getStringInput("fromJobConfig.inputDirectory").setValue(getMapreduceDirectory());
- }
-
- /**
- * Fill Driver config
- * @param job
- */
- protected void fillDriverConfig(MJob job) {
- job.getDriverConfig().getStringInput("throttlingConfig.numExtractors").setValue("3");
- }
-
-
- /**
- * Create table cities.
- */
- protected void createTableCities() {
- new Cities(provider, getTableName()).createTables();
- }
-
- /**
- * Create table cities and load few rows.
- */
- protected void createAndLoadTableCities() {
- new Cities(provider, getTableName()).createTables().loadBasicData();
- }
-
- /**
- * Create table for ubuntu releases.
- */
- protected void createTableUbuntuReleases() {
- new UbuntuReleases(provider, getTableName()).createTables();
- }
-
- /**
- * Create table for ubuntu releases.
- */
- protected void createAndLoadTableUbuntuReleases() {
- new UbuntuReleases(provider, getTableName()).createTables().loadBasicData();
- }
-
- /**
- * Create table for short stories.
- */
- protected void createTableShortStories() {
- new ShortStories(provider, getTableName()).createTables();
- }
-
- /**
- * Create table for short stories.
- */
- protected void createAndLoadTableShortStories() {
- new ShortStories(provider, getTableName()).createTables().loadBasicData();
- }
-
- /**
- * Assert row in testing table.
- *
- * @param conditions Conditions in config that are expected by the database provider
- * @param values Values that are expected in the table (with corresponding types)
- */
- protected void assertRow(Object[] conditions, Object ...values) {
- ProviderAsserts.assertRow(provider, getTableName(), conditions, values);
- }
-
- /**
- * Assert row in table "cities".
- *
- * @param values Values that are expected
- */
- protected void assertRowInCities(Object... values) {
- assertRow(new Object[]{"id", values[0]}, values);
- }
-
- /**
- * Create link.
- *
- * With asserts to make sure that it was created correctly.
- *
- * @param link
- */
- protected void saveLink(MLink link) {
- SqoopUtils.fillObjectName(link);
- assertEquals(getClient().saveLink(link), Status.OK);
- }
-
- /**
- * Create job.
- *
- * With asserts to make sure that it was created correctly.
- *
- * @param job
- */
- protected void saveJob(MJob job) {
- SqoopUtils.fillObjectName(job);
- assertEquals(getClient().saveJob(job), Status.OK);
- }
-
- /**
- * Run job with given job name.
- *
- * @param jobName Job Name
- * @throws Exception
- */
- protected void executeJob(String jobName) throws Exception {
- MSubmission finalSubmission = getClient().startJob(jobName, DEFAULT_SUBMISSION_CALLBACKS,
100);
-
- if(finalSubmission.getStatus().isFailure()) {
- LOG.error("Submission has failed: " + finalSubmission.getError().getErrorSummary());
- LOG.error("Corresponding error details: " + finalSubmission.getError().getErrorDetails());
- }
- assertEquals(finalSubmission.getStatus(), SubmissionStatus.SUCCEEDED,
- "Submission finished with error: " + finalSubmission.getError().getErrorSummary());
- }
-
- /**
- * Run given job.
- *
- * @param job Job object
- * @throws Exception
- */
- protected void executeJob(MJob job) throws Exception {
- executeJob(job.getName());
- }
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/66a86353/test/src/main/java/org/apache/sqoop/test/testcases/JettyTestCase.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/sqoop/test/testcases/JettyTestCase.java b/test/src/main/java/org/apache/sqoop/test/testcases/JettyTestCase.java
deleted file mode 100644
index d4ca396..0000000
--- a/test/src/main/java/org/apache/sqoop/test/testcases/JettyTestCase.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.sqoop.test.testcases;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.log4j.Logger;
-import org.apache.sqoop.client.SqoopClient;
-import org.apache.sqoop.test.asserts.HdfsAsserts;
-import org.apache.sqoop.test.hadoop.HadoopMiniClusterRunner;
-import org.apache.sqoop.test.hadoop.HadoopRunner;
-import org.apache.sqoop.test.hadoop.HadoopRunnerFactory;
-import org.apache.sqoop.test.kdc.KdcRunner;
-import org.apache.sqoop.test.kdc.KdcRunnerFactory;
-import org.apache.sqoop.test.kdc.MiniKdcRunner;
-import org.apache.sqoop.test.minicluster.JettySqoopMiniCluster;
-import org.apache.sqoop.test.minicluster.SqoopMiniCluster;
-import org.apache.sqoop.test.minicluster.SqoopMiniClusterFactory;
-import org.apache.sqoop.test.utils.HdfsUtils;
-import org.testng.ITest;
-import org.testng.ITestContext;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-
-/**
- * Basic test case that will bootstrap Sqoop server running in embedded Jetty
- * process.
- */
-@edu.umd.cs.findbugs.annotations.SuppressWarnings({"MS_PKGPROTECT", "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"})
-abstract public class JettyTestCase implements ITest {
- private static final Logger LOG = Logger.getLogger(JettyTestCase.class);
-
- public String methodName;
-
- /**
- * Temporary base path that will be used for tests.
- *
- * By default we will take a look for sqoop.integration.tmpdir property that is
- * filled up by maven. If the test is not started from maven (IDE) we will
- * pick up configured java.io.tmpdir value. The last results is /tmp/ directory
- * in case that no property is set.
- */
- protected static final String TMP_PATH_BASE =
- System.getProperty("sqoop.integration.tmpdir", System.getProperty("java.io.tmpdir", "/tmp"))
+ "/sqoop-cargo-tests";
-
- /**
- * Temporary directory that will be used by the test.
- *
- * We will take TMP_PATH_BASE and append the test suite. For example:
- *
- * TMP_PATH_BASE/TestConnectorsSuite
- */
- private static String tmpPath;
-
- /**
- * Hadoop cluster
- */
- protected static HadoopRunner hadoopCluster;
-
- /**
- * Hadoop client
- */
- protected static FileSystem hdfsClient;
-
- /**
- * Jetty based Sqoop mini cluster
- */
- private static SqoopMiniCluster cluster;
-
- /**
- * Sqoop client API.
- */
- private static SqoopClient client;
-
- /**
- * Kdc
- */
- private static KdcRunner kdc;
-
- /**
- * Use the method name as the test name
- */
- public String getTestName() {
- return methodName;
- }
-
- @BeforeMethod(alwaysRun = true)
- public void setupMehodNameAndOutputPath(Method method) throws Exception {
- methodName = method.getName();
- hdfsClient.delete(new Path(getMapreduceDirectory()), true);
- }
-
- @BeforeSuite(alwaysRun = true)
- public void setupSuite(ITestContext context) throws Exception {
- tmpPath = HdfsUtils.joinPathFragments(TMP_PATH_BASE, context.getSuite().getName());
-
- LOG.debug("Temporary Directory: " + getTemporaryPath());
- FileUtils.deleteDirectory(new File(getTemporaryPath()));
-
- startKdc();
- startHadoop();
- startSqoop();
- }
-
- @AfterSuite(alwaysRun = true)
- public void tearDownSuite() throws Exception {
- stopSqoop();
- stopHadoop();
- stopKdc();
- }
-
- protected void startKdc() throws Exception {
- kdc = KdcRunnerFactory.getKdc(System.getProperties(), MiniKdcRunner.class);
- kdc.setTemporaryPath(getTemporaryPath());
- kdc.start();
- }
-
- protected void stopKdc() throws Exception {
- kdc.stop();
- }
-
- protected void startHadoop() throws Exception {
- // Start Hadoop Clusters
- hadoopCluster = HadoopRunnerFactory.getHadoopCluster(System.getProperties(), HadoopMiniClusterRunner.class);
- hadoopCluster.setTemporaryPath(getTemporaryPath());
- hadoopCluster.setConfiguration(hadoopCluster.prepareConfiguration(new JobConf()));
- hadoopCluster.start();
-
- // Initialize Hdfs Client
- hdfsClient = FileSystem.get(hadoopCluster.getConfiguration());
- LOG.debug("HDFS Client: " + hdfsClient);
- }
-
- protected void startSqoop() throws Exception {
- // Start server
- cluster = createSqoopMiniCluster();
- cluster.start();
-
- // Initialize Sqoop Client API
- setClient(new SqoopClient(getServerUrl()));
- }
-
- protected void stopSqoop() throws Exception {
- if (cluster != null) {
- cluster.stop();
- }
- }
-
- protected void stopHadoop() throws Exception {
- hadoopCluster.stop();
- }
-
- /**
- * Create Sqoop MiniCluster instance that should be used for this test.
- *
- * @return New instance of test mini cluster
- */
- public SqoopMiniCluster createSqoopMiniCluster() throws Exception {
- return SqoopMiniClusterFactory.getSqoopMiniCluster(System.getProperties(), JettySqoopMiniCluster.class,
- getSqoopMiniClusterTemporaryPath(), hadoopCluster.getConfiguration(), kdc);
- }
-
- /**
- * Return SqoopClient configured to talk to testing server.
- *
- * @return
- */
- public static SqoopClient getClient() {
- return client;
- }
-
- public static void setClient(SqoopClient sqoopClient) throws Exception {
- client = sqoopClient;
- kdc.authenticateWithSqoopServer(sqoopClient);
- }
-
- public static SqoopMiniCluster getCluster() {
- return cluster;
- }
-
- public static void setCluster(JettySqoopMiniCluster sqoopMiniClusterluster) {
- cluster = sqoopMiniClusterluster;
- }
-
- public static String getTemporaryPath() {
- return tmpPath;
- }
-
- public static String getSqoopMiniClusterTemporaryPath() {
- return HdfsUtils.joinPathFragments(getTemporaryPath(), "sqoop-mini-cluster");
- }
-
- /**
- * Return testing server URL
- *
- * @return
- */
- public static String getServerUrl() {
- return cluster.getServerUrl();
- }
-
- /**
- * Return mapreduce base directory.
- *
- * @return
- */
- public String getMapreduceDirectory() {
- return HdfsUtils.joinPathFragments(hadoopCluster.getTestDirectory(), getClass().getName(),
getTestName());
- }
-
- /**
- * Assert that execution has generated following lines.
- *
- * As the lines can be spread between multiple files the ordering do not make
- * a difference.
- *
- * @param lines
- * @throws IOException
- */
- protected void assertTo(String... lines) throws IOException {
- // TODO(VB): fix this to be not directly dependent on hdfs/MR
- HdfsAsserts.assertMapreduceOutput(hdfsClient, getMapreduceDirectory(), lines);
- }
-
- /**
- * Verify number of TO files.
- *
- * @param expectedFiles Expected number of files
- */
- protected void assertToFiles(int expectedFiles) throws IOException {
- // TODO(VB): fix this to be not directly dependent on hdfs/MR
- HdfsAsserts.assertMapreduceOutputFiles(hdfsClient, getMapreduceDirectory(), expectedFiles);
- }
-
- /**
- * Create FROM file with specified content.
- *
- * @param filename Input file name
- * @param lines Individual lines that should be written into the file
- * @throws IOException
- */
- protected void createFromFile(String filename, String...lines) throws IOException {
- createFromFile(hdfsClient, filename, lines);
- }
-
- /**
- * Create file on given HDFS instance with given lines
- */
- protected void createFromFile(FileSystem hdfsClient, String filename, String...lines) throws
IOException {
- HdfsUtils.createFile(hdfsClient, HdfsUtils.joinPathFragments(getMapreduceDirectory(),
filename), lines);
- }
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/66a86353/test/src/test/java/org/apache/sqoop/integration/connectorloading/BlacklistedConnectorTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connectorloading/BlacklistedConnectorTest.java
b/test/src/test/java/org/apache/sqoop/integration/connectorloading/BlacklistedConnectorTest.java
index 66c20a1..1c7a483 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connectorloading/BlacklistedConnectorTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connectorloading/BlacklistedConnectorTest.java
@@ -18,20 +18,26 @@
package org.apache.sqoop.integration.connectorloading;
import org.apache.hadoop.conf.Configuration;
-import org.apache.sqoop.client.SqoopClient;
import org.apache.sqoop.common.SqoopException;
import org.apache.sqoop.core.ConfigurationConstants;
+import org.apache.sqoop.test.infrastructure.Infrastructure;
+import org.apache.sqoop.test.infrastructure.SqoopTestCase;
+import org.apache.sqoop.test.infrastructure.providers.KdcInfrastructureProvider;
import org.apache.sqoop.test.minicluster.JettySqoopMiniCluster;
-import org.apache.sqoop.test.testcases.ConnectorTestCase;
+import org.apache.sqoop.test.minicluster.SqoopMiniCluster;
import org.apache.sqoop.test.utils.HdfsUtils;
import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.HashMap;
import java.util.Map;
@Test(groups = "no-real-cluster")
-public class BlacklistedConnectorTest extends ConnectorTestCase {
+@Infrastructure(dependencies = {KdcInfrastructureProvider.class})
+public class BlacklistedConnectorTest extends SqoopTestCase {
+ private SqoopMiniCluster sqoopMiniCluster;
+
public static class DerbySqoopMiniCluster extends JettySqoopMiniCluster {
public DerbySqoopMiniCluster(String temporaryPath, Configuration configuration) throws
Exception {
super(temporaryPath, configuration);
@@ -46,33 +52,30 @@ public class BlacklistedConnectorTest extends ConnectorTestCase {
}
}
+ @BeforeMethod(dependsOnMethods = { "init" })
public void startSqoopMiniCluster() throws Exception {
// And use them for new Derby repo instance
- setCluster(new DerbySqoopMiniCluster(HdfsUtils.joinPathFragments(super
- .getSqoopMiniClusterTemporaryPath(), getTestName()), hadoopCluster.getConfiguration()));
+ sqoopMiniCluster = new DerbySqoopMiniCluster(HdfsUtils.joinPathFragments(super
+ .getTemporaryPath(), getTestName()), getHadoopConf());
+ KdcInfrastructureProvider kdcProvider = getInfrastructureProvider(KdcInfrastructureProvider.class);
+ if (kdcProvider != null) {
+ sqoopMiniCluster.setKdc(kdcProvider.getInstance());
+ }
// Start server
- getCluster().start();
+ sqoopMiniCluster.start();
// Initialize Sqoop Client API
- setClient(new SqoopClient(getServerUrl()));
+ initSqoopClient(sqoopMiniCluster.getServerUrl());
}
@Test(expectedExceptions = {SqoopException.class})
public void testCreateLinkWithNonexistantConnector() throws Exception {
- startSqoopMiniCluster();
getClient().createLink("generic-jdbc-connector");
}
@AfterMethod
public void stopCluster() throws Exception {
- if (getCluster() != null) {
- getCluster().stop();
- }
- }
-
- @Override
- public void startSqoop() throws Exception {
- // Do nothing so that Sqoop isn't started before Suite.
+ sqoopMiniCluster.stop();
}
}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/66a86353/test/src/test/java/org/apache/sqoop/integration/connectorloading/ClasspathTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connectorloading/ClasspathTest.java
b/test/src/test/java/org/apache/sqoop/integration/connectorloading/ClasspathTest.java
index 4aed991..5e49064 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connectorloading/ClasspathTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connectorloading/ClasspathTest.java
@@ -19,13 +19,16 @@
package org.apache.sqoop.integration.connectorloading;
import org.apache.hadoop.conf.Configuration;
-import org.apache.sqoop.client.SqoopClient;
import org.apache.sqoop.core.ConfigurationConstants;
import org.apache.sqoop.model.MDriverConfig;
import org.apache.sqoop.model.MJob;
import org.apache.sqoop.model.MLink;
+import org.apache.sqoop.test.infrastructure.Infrastructure;
+import org.apache.sqoop.test.infrastructure.SqoopTestCase;
+import org.apache.sqoop.test.infrastructure.providers.DatabaseInfrastructureProvider;
+import org.apache.sqoop.test.infrastructure.providers.KdcInfrastructureProvider;
import org.apache.sqoop.test.minicluster.JettySqoopMiniCluster;
-import org.apache.sqoop.test.testcases.ConnectorTestCase;
+import org.apache.sqoop.test.minicluster.SqoopMiniCluster;
import org.apache.sqoop.test.utils.ConnectorUtils;
import org.apache.sqoop.test.utils.HdfsUtils;
import org.testng.annotations.AfterMethod;
@@ -38,7 +41,8 @@ import java.util.List;
import java.util.Map;
@Test(groups = "no-real-cluster")
-public class ClasspathTest extends ConnectorTestCase {
+@Infrastructure(dependencies = {KdcInfrastructureProvider.class, DatabaseInfrastructureProvider.class})
+public class ClasspathTest extends SqoopTestCase {
private static final String TEST_CONNECTOR_JAR_NAME = "test-connector.jar";
private static final String TEST_DEPENDENCY_JAR_NAME = "test-dependency.jar";
@@ -61,6 +65,7 @@ public class ClasspathTest extends ConnectorTestCase {
};
private ClassLoader classLoader;
+ private SqoopMiniCluster sqoopMiniCluster;
public static class DerbySqoopMiniCluster extends JettySqoopMiniCluster {
@@ -91,13 +96,18 @@ public class ClasspathTest extends ConnectorTestCase {
public void startSqoopMiniCluster(String extraClasspath, String jobExtraClasspath) throws
Exception {
// And use them for new Derby repo instance
- setCluster(new DerbySqoopMiniCluster(HdfsUtils.joinPathFragments(super.getSqoopMiniClusterTemporaryPath(),
getTestName()), hadoopCluster.getConfiguration(), extraClasspath, jobExtraClasspath));
+ sqoopMiniCluster = new DerbySqoopMiniCluster(HdfsUtils.joinPathFragments
+ (super.getTemporaryPath(), getTestName()), getHadoopConf(), extraClasspath, jobExtraClasspath);
+ KdcInfrastructureProvider kdcProvider = getInfrastructureProvider(KdcInfrastructureProvider.class);
+ if (kdcProvider != null) {
+ sqoopMiniCluster.setKdc(kdcProvider.getInstance());
+ }
// Start server
- getCluster().start();
+ sqoopMiniCluster.start();
// Initialize Sqoop Client API
- setClient(new SqoopClient(getServerUrl()));
+ initSqoopClient(sqoopMiniCluster.getServerUrl());
}
@BeforeMethod
@@ -185,8 +195,7 @@ public class ClasspathTest extends ConnectorTestCase {
return driverConfig;
}
- @Override
- public void startSqoop() throws Exception {
- // Do nothing so that Sqoop isn't started before Suite.
+ private void stopSqoop() throws Exception {
+ sqoopMiniCluster.stop();
}
}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/66a86353/test/src/test/java/org/apache/sqoop/integration/connectorloading/ConnectorClasspathIsolationTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connectorloading/ConnectorClasspathIsolationTest.java
b/test/src/test/java/org/apache/sqoop/integration/connectorloading/ConnectorClasspathIsolationTest.java
index 295e049..bbbf749 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connectorloading/ConnectorClasspathIsolationTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connectorloading/ConnectorClasspathIsolationTest.java
@@ -24,13 +24,15 @@ import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
-import org.apache.sqoop.client.SqoopClient;
import org.apache.sqoop.core.ConfigurationConstants;
import org.apache.sqoop.model.MDriverConfig;
import org.apache.sqoop.model.MJob;
import org.apache.sqoop.model.MLink;
+import org.apache.sqoop.test.infrastructure.Infrastructure;
+import org.apache.sqoop.test.infrastructure.SqoopTestCase;
+import org.apache.sqoop.test.infrastructure.providers.KdcInfrastructureProvider;
import org.apache.sqoop.test.minicluster.JettySqoopMiniCluster;
-import org.apache.sqoop.test.testcases.ConnectorTestCase;
+import org.apache.sqoop.test.minicluster.SqoopMiniCluster;
import org.apache.sqoop.test.utils.ConnectorUtils;
import org.apache.sqoop.test.utils.HdfsUtils;
import org.testng.annotations.AfterMethod;
@@ -38,7 +40,8 @@ import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@Test(groups = "no-real-cluster")
-public class ConnectorClasspathIsolationTest extends ConnectorTestCase {
+@Infrastructure(dependencies = {KdcInfrastructureProvider.class})
+public class ConnectorClasspathIsolationTest extends SqoopTestCase {
private static final String TEST_FROM_CONNECTOR_JAR_NAME = "test-from-connector.jar";
private static final String TEST_TO_CONNECTOR_JAR_NAME = "test-to-connector.jar";
@@ -82,6 +85,7 @@ public class ConnectorClasspathIsolationTest extends ConnectorTestCase {
};
private ClassLoader classLoader;
+ private SqoopMiniCluster sqoopMiniCluster;
public static class DerbySqoopMiniCluster extends JettySqoopMiniCluster {
@@ -106,13 +110,17 @@ public class ConnectorClasspathIsolationTest extends ConnectorTestCase
{
public void startSqoopMiniCluster(String extraClasspath) throws Exception {
// And use them for new Derby repo instance
- setCluster(new DerbySqoopMiniCluster(HdfsUtils.joinPathFragments(super.getSqoopMiniClusterTemporaryPath(),
getTestName()), hadoopCluster.getConfiguration(), extraClasspath));
+ sqoopMiniCluster = new DerbySqoopMiniCluster(HdfsUtils.joinPathFragments(super.getTemporaryPath(),
getTestName()), getHadoopConf(), extraClasspath);
+ KdcInfrastructureProvider kdcProvider = getInfrastructureProvider(KdcInfrastructureProvider.class);
+ if (kdcProvider != null) {
+ sqoopMiniCluster.setKdc(kdcProvider.getInstance());
+ }
// Start server
- getCluster().start();
+ sqoopMiniCluster.start();
// Initialize Sqoop Client API
- setClient(new SqoopClient(getServerUrl()));
+ initSqoopClient(sqoopMiniCluster.getServerUrl());
}
@BeforeMethod
@@ -175,8 +183,7 @@ public class ConnectorClasspathIsolationTest extends ConnectorTestCase
{
return driverConfig;
}
- @Override
- public void startSqoop() throws Exception {
- // Do nothing so that Sqoop isn't started before Suite.
+ private void stopSqoop() throws Exception {
+ sqoopMiniCluster.stop();
}
}
|