You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ab...@apache.org on 2014/08/12 00:01:10 UTC

[07/19] SQOOP-1379: Sqoop2: From/To: Disable tests

http://git-wip-us.apache.org/repos/asf/sqoop/blob/12f42302/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java b/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java
index d557b87..31df04c 100644
--- a/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java
+++ b/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java
@@ -38,7 +38,7 @@ import org.apache.sqoop.model.MForm;
 import org.apache.sqoop.model.MFramework;
 import org.apache.sqoop.model.MJob;
 import org.apache.sqoop.model.MJobForms;
-import org.apache.sqoop.model.MJob.Type;
+//import org.apache.sqoop.model.MJob.Type;
 import org.apache.sqoop.validation.Status;
 import org.apache.sqoop.validation.Validation;
 import org.apache.sqoop.validation.Validator;
@@ -52,979 +52,979 @@ import static org.mockito.Mockito.*;
 
 public class TestJdbcRepository {
 
-  private JdbcRepository repo;
-  private JdbcRepositoryTransaction tx;
-  private ConnectorManager connectorMgr;
-  private FrameworkManager frameworkMgr;
-  private JdbcRepositoryHandler repoHandler;
-  private Validator validator;
-  private MetadataUpgrader upgrader;
-
-  private Validation valid;
-  private Validation invalid;
-
-  @Before
-  public void setUp() throws Exception {
-    tx = mock(JdbcRepositoryTransaction.class);
-    connectorMgr = mock(ConnectorManager.class);
-    frameworkMgr = mock(FrameworkManager.class);
-    repoHandler = mock(JdbcRepositoryHandler.class);
-    validator = mock(Validator.class);
-    upgrader = mock(MetadataUpgrader.class);
-    repo = spy(new JdbcRepository(repoHandler, null));
-
-    // setup transaction and connector manager
-    doReturn(tx).when(repo).getTransaction();
-    ConnectorManager.setInstance(connectorMgr);
-    FrameworkManager.setInstance(frameworkMgr);
-
-    valid = mock(Validation.class);
-    when(valid.getStatus()).thenReturn(Status.ACCEPTABLE);
-    invalid = mock(Validation.class);
-    when(invalid.getStatus()).thenReturn(Status.UNACCEPTABLE);
-
-    doNothing().when(upgrader).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
-    doNothing().when(upgrader).upgrade(any(MJobForms.class), any(MJobForms.class));
-  }
-
-  /**
-   * Test the procedure when the connector auto upgrade option is enabled
-   */
-  @Test
-  public void testConnectorEnableAutoUpgrade() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1, "1.0");
-
-    when(repoHandler.findConnector(anyString(), any(Connection.class))).thenReturn(oldConnector);
-
-    // make the upgradeConnector to throw an exception to prove that it has been called
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "upgradeConnector() has been called.");
-    doThrow(exception).when(connectorMgr).getConnector(anyString());
-
-    try {
-      repo.registerConnector(newConnector, true);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnector(anyString(), any(Connection.class));
-      verify(connectorMgr, times(1)).getConnector(anyString());
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the procedure when  the connector auto upgrade option is disabled
-   */
-  @Test
-  public void testConnectorDisableAutoUpgrade() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    when(repoHandler.findConnector(anyString(), any(Connection.class))).thenReturn(oldConnector);
-
-    try {
-      repo.registerConnector(newConnector, false);
-    } catch (SqoopException ex) {
-      verify(repoHandler, times(1)).findConnector(anyString(), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      assertEquals(ex.getErrorCode(), RepositoryError.JDBCREPO_0026);
-      return ;
-    }
-
-    fail("Should throw out an exception with code: " + RepositoryError.JDBCREPO_0026);
-  }
-
-  /**
-   * Test the procedure when the framework auto upgrade option is enabled
-   */
-  @Test
-  public void testFrameworkEnableAutoUpgrade() {
-    MFramework newFramework = framework();
-    MFramework oldFramework = anotherFramework();
-
-    when(repoHandler.findFramework(any(Connection.class))).thenReturn(oldFramework);
-
-    // make the upgradeFramework to throw an exception to prove that it has been called
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "upgradeFramework() has been called.");
-    doThrow(exception).when(repoHandler).findConnections(any(Connection.class));
-
-    try {
-      repo.registerFramework(newFramework, true);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findFramework(any(Connection.class));
-      verify(repoHandler, times(1)).findConnections(any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the procedure when the framework auto upgrade option is disabled
-   */
-  @Test
-  public void testFrameworkDisableAutoUpgrade() {
-    MFramework newFramework = framework();
-    MFramework oldFramework = anotherFramework();
-
-    when(repoHandler.findFramework(any(Connection.class))).thenReturn(oldFramework);
-
-    try {
-      repo.registerFramework(newFramework, false);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getErrorCode(), RepositoryError.JDBCREPO_0026);
-      verify(repoHandler, times(1)).findFramework(any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with code: " + RepositoryError.JDBCREPO_0026);
-  }
-
-  /**
-   * Test the connector upgrade procedure, when all the connections and
-   * jobs using the old connector are still valid for the new connector
-   */
-  @Test
-  public void testConnectorUpgradeWithValidConnectionsAndJobs() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    // prepare the sqoop connector
-    SqoopConnector sqconnector = mock(SqoopConnector.class);
-    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
-    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
-    when(sqconnector.getValidator()).thenReturn(validator);
-    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
-    when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
-    when(sqconnector.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
-    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
-
-    // prepare the connections and jobs
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-
-    // mock necessary methods for upgradeConnector() procedure
-    doReturn(connectionList).when(repo).findConnectionsForConnector(anyLong());
-    doReturn(jobList).when(repo).findJobsForConnector(anyLong());
-    doNothing().when(repo).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
-    doNothing().when(repo).updateJob(any(MJob.class), any(RepositoryTransaction.class));
-    doNothing().when(repo).updateConnector(any(MConnector.class), any(RepositoryTransaction.class));
-
-    repo.upgradeConnector(oldConnector, newConnector);
-
-    InOrder repoOrder = inOrder(repo);
-    InOrder txOrder = inOrder(tx);
-    InOrder upgraderOrder = inOrder(upgrader);
-    InOrder validatorOrder = inOrder(validator);
-
-    repoOrder.verify(repo, times(1)).findConnectionsForConnector(anyLong());
-    repoOrder.verify(repo, times(1)).findJobsForConnector(anyLong());
-    repoOrder.verify(repo, times(1)).getTransaction();
-    repoOrder.verify(repo, times(1)).deleteJobInputs(1, tx);
-    repoOrder.verify(repo, times(1)).deleteJobInputs(2, tx);
-    repoOrder.verify(repo, times(1)).deleteConnectionInputs(1, tx);
-    repoOrder.verify(repo, times(1)).deleteConnectionInputs(2, tx);
-    repoOrder.verify(repo, times(1)).updateConnector(any(MConnector.class), any(RepositoryTransaction.class));
-    repoOrder.verify(repo, times(2)).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
-    repoOrder.verify(repo, times(2)).updateJob(any(MJob.class), any(RepositoryTransaction.class));
-    repoOrder.verifyNoMoreInteractions();
-    txOrder.verify(tx, times(1)).begin();
-    txOrder.verify(tx, times(1)).commit();
-    txOrder.verify(tx, times(1)).close();
-    txOrder.verifyNoMoreInteractions();
-    upgraderOrder.verify(upgrader, times(2)).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
-    upgraderOrder.verify(upgrader, times(2)).upgrade(any(MJobForms.class), any(MJobForms.class));
-    upgraderOrder.verifyNoMoreInteractions();
-    validatorOrder.verify(validator, times(2)).validateConnection(anyObject());
-    validatorOrder.verify(validator, times(2)).validateJob(any(MJob.Type.class), anyObject());
-    validatorOrder.verifyNoMoreInteractions();
-  }
-
-  /**
-   * Test the connector upgrade procedure, when all the connections and
-   * jobs using the old connector are invalid for the new connector
-   */
-  @Test
-  public void testConnectorUpgradeWithInvalidConnectionsAndJobs() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    SqoopConnector sqconnector = mock(SqoopConnector.class);
-    when(validator.validateConnection(any(MConnection.class))).thenReturn(invalid);
-    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(invalid);
-    when(sqconnector.getValidator()).thenReturn(validator);
-    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
-    when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
-    when(sqconnector.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
-    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-
-    doReturn(connectionList).when(repo).findConnectionsForConnector(anyLong());
-    doReturn(jobList).when(repo).findJobsForConnector(anyLong());
-    doNothing().when(repo).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
-    doNothing().when(repo).updateJob(any(MJob.class), any(RepositoryTransaction.class));
-    doNothing().when(repo).updateConnector(any(MConnector.class), any(RepositoryTransaction.class));
-
-    try {
-      repo.upgradeConnector(oldConnector, newConnector);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getErrorCode(), RepositoryError.JDBCREPO_0027);
-
-      InOrder repoOrder = inOrder(repo);
-      InOrder txOrder = inOrder(tx);
-      InOrder upgraderOrder = inOrder(upgrader);
-      InOrder validatorOrder = inOrder(validator);
-
-      repoOrder.verify(repo, times(1)).findConnectionsForConnector(anyLong());
-      repoOrder.verify(repo, times(1)).findJobsForConnector(anyLong());
-      repoOrder.verify(repo, times(1)).getTransaction();
-      repoOrder.verify(repo, times(1)).deleteJobInputs(1, tx);
-      repoOrder.verify(repo, times(1)).deleteJobInputs(2, tx);
-      repoOrder.verify(repo, times(1)).deleteConnectionInputs(1, tx);
-      repoOrder.verify(repo, times(1)).deleteConnectionInputs(2, tx);
-      repoOrder.verify(repo, times(1)).updateConnector(any(MConnector.class), any(RepositoryTransaction.class));
-      repoOrder.verifyNoMoreInteractions();
-      txOrder.verify(tx, times(1)).begin();
-      txOrder.verify(tx, times(1)).rollback();
-      txOrder.verify(tx, times(1)).close();
-      txOrder.verifyNoMoreInteractions();
-      upgraderOrder.verify(upgrader, times(2)).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
-      upgraderOrder.verify(upgrader, times(2)).upgrade(any(MJobForms.class), any(MJobForms.class));
-      upgraderOrder.verifyNoMoreInteractions();
-      validatorOrder.verify(validator, times(2)).validateConnection(anyObject());
-      validatorOrder.verify(validator, times(2)).validateJob(any(MJob.Type.class), anyObject());
-      validatorOrder.verifyNoMoreInteractions();
-      return ;
-    }
-
-    fail("Should throw out an exception with code: " + RepositoryError.JDBCREPO_0027);
-  }
-
-  /**
-   * Test the framework upgrade procedure, when all the connections and
-   * jobs using the old connector are still valid for the new connector
-   */
-  @Test
-  public void testFrameworkUpgradeWithValidConnectionsAndJobs() {
-    MFramework newFramework = framework();
-
-    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
-    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
-    when(frameworkMgr.getValidator()).thenReturn(validator);
-    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
-    when(frameworkMgr.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
-    when(frameworkMgr.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-
-    doReturn(connectionList).when(repo).findConnections();
-    doReturn(jobList).when(repo).findJobs();
-    doNothing().when(repo).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
-    doNothing().when(repo).updateJob(any(MJob.class), any(RepositoryTransaction.class));
-    doNothing().when(repo).updateFramework(any(MFramework.class), any(RepositoryTransaction.class));
-
-    repo.upgradeFramework(newFramework);
-
-    InOrder repoOrder = inOrder(repo);
-    InOrder txOrder = inOrder(tx);
-    InOrder upgraderOrder = inOrder(upgrader);
-    InOrder validatorOrder = inOrder(validator);
-
-    repoOrder.verify(repo, times(1)).findConnections();
-    repoOrder.verify(repo, times(1)).findJobs();
-    repoOrder.verify(repo, times(1)).getTransaction();
-    repoOrder.verify(repo, times(1)).deleteJobInputs(1, tx);
-    repoOrder.verify(repo, times(1)).deleteJobInputs(2, tx);
-    repoOrder.verify(repo, times(1)).deleteConnectionInputs(1, tx);
-    repoOrder.verify(repo, times(1)).deleteConnectionInputs(2, tx);
-    repoOrder.verify(repo, times(1)).updateFramework(any(MFramework.class), any(RepositoryTransaction.class));
-    repoOrder.verify(repo, times(2)).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
-    repoOrder.verify(repo, times(2)).updateJob(any(MJob.class), any(RepositoryTransaction.class));
-    repoOrder.verifyNoMoreInteractions();
-    txOrder.verify(tx, times(1)).begin();
-    txOrder.verify(tx, times(1)).commit();
-    txOrder.verify(tx, times(1)).close();
-    txOrder.verifyNoMoreInteractions();
-    upgraderOrder.verify(upgrader, times(2)).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
-    upgraderOrder.verify(upgrader, times(2)).upgrade(any(MJobForms.class), any(MJobForms.class));
-    upgraderOrder.verifyNoMoreInteractions();
-    validatorOrder.verify(validator, times(2)).validateConnection(anyObject());
-    validatorOrder.verify(validator, times(2)).validateJob(any(MJob.Type.class), anyObject());
-    validatorOrder.verifyNoMoreInteractions();
-  }
-
-  /**
-   * Test the framework upgrade procedure, when all the connections and
-   * jobs using the old connector are invalid for the new connector
-   */
-  @Test
-  public void testFrameworkUpgradeWithInvalidConnectionsAndJobs() {
-    MFramework newFramework = framework();
-
-    when(validator.validateConnection(any(MConnection.class))).thenReturn(invalid);
-    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(invalid);
-    when(frameworkMgr.getValidator()).thenReturn(validator);
-    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
-    when(frameworkMgr.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
-    when(frameworkMgr.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-
-    doReturn(connectionList).when(repo).findConnections();
-    doReturn(jobList).when(repo).findJobs();
-    doNothing().when(repo).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
-    doNothing().when(repo).updateJob(any(MJob.class), any(RepositoryTransaction.class));
-    doNothing().when(repo).updateFramework(any(MFramework.class), any(RepositoryTransaction.class));
-
-    try {
-      repo.upgradeFramework(newFramework);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getErrorCode(), RepositoryError.JDBCREPO_0027);
-
-      InOrder repoOrder = inOrder(repo);
-      InOrder txOrder = inOrder(tx);
-      InOrder upgraderOrder = inOrder(upgrader);
-      InOrder validatorOrder = inOrder(validator);
-
-      repoOrder.verify(repo, times(1)).findConnections();
-      repoOrder.verify(repo, times(1)).findJobs();
-      repoOrder.verify(repo, times(1)).getTransaction();
-      repoOrder.verify(repo, times(1)).deleteJobInputs(1, tx);
-      repoOrder.verify(repo, times(1)).deleteJobInputs(2, tx);
-      repoOrder.verify(repo, times(1)).deleteConnectionInputs(1, tx);
-      repoOrder.verify(repo, times(1)).deleteConnectionInputs(2, tx);
-      repoOrder.verify(repo, times(1)).updateFramework(any(MFramework.class), any(RepositoryTransaction.class));
-      repoOrder.verifyNoMoreInteractions();
-      txOrder.verify(tx, times(1)).begin();
-      txOrder.verify(tx, times(1)).rollback();
-      txOrder.verify(tx, times(1)).close();
-      txOrder.verifyNoMoreInteractions();
-      upgraderOrder.verify(upgrader, times(2)).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
-      upgraderOrder.verify(upgrader, times(2)).upgrade(any(MJobForms.class), any(MJobForms.class));
-      upgraderOrder.verifyNoMoreInteractions();
-      validatorOrder.verify(validator, times(2)).validateConnection(anyObject());
-      validatorOrder.verify(validator, times(2)).validateJob(any(MJob.Type.class), anyObject());
-      validatorOrder.verifyNoMoreInteractions();
-      return ;
-    }
-
-    fail("Should throw out an exception with code: " + RepositoryError.JDBCREPO_0027);
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * find connections for a given connector
-   */
-  @Test
-  public void testConnectorUpgradeHandlerFindConnectionsForConnectorError() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    SqoopConnector sqconnector = mock(SqoopConnector.class);
-    when(sqconnector.getValidator()).thenReturn(validator);
-    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
-    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "find connections for connector error.");
-    doThrow(exception).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
-
-    try {
-      repo.upgradeConnector(oldConnector, newConnector);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * find jobs for a given connector
-   */
-  @Test
-  public void testConnectorUpgradeHandlerFindJobsForConnectorError() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    SqoopConnector sqconnector = mock(SqoopConnector.class);
-    when(sqconnector.getValidator()).thenReturn(validator);
-    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
-    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "find jobs for connector error.");
-    doThrow(exception).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
-
-    try {
-      repo.upgradeConnector(oldConnector, newConnector);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * delete job inputs for a given connector
-   */
-  @Test
-  public void testConnectorUpgradeHandlerDeleteJobInputsError() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    SqoopConnector sqconnector = mock(SqoopConnector.class);
-    when(sqconnector.getValidator()).thenReturn(validator);
-    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
-    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "delete job inputs for connector error.");
-    doThrow(exception).when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-
-    try {
-      repo.upgradeConnector(oldConnector, newConnector);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).deleteJobInputs(anyLong(), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * delete connection inputs for a given connector
-   */
-  @Test
-  public void testConnectorUpgradeHandlerDeleteConnectionInputsError() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    SqoopConnector sqconnector = mock(SqoopConnector.class);
-    when(sqconnector.getValidator()).thenReturn(validator);
-    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
-    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "delete connection inputs for connector error.");
-    doThrow(exception).when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
-
-    try {
-      repo.upgradeConnector(oldConnector, newConnector);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).deleteConnectionInputs(anyLong(), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * update the connector metadata
-   */
-  @Test
-  public void testConnectorUpgradeHandlerUpdateConnectorError() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    SqoopConnector sqconnector = mock(SqoopConnector.class);
-    when(sqconnector.getValidator()).thenReturn(validator);
-    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
-    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "update connector error.");
-    doThrow(exception).when(repoHandler).updateConnector(any(MConnector.class), any(Connection.class));
-
-    try {
-      repo.upgradeConnector(oldConnector, newConnector);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteConnectionInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateConnector(any(MConnector.class), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * update the connection metadata
-   */
-  @Test
-  public void testConnectorUpgradeHandlerUpdateConnectionError() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    SqoopConnector sqconnector = mock(SqoopConnector.class);
-    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
-    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
-    when(sqconnector.getValidator()).thenReturn(validator);
-    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
-    when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
-    when(sqconnector.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
-    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).updateConnector(any(MConnector.class), any(Connection.class));
-    doReturn(true).when(repoHandler).existsConnection(anyLong(), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "update connection error.");
-    doThrow(exception).when(repoHandler).updateConnection(any(MConnection.class), any(Connection.class));
-
-    try {
-      repo.upgradeConnector(oldConnector, newConnector);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteConnectionInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateConnector(any(MConnector.class), any(Connection.class));
-      verify(repoHandler, times(1)).existsConnection(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateConnection(any(MConnection.class), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * update the job metadata
-   */
-  @Test
-  public void testConnectorUpgradeHandlerUpdateJobError() {
-    MConnector newConnector = connector(1, "1.1");
-    MConnector oldConnector = connector(1);
-
-    SqoopConnector sqconnector = mock(SqoopConnector.class);
-    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
-    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
-    when(sqconnector.getValidator()).thenReturn(validator);
-    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
-    when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
-    when(sqconnector.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
-    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).updateConnector(any(MConnector.class), any(Connection.class));
-    doNothing().when(repoHandler).updateConnection(any(MConnection.class), any(Connection.class));
-    doReturn(true).when(repoHandler).existsConnection(anyLong(), any(Connection.class));
-    doReturn(true).when(repoHandler).existsJob(anyLong(), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "update job error.");
-    doThrow(exception).when(repoHandler).updateJob(any(MJob.class), any(Connection.class));
-
-    try {
-      repo.upgradeConnector(oldConnector, newConnector);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteConnectionInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateConnector(any(MConnector.class), any(Connection.class));
-      verify(repoHandler, times(2)).existsConnection(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).updateConnection(any(MConnection.class), any(Connection.class));
-      verify(repoHandler, times(1)).existsJob(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateJob(any(MJob.class), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * find connections for framework
-   */
-  @Test
-  public void testFrameworkUpgradeHandlerFindConnectionsError() {
-    MFramework newFramework = framework();
-
-    when(frameworkMgr.getValidator()).thenReturn(validator);
-    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "find connections error.");
-    doThrow(exception).when(repoHandler).findConnections(any(Connection.class));
-
-    try {
-      repo.upgradeFramework(newFramework);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnections(any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * find jobs for framework
-   */
-  @Test
-  public void testFrameworkUpgradeHandlerFindJobsError() {
-    MFramework newFramework = framework();
-
-    when(frameworkMgr.getValidator()).thenReturn(validator);
-    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "find jobs error.");
-    doThrow(exception).when(repoHandler).findJobs(any(Connection.class));
-
-    try {
-      repo.upgradeFramework(newFramework);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnections(any(Connection.class));
-      verify(repoHandler, times(1)).findJobs(any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * delete job inputs for framework upgrade
-   */
-  @Test
-  public void testFrameworkUpgradeHandlerDeleteJobInputsError() {
-    MFramework newFramework = framework();
-
-    when(frameworkMgr.getValidator()).thenReturn(validator);
-    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobs(any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "delete job inputs error.");
-    doThrow(exception).when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-
-    try {
-      repo.upgradeFramework(newFramework);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnections(any(Connection.class));
-      verify(repoHandler, times(1)).findJobs(any(Connection.class));
-      verify(repoHandler, times(1)).deleteJobInputs(anyLong(), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * delete connection inputs for framework upgrade
-   */
-  @Test
-  public void testFrameworkUpgradeHandlerDeleteConnectionInputsError() {
-    MFramework newFramework = framework();
-
-    when(frameworkMgr.getValidator()).thenReturn(validator);
-    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobs(any(Connection.class));
-    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "delete connection inputs error.");
-    doThrow(exception).when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
-
-    try {
-      repo.upgradeFramework(newFramework);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnections(any(Connection.class));
-      verify(repoHandler, times(1)).findJobs(any(Connection.class));
-      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).deleteConnectionInputs(anyLong(), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * update the framework metadata
-   */
-  @Test
-  public void testFrameworkUpgradeHandlerUpdateFrameworkError() {
-    MFramework newFramework = framework();
-
-    when(frameworkMgr.getValidator()).thenReturn(validator);
-    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobs(any(Connection.class));
-    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "update framework metadata error.");
-    doThrow(exception).when(repoHandler).updateFramework(any(MFramework.class), any(Connection.class));
-
-    try {
-      repo.upgradeFramework(newFramework);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnections(any(Connection.class));
-      verify(repoHandler, times(1)).findJobs(any(Connection.class));
-      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteConnectionInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateFramework(any(MFramework.class), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * update the connection metadata
-   */
-  @Test
-  public void testFrameworkUpgradeHandlerUpdateConnectionError() {
-    MFramework newFramework = framework();
-
-    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
-    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
-    when(frameworkMgr.getValidator()).thenReturn(validator);
-    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
-    when(frameworkMgr.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
-    when(frameworkMgr.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobs(any(Connection.class));
-    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).updateFramework(any(MFramework.class), any(Connection.class));
-    doReturn(true).when(repoHandler).existsConnection(anyLong(), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "update connection error.");
-    doThrow(exception).when(repoHandler).updateConnection(any(MConnection.class), any(Connection.class));
-
-    try {
-      repo.upgradeFramework(newFramework);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnections(any(Connection.class));
-      verify(repoHandler, times(1)).findJobs(any(Connection.class));
-      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteConnectionInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateFramework(any(MFramework.class), any(Connection.class));
-      verify(repoHandler, times(1)).existsConnection(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateConnection(any(MConnection.class), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  /**
-   * Test the exception handling procedure when the database handler fails to
-   * update the job metadata
-   */
-  @Test
-  public void testFrameworkUpgradeHandlerUpdateJobError() {
-    MFramework newFramework = framework();
-
-    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
-    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
-    when(frameworkMgr.getValidator()).thenReturn(validator);
-    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
-    when(frameworkMgr.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
-    when(frameworkMgr.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
-
-    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
-    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
-    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
-    doReturn(jobList).when(repoHandler).findJobs(any(Connection.class));
-    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).updateFramework(any(MFramework.class), any(Connection.class));
-    doReturn(true).when(repoHandler).existsConnection(anyLong(), any(Connection.class));
-    doReturn(true).when(repoHandler).existsJob(anyLong(), any(Connection.class));
-    doNothing().when(repoHandler).updateConnection(any(MConnection.class), any(Connection.class));
-
-    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
-        "update job error.");
-    doThrow(exception).when(repoHandler).updateJob(any(MJob.class), any(Connection.class));
-
-    try {
-      repo.upgradeFramework(newFramework);
-    } catch (SqoopException ex) {
-      assertEquals(ex.getMessage(), exception.getMessage());
-      verify(repoHandler, times(1)).findConnections(any(Connection.class));
-      verify(repoHandler, times(1)).findJobs(any(Connection.class));
-      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).deleteConnectionInputs(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateFramework(any(MFramework.class), any(Connection.class));
-      verify(repoHandler, times(2)).existsConnection(anyLong(), any(Connection.class));
-      verify(repoHandler, times(2)).updateConnection(any(MConnection.class), any(Connection.class));
-      verify(repoHandler, times(1)).existsJob(anyLong(), any(Connection.class));
-      verify(repoHandler, times(1)).updateJob(any(MJob.class), any(Connection.class));
-      verifyNoMoreInteractions(repoHandler);
-      return ;
-    }
-
-    fail("Should throw out an exception with message: " + exception.getMessage());
-  }
-
-  private MConnector connector(long id, String version) {
-    List<MJobForms> jobForms = new LinkedList<MJobForms>();
-    jobForms.add(new MJobForms(MJob.Type.IMPORT, FormUtils.toForms(ImportJobConfiguration.class)));
-
-    MConnector connector = new MConnector("A" + id, "A" + id, version + id,
-        new MConnectionForms(new LinkedList<MForm>()), jobForms);
-    connector.setPersistenceId(id);
-    return connector;
-  }
-
-  private MConnector connector(long id) {
-    return connector(id, "1.0");
-  }
-
-  private MFramework framework() {
-    List<MJobForms> jobForms = new LinkedList<MJobForms>();
-    jobForms.add(new MJobForms(MJob.Type.IMPORT, FormUtils.toForms(ImportJobConfiguration.class)));
-
-    MFramework framework = new MFramework(new MConnectionForms(new LinkedList<MForm>()),
-      jobForms, FrameworkManager.CURRENT_FRAMEWORK_VERSION);
-    framework.setPersistenceId(1);
-    return framework;
-  }
-
-  private MFramework anotherFramework() {
-    MFramework framework = new MFramework(null, new LinkedList<MJobForms>(),
-      FrameworkManager.CURRENT_FRAMEWORK_VERSION);
-    framework.setPersistenceId(1);
-    return framework;
-  }
-
-  private MConnection connection(long id, long cid) {
-    MConnection connection = new MConnection(cid, new MConnectionForms(new LinkedList<MForm>()),
-        new MConnectionForms(new LinkedList<MForm>()));
-    connection.setPersistenceId(id);
-    return connection;
-  }
-
-  private MJob job(long id, long cid, long xid) {
-    MJob job = new MJob(cid, xid, Type.IMPORT, new MJobForms(Type.IMPORT, new LinkedList<MForm>()),
-        new MJobForms(Type.IMPORT, new LinkedList<MForm>()));
-    job.setPersistenceId(id);
-    return job;
-  }
-
-  private List<MConnection> connections(MConnection ... cs) {
-    List<MConnection> connections = new ArrayList<MConnection>();
-    Collections.addAll(connections, cs);
-    return connections;
-  }
-
-  private List<MJob> jobs(MJob ... js) {
-    List<MJob> jobs = new ArrayList<MJob>();
-    Collections.addAll(jobs, js);
-    return jobs;
-  }
-
-  @ConfigurationClass
-  public static class EmptyConfigurationClass {
-  }
+//  private JdbcRepository repo;
+//  private JdbcRepositoryTransaction tx;
+//  private ConnectorManager connectorMgr;
+//  private FrameworkManager frameworkMgr;
+//  private JdbcRepositoryHandler repoHandler;
+//  private Validator validator;
+//  private MetadataUpgrader upgrader;
+//
+//  private Validation valid;
+//  private Validation invalid;
+//
+//  @Before
+//  public void setUp() throws Exception {
+//    tx = mock(JdbcRepositoryTransaction.class);
+//    connectorMgr = mock(ConnectorManager.class);
+//    frameworkMgr = mock(FrameworkManager.class);
+//    repoHandler = mock(JdbcRepositoryHandler.class);
+//    validator = mock(Validator.class);
+//    upgrader = mock(MetadataUpgrader.class);
+//    repo = spy(new JdbcRepository(repoHandler, null));
+//
+//    // setup transaction and connector manager
+//    doReturn(tx).when(repo).getTransaction();
+//    ConnectorManager.setInstance(connectorMgr);
+//    FrameworkManager.setInstance(frameworkMgr);
+//
+//    valid = mock(Validation.class);
+//    when(valid.getStatus()).thenReturn(Status.ACCEPTABLE);
+//    invalid = mock(Validation.class);
+//    when(invalid.getStatus()).thenReturn(Status.UNACCEPTABLE);
+//
+//    doNothing().when(upgrader).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
+//    doNothing().when(upgrader).upgrade(any(MJobForms.class), any(MJobForms.class));
+//  }
+//
+//  /**
+//   * Test the procedure when the connector auto upgrade option is enabled
+//   */
+//  @Test
+//  public void testConnectorEnableAutoUpgrade() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1, "1.0");
+//
+//    when(repoHandler.findConnector(anyString(), any(Connection.class))).thenReturn(oldConnector);
+//
+//    // make the upgradeConnector to throw an exception to prove that it has been called
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "upgradeConnector() has been called.");
+//    doThrow(exception).when(connectorMgr).getConnector(anyString());
+//
+//    try {
+//      repo.registerConnector(newConnector, true);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnector(anyString(), any(Connection.class));
+//      verify(connectorMgr, times(1)).getConnector(anyString());
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the procedure when  the connector auto upgrade option is disabled
+//   */
+//  @Test
+//  public void testConnectorDisableAutoUpgrade() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    when(repoHandler.findConnector(anyString(), any(Connection.class))).thenReturn(oldConnector);
+//
+//    try {
+//      repo.registerConnector(newConnector, false);
+//    } catch (SqoopException ex) {
+//      verify(repoHandler, times(1)).findConnector(anyString(), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      assertEquals(ex.getErrorCode(), RepositoryError.JDBCREPO_0026);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with code: " + RepositoryError.JDBCREPO_0026);
+//  }
+//
+//  /**
+//   * Test the procedure when the framework auto upgrade option is enabled
+//   */
+//  @Test
+//  public void testFrameworkEnableAutoUpgrade() {
+//    MFramework newFramework = framework();
+//    MFramework oldFramework = anotherFramework();
+//
+//    when(repoHandler.findFramework(any(Connection.class))).thenReturn(oldFramework);
+//
+//    // make the upgradeFramework to throw an exception to prove that it has been called
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "upgradeFramework() has been called.");
+//    doThrow(exception).when(repoHandler).findConnections(any(Connection.class));
+//
+//    try {
+//      repo.registerFramework(newFramework, true);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findFramework(any(Connection.class));
+//      verify(repoHandler, times(1)).findConnections(any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the procedure when the framework auto upgrade option is disabled
+//   */
+//  @Test
+//  public void testFrameworkDisableAutoUpgrade() {
+//    MFramework newFramework = framework();
+//    MFramework oldFramework = anotherFramework();
+//
+//    when(repoHandler.findFramework(any(Connection.class))).thenReturn(oldFramework);
+//
+//    try {
+//      repo.registerFramework(newFramework, false);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getErrorCode(), RepositoryError.JDBCREPO_0026);
+//      verify(repoHandler, times(1)).findFramework(any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with code: " + RepositoryError.JDBCREPO_0026);
+//  }
+//
+//  /**
+//   * Test the connector upgrade procedure, when all the connections and
+//   * jobs using the old connector are still valid for the new connector
+//   */
+//  @Test
+//  public void testConnectorUpgradeWithValidConnectionsAndJobs() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    // prepare the sqoop connector
+//    SqoopConnector sqconnector = mock(SqoopConnector.class);
+//    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
+//    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
+//    when(sqconnector.getValidator()).thenReturn(validator);
+//    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
+//    when(sqconnector.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
+//    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
+//
+//    // prepare the connections and jobs
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//
+//    // mock necessary methods for upgradeConnector() procedure
+//    doReturn(connectionList).when(repo).findConnectionsForConnector(anyLong());
+//    doReturn(jobList).when(repo).findJobsForConnector(anyLong());
+//    doNothing().when(repo).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
+//    doNothing().when(repo).updateJob(any(MJob.class), any(RepositoryTransaction.class));
+//    doNothing().when(repo).updateConnector(any(MConnector.class), any(RepositoryTransaction.class));
+//
+//    repo.upgradeConnector(oldConnector, newConnector);
+//
+//    InOrder repoOrder = inOrder(repo);
+//    InOrder txOrder = inOrder(tx);
+//    InOrder upgraderOrder = inOrder(upgrader);
+//    InOrder validatorOrder = inOrder(validator);
+//
+//    repoOrder.verify(repo, times(1)).findConnectionsForConnector(anyLong());
+//    repoOrder.verify(repo, times(1)).findJobsForConnector(anyLong());
+//    repoOrder.verify(repo, times(1)).getTransaction();
+//    repoOrder.verify(repo, times(1)).deleteJobInputs(1, tx);
+//    repoOrder.verify(repo, times(1)).deleteJobInputs(2, tx);
+//    repoOrder.verify(repo, times(1)).deleteConnectionInputs(1, tx);
+//    repoOrder.verify(repo, times(1)).deleteConnectionInputs(2, tx);
+//    repoOrder.verify(repo, times(1)).updateConnector(any(MConnector.class), any(RepositoryTransaction.class));
+//    repoOrder.verify(repo, times(2)).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
+//    repoOrder.verify(repo, times(2)).updateJob(any(MJob.class), any(RepositoryTransaction.class));
+//    repoOrder.verifyNoMoreInteractions();
+//    txOrder.verify(tx, times(1)).begin();
+//    txOrder.verify(tx, times(1)).commit();
+//    txOrder.verify(tx, times(1)).close();
+//    txOrder.verifyNoMoreInteractions();
+//    upgraderOrder.verify(upgrader, times(2)).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
+//    upgraderOrder.verify(upgrader, times(2)).upgrade(any(MJobForms.class), any(MJobForms.class));
+//    upgraderOrder.verifyNoMoreInteractions();
+//    validatorOrder.verify(validator, times(2)).validateConnection(anyObject());
+//    validatorOrder.verify(validator, times(2)).validateJob(any(MJob.Type.class), anyObject());
+//    validatorOrder.verifyNoMoreInteractions();
+//  }
+//
+//  /**
+//   * Test the connector upgrade procedure, when all the connections and
+//   * jobs using the old connector are invalid for the new connector
+//   */
+//  @Test
+//  public void testConnectorUpgradeWithInvalidConnectionsAndJobs() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    SqoopConnector sqconnector = mock(SqoopConnector.class);
+//    when(validator.validateConnection(any(MConnection.class))).thenReturn(invalid);
+//    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(invalid);
+//    when(sqconnector.getValidator()).thenReturn(validator);
+//    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
+//    when(sqconnector.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
+//    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//
+//    doReturn(connectionList).when(repo).findConnectionsForConnector(anyLong());
+//    doReturn(jobList).when(repo).findJobsForConnector(anyLong());
+//    doNothing().when(repo).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
+//    doNothing().when(repo).updateJob(any(MJob.class), any(RepositoryTransaction.class));
+//    doNothing().when(repo).updateConnector(any(MConnector.class), any(RepositoryTransaction.class));
+//
+//    try {
+//      repo.upgradeConnector(oldConnector, newConnector);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getErrorCode(), RepositoryError.JDBCREPO_0027);
+//
+//      InOrder repoOrder = inOrder(repo);
+//      InOrder txOrder = inOrder(tx);
+//      InOrder upgraderOrder = inOrder(upgrader);
+//      InOrder validatorOrder = inOrder(validator);
+//
+//      repoOrder.verify(repo, times(1)).findConnectionsForConnector(anyLong());
+//      repoOrder.verify(repo, times(1)).findJobsForConnector(anyLong());
+//      repoOrder.verify(repo, times(1)).getTransaction();
+//      repoOrder.verify(repo, times(1)).deleteJobInputs(1, tx);
+//      repoOrder.verify(repo, times(1)).deleteJobInputs(2, tx);
+//      repoOrder.verify(repo, times(1)).deleteConnectionInputs(1, tx);
+//      repoOrder.verify(repo, times(1)).deleteConnectionInputs(2, tx);
+//      repoOrder.verify(repo, times(1)).updateConnector(any(MConnector.class), any(RepositoryTransaction.class));
+//      repoOrder.verifyNoMoreInteractions();
+//      txOrder.verify(tx, times(1)).begin();
+//      txOrder.verify(tx, times(1)).rollback();
+//      txOrder.verify(tx, times(1)).close();
+//      txOrder.verifyNoMoreInteractions();
+//      upgraderOrder.verify(upgrader, times(2)).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
+//      upgraderOrder.verify(upgrader, times(2)).upgrade(any(MJobForms.class), any(MJobForms.class));
+//      upgraderOrder.verifyNoMoreInteractions();
+//      validatorOrder.verify(validator, times(2)).validateConnection(anyObject());
+//      validatorOrder.verify(validator, times(2)).validateJob(any(MJob.Type.class), anyObject());
+//      validatorOrder.verifyNoMoreInteractions();
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with code: " + RepositoryError.JDBCREPO_0027);
+//  }
+//
+//  /**
+//   * Test the framework upgrade procedure, when all the connections and
+//   * jobs using the old connector are still valid for the new connector
+//   */
+//  @Test
+//  public void testFrameworkUpgradeWithValidConnectionsAndJobs() {
+//    MFramework newFramework = framework();
+//
+//    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
+//    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
+//    when(frameworkMgr.getValidator()).thenReturn(validator);
+//    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(frameworkMgr.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
+//    when(frameworkMgr.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//
+//    doReturn(connectionList).when(repo).findConnections();
+//    doReturn(jobList).when(repo).findJobs();
+//    doNothing().when(repo).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
+//    doNothing().when(repo).updateJob(any(MJob.class), any(RepositoryTransaction.class));
+//    doNothing().when(repo).updateFramework(any(MFramework.class), any(RepositoryTransaction.class));
+//
+//    repo.upgradeFramework(newFramework);
+//
+//    InOrder repoOrder = inOrder(repo);
+//    InOrder txOrder = inOrder(tx);
+//    InOrder upgraderOrder = inOrder(upgrader);
+//    InOrder validatorOrder = inOrder(validator);
+//
+//    repoOrder.verify(repo, times(1)).findConnections();
+//    repoOrder.verify(repo, times(1)).findJobs();
+//    repoOrder.verify(repo, times(1)).getTransaction();
+//    repoOrder.verify(repo, times(1)).deleteJobInputs(1, tx);
+//    repoOrder.verify(repo, times(1)).deleteJobInputs(2, tx);
+//    repoOrder.verify(repo, times(1)).deleteConnectionInputs(1, tx);
+//    repoOrder.verify(repo, times(1)).deleteConnectionInputs(2, tx);
+//    repoOrder.verify(repo, times(1)).updateFramework(any(MFramework.class), any(RepositoryTransaction.class));
+//    repoOrder.verify(repo, times(2)).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
+//    repoOrder.verify(repo, times(2)).updateJob(any(MJob.class), any(RepositoryTransaction.class));
+//    repoOrder.verifyNoMoreInteractions();
+//    txOrder.verify(tx, times(1)).begin();
+//    txOrder.verify(tx, times(1)).commit();
+//    txOrder.verify(tx, times(1)).close();
+//    txOrder.verifyNoMoreInteractions();
+//    upgraderOrder.verify(upgrader, times(2)).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
+//    upgraderOrder.verify(upgrader, times(2)).upgrade(any(MJobForms.class), any(MJobForms.class));
+//    upgraderOrder.verifyNoMoreInteractions();
+//    validatorOrder.verify(validator, times(2)).validateConnection(anyObject());
+//    validatorOrder.verify(validator, times(2)).validateJob(any(MJob.Type.class), anyObject());
+//    validatorOrder.verifyNoMoreInteractions();
+//  }
+//
+//  /**
+//   * Test the framework upgrade procedure, when all the connections and
+//   * jobs using the old connector are invalid for the new connector
+//   */
+//  @Test
+//  public void testFrameworkUpgradeWithInvalidConnectionsAndJobs() {
+//    MFramework newFramework = framework();
+//
+//    when(validator.validateConnection(any(MConnection.class))).thenReturn(invalid);
+//    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(invalid);
+//    when(frameworkMgr.getValidator()).thenReturn(validator);
+//    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(frameworkMgr.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
+//    when(frameworkMgr.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//
+//    doReturn(connectionList).when(repo).findConnections();
+//    doReturn(jobList).when(repo).findJobs();
+//    doNothing().when(repo).updateConnection(any(MConnection.class), any(RepositoryTransaction.class));
+//    doNothing().when(repo).updateJob(any(MJob.class), any(RepositoryTransaction.class));
+//    doNothing().when(repo).updateFramework(any(MFramework.class), any(RepositoryTransaction.class));
+//
+//    try {
+//      repo.upgradeFramework(newFramework);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getErrorCode(), RepositoryError.JDBCREPO_0027);
+//
+//      InOrder repoOrder = inOrder(repo);
+//      InOrder txOrder = inOrder(tx);
+//      InOrder upgraderOrder = inOrder(upgrader);
+//      InOrder validatorOrder = inOrder(validator);
+//
+//      repoOrder.verify(repo, times(1)).findConnections();
+//      repoOrder.verify(repo, times(1)).findJobs();
+//      repoOrder.verify(repo, times(1)).getTransaction();
+//      repoOrder.verify(repo, times(1)).deleteJobInputs(1, tx);
+//      repoOrder.verify(repo, times(1)).deleteJobInputs(2, tx);
+//      repoOrder.verify(repo, times(1)).deleteConnectionInputs(1, tx);
+//      repoOrder.verify(repo, times(1)).deleteConnectionInputs(2, tx);
+//      repoOrder.verify(repo, times(1)).updateFramework(any(MFramework.class), any(RepositoryTransaction.class));
+//      repoOrder.verifyNoMoreInteractions();
+//      txOrder.verify(tx, times(1)).begin();
+//      txOrder.verify(tx, times(1)).rollback();
+//      txOrder.verify(tx, times(1)).close();
+//      txOrder.verifyNoMoreInteractions();
+//      upgraderOrder.verify(upgrader, times(2)).upgrade(any(MConnectionForms.class), any(MConnectionForms.class));
+//      upgraderOrder.verify(upgrader, times(2)).upgrade(any(MJobForms.class), any(MJobForms.class));
+//      upgraderOrder.verifyNoMoreInteractions();
+//      validatorOrder.verify(validator, times(2)).validateConnection(anyObject());
+//      validatorOrder.verify(validator, times(2)).validateJob(any(MJob.Type.class), anyObject());
+//      validatorOrder.verifyNoMoreInteractions();
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with code: " + RepositoryError.JDBCREPO_0027);
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * find connections for a given connector
+//   */
+//  @Test
+//  public void testConnectorUpgradeHandlerFindConnectionsForConnectorError() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    SqoopConnector sqconnector = mock(SqoopConnector.class);
+//    when(sqconnector.getValidator()).thenReturn(validator);
+//    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "find connections for connector error.");
+//    doThrow(exception).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
+//
+//    try {
+//      repo.upgradeConnector(oldConnector, newConnector);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * find jobs for a given connector
+//   */
+//  @Test
+//  public void testConnectorUpgradeHandlerFindJobsForConnectorError() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    SqoopConnector sqconnector = mock(SqoopConnector.class);
+//    when(sqconnector.getValidator()).thenReturn(validator);
+//    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "find jobs for connector error.");
+//    doThrow(exception).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
+//
+//    try {
+//      repo.upgradeConnector(oldConnector, newConnector);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * delete job inputs for a given connector
+//   */
+//  @Test
+//  public void testConnectorUpgradeHandlerDeleteJobInputsError() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    SqoopConnector sqconnector = mock(SqoopConnector.class);
+//    when(sqconnector.getValidator()).thenReturn(validator);
+//    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
+//    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "delete job inputs for connector error.");
+//    doThrow(exception).when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
+//
+//    try {
+//      repo.upgradeConnector(oldConnector, newConnector);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).deleteJobInputs(anyLong(), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * delete connection inputs for a given connector
+//   */
+//  @Test
+//  public void testConnectorUpgradeHandlerDeleteConnectionInputsError() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    SqoopConnector sqconnector = mock(SqoopConnector.class);
+//    when(sqconnector.getValidator()).thenReturn(validator);
+//    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
+//    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "delete connection inputs for connector error.");
+//    doThrow(exception).when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
+//
+//    try {
+//      repo.upgradeConnector(oldConnector, newConnector);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).deleteConnectionInputs(anyLong(), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * update the connector metadata
+//   */
+//  @Test
+//  public void testConnectorUpgradeHandlerUpdateConnectorError() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    SqoopConnector sqconnector = mock(SqoopConnector.class);
+//    when(sqconnector.getValidator()).thenReturn(validator);
+//    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
+//    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "update connector error.");
+//    doThrow(exception).when(repoHandler).updateConnector(any(MConnector.class), any(Connection.class));
+//
+//    try {
+//      repo.upgradeConnector(oldConnector, newConnector);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(2)).deleteConnectionInputs(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).updateConnector(any(MConnector.class), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * update the connection metadata
+//   */
+//  @Test
+//  public void testConnectorUpgradeHandlerUpdateConnectionError() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    SqoopConnector sqconnector = mock(SqoopConnector.class);
+//    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
+//    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
+//    when(sqconnector.getValidator()).thenReturn(validator);
+//    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
+//    when(sqconnector.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
+//    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
+//    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).updateConnector(any(MConnector.class), any(Connection.class));
+//    doReturn(true).when(repoHandler).existsConnection(anyLong(), any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "update connection error.");
+//    doThrow(exception).when(repoHandler).updateConnection(any(MConnection.class), any(Connection.class));
+//
+//    try {
+//      repo.upgradeConnector(oldConnector, newConnector);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(2)).deleteConnectionInputs(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).updateConnector(any(MConnector.class), any(Connection.class));
+//      verify(repoHandler, times(1)).existsConnection(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).updateConnection(any(MConnection.class), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * update the job metadata
+//   */
+//  @Test
+//  public void testConnectorUpgradeHandlerUpdateJobError() {
+//    MConnector newConnector = connector(1, "1.1");
+//    MConnector oldConnector = connector(1);
+//
+//    SqoopConnector sqconnector = mock(SqoopConnector.class);
+//    when(validator.validateConnection(any(MConnection.class))).thenReturn(valid);
+//    when(validator.validateJob(any(MJob.Type.class), any(MJob.class))).thenReturn(valid);
+//    when(sqconnector.getValidator()).thenReturn(validator);
+//    when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader);
+//    when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class);
+//    when(sqconnector.getJobConfigurationClass(any(MJob.Type.class))).thenReturn(ImportJobConfiguration.class);
+//    when(connectorMgr.getConnector(anyString())).thenReturn(sqconnector);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//    doReturn(connectionList).when(repoHandler).findConnectionsForConnector(anyLong(), any(Connection.class));
+//    doReturn(jobList).when(repoHandler).findJobsForConnector(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).updateConnector(any(MConnector.class), any(Connection.class));
+//    doNothing().when(repoHandler).updateConnection(any(MConnection.class), any(Connection.class));
+//    doReturn(true).when(repoHandler).existsConnection(anyLong(), any(Connection.class));
+//    doReturn(true).when(repoHandler).existsJob(anyLong(), any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "update job error.");
+//    doThrow(exception).when(repoHandler).updateJob(any(MJob.class), any(Connection.class));
+//
+//    try {
+//      repo.upgradeConnector(oldConnector, newConnector);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnectionsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).findJobsForConnector(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(2)).deleteConnectionInputs(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).updateConnector(any(MConnector.class), any(Connection.class));
+//      verify(repoHandler, times(2)).existsConnection(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(2)).updateConnection(any(MConnection.class), any(Connection.class));
+//      verify(repoHandler, times(1)).existsJob(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).updateJob(any(MJob.class), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * find connections for framework
+//   */
+//  @Test
+//  public void testFrameworkUpgradeHandlerFindConnectionsError() {
+//    MFramework newFramework = framework();
+//
+//    when(frameworkMgr.getValidator()).thenReturn(validator);
+//    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "find connections error.");
+//    doThrow(exception).when(repoHandler).findConnections(any(Connection.class));
+//
+//    try {
+//      repo.upgradeFramework(newFramework);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnections(any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * find jobs for framework
+//   */
+//  @Test
+//  public void testFrameworkUpgradeHandlerFindJobsError() {
+//    MFramework newFramework = framework();
+//
+//    when(frameworkMgr.getValidator()).thenReturn(validator);
+//    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "find jobs error.");
+//    doThrow(exception).when(repoHandler).findJobs(any(Connection.class));
+//
+//    try {
+//      repo.upgradeFramework(newFramework);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnections(any(Connection.class));
+//      verify(repoHandler, times(1)).findJobs(any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * delete job inputs for framework upgrade
+//   */
+//  @Test
+//  public void testFrameworkUpgradeHandlerDeleteJobInputsError() {
+//    MFramework newFramework = framework();
+//
+//    when(frameworkMgr.getValidator()).thenReturn(validator);
+//    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
+//    doReturn(jobList).when(repoHandler).findJobs(any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "delete job inputs error.");
+//    doThrow(exception).when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
+//
+//    try {
+//      repo.upgradeFramework(newFramework);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnections(any(Connection.class));
+//      verify(repoHandler, times(1)).findJobs(any(Connection.class));
+//      verify(repoHandler, times(1)).deleteJobInputs(anyLong(), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * delete connection inputs for framework upgrade
+//   */
+//  @Test
+//  public void testFrameworkUpgradeHandlerDeleteConnectionInputsError() {
+//    MFramework newFramework = framework();
+//
+//    when(frameworkMgr.getValidator()).thenReturn(validator);
+//    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
+//    doReturn(jobList).when(repoHandler).findJobs(any(Connection.class));
+//    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "delete connection inputs error.");
+//    doThrow(exception).when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
+//
+//    try {
+//      repo.upgradeFramework(newFramework);
+//    } catch (SqoopException ex) {
+//      assertEquals(ex.getMessage(), exception.getMessage());
+//      verify(repoHandler, times(1)).findConnections(any(Connection.class));
+//      verify(repoHandler, times(1)).findJobs(any(Connection.class));
+//      verify(repoHandler, times(2)).deleteJobInputs(anyLong(), any(Connection.class));
+//      verify(repoHandler, times(1)).deleteConnectionInputs(anyLong(), any(Connection.class));
+//      verifyNoMoreInteractions(repoHandler);
+//      return ;
+//    }
+//
+//    fail("Should throw out an exception with message: " + exception.getMessage());
+//  }
+//
+//  /**
+//   * Test the exception handling procedure when the database handler fails to
+//   * update the framework metadata
+//   */
+//  @Test
+//  public void testFrameworkUpgradeHandlerUpdateFrameworkError() {
+//    MFramework newFramework = framework();
+//
+//    when(frameworkMgr.getValidator()).thenReturn(validator);
+//    when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader);
+//
+//    List<MConnection> connectionList = connections(connection(1,1), connection(2,1));
+//    List<MJob> jobList = jobs(job(1,1,1), job(2,1,2));
+//    doReturn(connectionList).when(repoHandler).findConnections(any(Connection.class));
+//    doReturn(jobList).when(repoHandler).findJobs(any(Connection.class));
+//    doNothing().when(repoHandler).deleteJobInputs(anyLong(), any(Connection.class));
+//    doNothing().when(repoHandler).deleteConnectionInputs(anyLong(), any(Connection.class));
+//
+//    SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
+//        "update framework metadata error.");
+//    doThrow(exception).when(repoH

<TRUNCATED>