http://git-wip-us.apache.org/repos/asf/sqoop/blob/fcb77b67/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 f19e01c..50daa62 100644 --- a/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java +++ b/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java @@ -23,12 +23,13 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; +import org.apache.sqoop.common.Direction; import org.apache.sqoop.common.SqoopException; import org.apache.sqoop.connector.ConnectorManager; import org.apache.sqoop.connector.spi.MetadataUpgrader; import org.apache.sqoop.connector.spi.SqoopConnector; import org.apache.sqoop.framework.FrameworkManager; -//import org.apache.sqoop.framework.configuration.ImportJobConfiguration; +import org.apache.sqoop.framework.configuration.JobConfiguration; import org.apache.sqoop.model.ConfigurationClass; import org.apache.sqoop.model.FormUtils; import org.apache.sqoop.model.MConnection; @@ -38,11 +39,10 @@ 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.validation.Status; import org.apache.sqoop.validation.Validation; -import org.apache.sqoop.validation.Validator; +import org.apache.sqoop.validation.Validator; import org.junit.Before; import org.junit.Test; import org.mockito.InOrder; @@ -52,221 +52,225 @@ 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 -// */ + 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.class))).thenReturn(valid); + when(sqconnector.getValidator()).thenReturn(validator); + when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader); + when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class); + when(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(JobConfiguration.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,1,1), job(2,1,1,2,1)); + + // 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(4)).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(4)).upgrade(any(MJobForms.class), any(MJobForms.class)); + upgraderOrder.verifyNoMoreInteractions(); + validatorOrder.verify(validator, times(2)).validateConnection(anyObject()); + // @TODO(Abe): Re-enable job validation? + validatorOrder.verify(validator, times(0)).validateJob(anyObject()); + validatorOrder.verifyNoMoreInteractions(); + } + + /** + * @TODO(Abe): To re-enable with Validation in Repository upgrade. + * 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); // +// // prepare the sqoop connector // 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(validator.validateJob(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(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(JobConfiguration.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)); +// List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1)); // // doReturn(connectionList).when(repo).findConnectionsForConnector(anyLong()); // doReturn(jobList).when(repo).findJobsForConnector(anyLong()); @@ -301,730 +305,730 @@ public class TestJdbcRepository { // 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.verify(validator, times(2)).validateJob(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 { -// } + + /** + * 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.class))).thenReturn(valid); + when(frameworkMgr.getValidator()).thenReturn(validator); + when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader); + when(frameworkMgr.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class); + when(frameworkMgr.getJobConfigurationClass()).thenReturn(JobConfiguration.class); + + List<MConnection> connectionList = connections(connection(1,1), connection(2,1)); + List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1)); + + 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(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.class))).thenReturn(invalid); + when(frameworkMgr.getValidator()).thenReturn(validator); + when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader); + when(frameworkMgr.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class); + when(frameworkMgr.getJobConfigurationClass()).thenReturn(JobConfiguration.class); + + List<MConnection> connectionList = connections(connection(1,1), connection(2,1)); + List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1)); + + 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(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,1,1), job(2,1,1,2,1)); + 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,1,1), job(2,1,1,2,1)); + 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,1,1), job(2,1,1,2,1)); + 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.class))).thenReturn(valid); + when(sqconnector.getValidator()).thenReturn(validator); + when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader); + when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class); + when(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(JobConfiguration.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,1,1), job(2,1,1,2,1)); + 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.class))).thenReturn(valid); + when(sqconnector.getValidator()).thenReturn(validator); + when(sqconnector.getMetadataUpgrader()).thenReturn(upgrader); + when(sqconnector.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class); + when(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(JobConfiguration.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,1,1), job(2,1,1,2,1)); + 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,1,1), job(2,1,1,2,1)); + 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,1,1), job(2,1,1,2,1)); + 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,1,1), job(2,1,1,2,1)); + 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.class))).thenReturn(valid); + when(frameworkMgr.getValidator()).thenReturn(validator); + when(frameworkMgr.getMetadataUpgrader()).thenReturn(upgrader); + when(frameworkMgr.getConnectionConfigurationClass()).thenReturn(EmptyConfigurationClass.class); + when(frameworkMgr.getJobConfigurationClass()).thenReturn(JobConfiguration.class); + + List<MConnection> connectionList = connections(connection(1,1), connection(2,1)); + List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1)); + 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 o
<TRUNCATED>
