5
0
mirror of https://github.com/apache/sqoop.git synced 2025-05-08 12:01:09 +08:00

SQOOP-2720: Sqoop2: Allow the integration tests to be run against a real cluster

(Abraham Fine via Jarek Jarcec Cecho)
This commit is contained in:
Jarek Jarcec Cecho 2015-12-08 08:11:26 +01:00
parent 794adbcf3d
commit 6c4743de15
13 changed files with 94 additions and 25 deletions

View File

@ -508,6 +508,23 @@ public void deleteJob(long jobId) {
resourceRequests.deleteJob(String.valueOf(jobId));
}
public void deleteAllLinks(){
for (MJob job : getJobs()) {
deleteJob(job.getName());
}
}
public void deleteAllJobs(){
for (MLink link : getLinks()) {
deleteLink(link.getName());
}
}
public void deleteAllLinksAndJobs(){
deleteAllLinks();
deleteAllJobs();
}
/**
* Start job with given name.
*

51
pom.xml
View File

@ -230,6 +230,33 @@ limitations under the License.
</build>
</profile>
<profile>
<id>realcluster</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups>no-real-cluster</excludedGroups>
<reportNameSuffix>real-cluster-integration</reportNameSuffix>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<excludedGroups>no-real-cluster</excludedGroups>
<reportNameSuffix>real-cluster-integration</reportNameSuffix>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- Sign profile for releasing artifacts to Nexus repository -->
<profile>
<id>sign</id>
@ -260,10 +287,10 @@ limitations under the License.
<artifactId>sqoop-client</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.sqoop</groupId>
<artifactId>sqoop-shell</artifactId>
<version>${project.version}</version>
<dependency>
<groupId>org.apache.sqoop</groupId>
<artifactId>sqoop-shell</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.sqoop</groupId>
@ -500,10 +527,10 @@ limitations under the License.
<artifactId>commons-cli</artifactId>
<version>${commons-cli.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
@ -640,9 +667,9 @@ limitations under the License.
<version>${hadoop.2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>${avro.version}</version>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>${avro.version}</version>
</dependency>
<dependency>
<groupId>net.sourceforge.findbugs</groupId>
@ -660,7 +687,7 @@ limitations under the License.
<artifactId>jetty-servlet</artifactId>
<version>${jetty.version}</version>
</dependency>
</dependencies>
</dependencies>
</dependencyManagement>
<modules>

View File

@ -18,6 +18,9 @@
package org.apache.sqoop.test.minicluster;
import org.apache.hadoop.conf.Configuration;
import org.apache.sqoop.client.SqoopClient;
import org.apache.sqoop.model.MJob;
import org.apache.sqoop.model.MLink;
/**
*/
@ -27,11 +30,15 @@ public class RealSqoopCluster extends SqoopMiniCluster {
private String serverUrl;
private SqoopClient client;
public RealSqoopCluster(String temporaryPath) throws Exception {
super(temporaryPath);
serverUrl = System.getProperty(SERVER_URL_KEY);
client = new SqoopClient(serverUrl);
if(serverUrl == null) {
throw new RuntimeException("Missing URL for real Sqoop 2 server: " + SERVER_URL_KEY);
}
@ -44,16 +51,21 @@ public RealSqoopCluster(String temporaryPath, Configuration configuration) throw
@Override
public void start() throws Exception {
// Void operation
client.deleteAllLinksAndJobs();
}
@Override
public void stop() throws Exception {
// Void operation
client.deleteAllLinksAndJobs();
}
@Override
public String getServerUrl() {
return serverUrl;
}
@Override
public String getConfigurationPath() {
return "/etc/hadoop/conf/";
}
}

View File

@ -17,12 +17,9 @@
*/
package org.apache.sqoop.test.testcases;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
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;
@ -31,7 +28,9 @@
import org.apache.sqoop.test.hadoop.HadoopRunner;
import org.apache.sqoop.test.hadoop.HadoopRunnerFactory;
import org.apache.sqoop.test.minicluster.JettySqoopMiniCluster;
import org.apache.sqoop.test.minicluster.RealSqoopCluster;
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;
@ -39,6 +38,10 @@
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.
@ -82,7 +85,7 @@ abstract public class JettyTestCase implements ITest {
/**
* Jetty based Sqoop mini cluster
*/
private static JettySqoopMiniCluster cluster;
private static SqoopMiniCluster cluster;
/**
* Sqoop client API.
@ -97,8 +100,9 @@ public String getTestName() {
}
@BeforeMethod(alwaysRun = true)
public void setMethodName(Method method) throws Exception {
public void setupMehodNameAndOutputPath(Method method) throws Exception {
methodName = method.getName();
hdfsClient.delete(new Path(getMapreduceDirectory()), true);
}
@BeforeSuite(alwaysRun = true)
@ -154,8 +158,9 @@ protected void stopHadoop() throws Exception {
*
* @return New instance of test mini cluster
*/
public JettySqoopMiniCluster createSqoopMiniCluster() throws Exception {
return new JettySqoopMiniCluster(getSqoopMiniClusterTemporaryPath(), hadoopCluster.getConfiguration());
public SqoopMiniCluster createSqoopMiniCluster() throws Exception {
return SqoopMiniClusterFactory.getSqoopMiniCluster(System.getProperties(), JettySqoopMiniCluster.class,
getSqoopMiniClusterTemporaryPath(), hadoopCluster.getConfiguration());
}
/**

View File

@ -37,7 +37,7 @@
import java.lang.reflect.Method;
import java.util.List;
@Test(groups = "slow")
@Test(groups = {"slow", "no-real-cluster"})
public class FromRDBMSToKiteHiveTest extends HiveConnectorTestCase implements ITest {
private String testName;

View File

@ -23,7 +23,7 @@
import org.apache.sqoop.test.testcases.KafkaConnectorTestCase;
import org.testng.annotations.Test;
@Test(groups = "no-real-cluster")
public class FromHDFSToKafkaTest extends KafkaConnectorTestCase {
public static final String[] input = {

View File

@ -25,7 +25,7 @@
import org.apache.sqoop.test.testcases.KafkaConnectorTestCase;
import org.testng.annotations.Test;
@Test(groups = "no-real-cluster")
public class FromRDBMSToKafkaTest extends KafkaConnectorTestCase {
private static final String[] input = {

View File

@ -30,6 +30,7 @@
import java.util.HashMap;
import java.util.Map;
@Test(groups = "no-real-cluster")
public class BlacklistedConnectorTest extends ConnectorTestCase {
public static class DerbySqoopMiniCluster extends JettySqoopMiniCluster {
public DerbySqoopMiniCluster(String temporaryPath, Configuration configuration) throws Exception {

View File

@ -53,6 +53,7 @@
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
@Test(groups = "no-real-cluster")
public class ClasspathTest extends ConnectorTestCase {
private static final String TEST_CONNECTOR_JAR_NAME = "test-connector.jar";

View File

@ -41,6 +41,7 @@
* Job with id 3 has been disabled
* Job with id 1 has been run 5 times
*/
@Test(groups = "no-real-cluster")
public class Derby1_99_3UpgradeTest extends DerbyRepositoryUpgradeTest {
@Override

View File

@ -17,6 +17,8 @@
*/
package org.apache.sqoop.integration.repository.derby.upgrade;
import org.testng.annotations.Test;
import java.util.HashMap;
import java.util.Map;
@ -42,6 +44,7 @@
* Job with id 4 has been disabled
* Job with id 5 has been disabled
*/
@Test(groups = "no-real-cluster")
public class Derby1_99_4UpgradeTest extends DerbyRepositoryUpgradeTest {
@Override

View File

@ -51,6 +51,7 @@
* Job with id 4 has been disabled
* Job with id 5 has been disabled
*/
@Test(groups = "no-real-cluster")
public class Derby1_99_5UpgradeTest extends DerbyRepositoryUpgradeTest {
@Override

View File

@ -52,6 +52,7 @@
* Job with id 4 has been disabled
* Job with id 5 has been disabled
*/
@Test(groups = "no-real-cluster")
public class Derby1_99_6UpgradeTest extends DerbyRepositoryUpgradeTest {
@Override