You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by hs...@apache.org on 2013/10/24 08:04:51 UTC

git commit: SQOOP-1153. Sqoop2: Integration: Add test for enabling and disabling connections and objects

Updated Branches:
  refs/heads/sqoop2 ebe62d366 -> ea0f16522


SQOOP-1153. Sqoop2: Integration: Add test for enabling and disabling connections and objects

(Jarek Jarcec Cecho via Hari Shreedharan)


Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/ea0f1652
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/ea0f1652
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/ea0f1652

Branch: refs/heads/sqoop2
Commit: ea0f16522e277bb60bf6fdb0bf7dc9963755969c
Parents: ebe62d3
Author: Hari Shreedharan <hs...@apache.org>
Authored: Wed Oct 23 23:04:00 2013 -0700
Committer: Hari Shreedharan <hs...@apache.org>
Committed: Wed Oct 23 23:04:00 2013 -0700

----------------------------------------------------------------------
 .../SubmissionWithDisabledModelObjectsTest.java | 113 +++++++++++++++++++
 1 file changed, 113 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/ea0f1652/test/src/test/java/org/apache/sqoop/integration/server/SubmissionWithDisabledModelObjectsTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/server/SubmissionWithDisabledModelObjectsTest.java b/test/src/test/java/org/apache/sqoop/integration/server/SubmissionWithDisabledModelObjectsTest.java
new file mode 100644
index 0000000..84d1a26
--- /dev/null
+++ b/test/src/test/java/org/apache/sqoop/integration/server/SubmissionWithDisabledModelObjectsTest.java
@@ -0,0 +1,113 @@
+/**
+ * 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.integration.server;
+
+import org.apache.sqoop.client.ClientError;
+import org.apache.sqoop.common.SqoopException;
+import org.apache.sqoop.framework.FrameworkError;
+import org.apache.sqoop.framework.configuration.OutputFormat;
+import org.apache.sqoop.framework.configuration.StorageType;
+import org.apache.sqoop.model.MConnection;
+import org.apache.sqoop.model.MFormList;
+import org.apache.sqoop.model.MJob;
+import org.apache.sqoop.test.testcases.ConnectorTestCase;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * Ensure that server will reject starting job when either job itself
+ * or corresponding connection is disabled.
+ */
+@RunWith(Parameterized.class)
+public class SubmissionWithDisabledModelObjectsTest extends ConnectorTestCase {
+
+  @Parameterized.Parameters(name = "con({0}) job({1})")
+  public static Iterable<Object[]> data() {
+    return Arrays.asList(new Object[][] {
+      { true, false },
+      { false, true },
+      { false, false },
+    });
+  }
+
+  private boolean enabledConnection;
+  private boolean enabledJob;
+
+  public SubmissionWithDisabledModelObjectsTest(boolean enabledConnection, boolean enabledJob) {
+    this.enabledConnection = enabledConnection;
+    this.enabledJob = enabledJob;
+  }
+
+  @Test
+  public void testWithDisabledObjects() throws Exception {
+    createAndLoadTableCities();
+
+    // Connection creation
+    MConnection connection = getClient().newConnection("generic-jdbc-connector");
+    fillConnectionForm(connection);
+    createConnection(connection);
+
+    // Job creation
+    MJob job = getClient().newJob(connection.getPersistenceId(), MJob.Type.IMPORT);
+
+    // Connector values
+    MFormList forms = job.getConnectorPart();
+    forms.getStringInput("table.tableName").setValue(provider.escapeTableName(getTableName()));
+    forms.getStringInput("table.partitionColumn").setValue(provider.escapeColumnName("id"));
+    // Framework values
+    fillOutputForm(job, StorageType.HDFS, OutputFormat.TEXT_FILE);
+    createJob(job);
+
+    // Disable model entities as per parametrized run
+    getClient().enableConnection(connection.getPersistenceId(), enabledConnection);
+    getClient().enableJob(job.getPersistenceId(), enabledJob);
+
+    // Try to run the job and verify that the it was not executed
+    try {
+      runJob(job);
+      fail("Expected exception as the model classes are disabled.");
+    } catch(SqoopException ex) {
+      // Top level exception should be CLIENT_0001
+      assertEquals(ClientError.CLIENT_0001, ex.getErrorCode());
+
+      // We can directly verify the ErrorCode from SqoopException as client side
+      // is not rebuilding SqoopExceptions per missing ErrorCodes. E.g. the cause
+      // will be generic Throwable and not SqoopException instance.
+      Throwable cause = ex.getCause();
+      assertNotNull(cause);
+
+      if(!enabledJob) {
+        assertTrue(cause.getMessage().startsWith(FrameworkError.FRAMEWORK_0009.toString()));
+      } else if(!enabledConnection) {
+        assertTrue(cause.getMessage().startsWith(FrameworkError.FRAMEWORK_0010.toString()));
+      } else {
+        fail("Unexpected expception retrieved from server " + cause);
+      }
+    } finally {
+      dropTable();
+    }
+  }
+}