diff --git a/src/main/java/com/tacitknowledge/util/migration/jdbc/loader/FlatXmlDataSetMigrationTask.java b/src/main/java/com/tacitknowledge/util/migration/jdbc/loader/FlatXmlDataSetMigrationTask.java index 30e21d5..ae45ac1 100644 --- a/src/main/java/com/tacitknowledge/util/migration/jdbc/loader/FlatXmlDataSetMigrationTask.java +++ b/src/main/java/com/tacitknowledge/util/migration/jdbc/loader/FlatXmlDataSetMigrationTask.java @@ -25,6 +25,7 @@ import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.xml.FlatXmlDataSet; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.dbunit.operation.DatabaseOperation; import java.io.IOException; @@ -65,9 +66,10 @@ public void migrate(MigrationContext context) throws MigrationException JdbcMigrationContext jdbcContext = (JdbcMigrationContext) context; // used to close connection in finally block Connection contextConnection = null; + FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder(); try { - FlatXmlDataSet xmlDataSet = new FlatXmlDataSet(getXmlAsStream()); + FlatXmlDataSet xmlDataSet = builder.build(getXmlAsStream()); // Set contextConnection so it can be accessed in the finally block. contextConnection = jdbcContext.getConnection(); diff --git a/src/test/java/com/tacitknowledge/util/migration/DistributedAutoPatchRollbackTest.java b/src/test/java/com/tacitknowledge/util/migration/DistributedAutoPatchRollbackTest.java index 0bcb602..bae1e50 100644 --- a/src/test/java/com/tacitknowledge/util/migration/DistributedAutoPatchRollbackTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/DistributedAutoPatchRollbackTest.java @@ -23,7 +23,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.easymock.EasyMock; -import org.easymock.MockControl; import com.mockrunner.mock.jdbc.MockDataSource; import org.easymock.classextension.IMocksControl; @@ -31,6 +30,7 @@ import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; import static org.easymock.classextension.EasyMock.createControl; +import static org.easymock.classextension.EasyMock.createStrictControl; /** * Test the Distributed auto patch service to make sure it configures and runs @@ -315,10 +315,9 @@ protected void setReportedPatchLevel(Collection launchers, int levelToReport) th for(Iterator it = launcher.getContexts().keySet().iterator(); it.hasNext(); ) { MigrationContext ctx = (MigrationContext) it.next(); - MockControl patchInfoStoreControl = MockControl.createControl(PatchInfoStore.class); - PatchInfoStore patchInfoStore = (PatchInfoStore) patchInfoStoreControl.getMock(); - patchInfoStore.getPatchLevel(); - patchInfoStoreControl.setReturnValue(levelToReport); + IMocksControl patchInfoStoreControl = createStrictControl(); + PatchInfoStore patchInfoStore = patchInfoStoreControl.createMock(PatchInfoStore.class); + expect(patchInfoStore.getPatchLevel()).andReturn(levelToReport); patchInfoStoreControl.replay(); launcher.getContexts().put(ctx, patchInfoStore); } diff --git a/src/test/java/com/tacitknowledge/util/migration/DistributedMigrationProcessTest.java b/src/test/java/com/tacitknowledge/util/migration/DistributedMigrationProcessTest.java index 5b6cab6..436b4f0 100644 --- a/src/test/java/com/tacitknowledge/util/migration/DistributedMigrationProcessTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/DistributedMigrationProcessTest.java @@ -23,7 +23,6 @@ import org.easymock.EasyMock; import org.easymock.classextension.IMocksControl; -import org.easymock.MockControl; import com.tacitknowledge.util.migration.jdbc.JdbcMigrationContext; import com.tacitknowledge.util.migration.jdbc.JdbcMigrationLauncher; @@ -31,7 +30,6 @@ import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; import static org.easymock.classextension.EasyMock.createControl; -import static org.easymock.classextension.EasyMock.createMock; import static org.easymock.classextension.EasyMock.createStrictControl; /** @@ -82,11 +80,11 @@ public void testValidateControlledSystemsWhenNodePatchLevelsAreInSync() throws E String systemName = "system1"; JdbcMigrationLauncher launcher = new JdbcMigrationLauncher(); - MockControl contextControl = MockControl.createControl(JdbcMigrationContext.class); + IMocksControl contextControl = createStrictControl(); - JdbcMigrationContext context = (JdbcMigrationContext) contextControl.getMock(); - MockControl patchInfoStoreControl = MockControl.createControl(PatchInfoStore.class); - PatchInfoStore patchInfoStore = (PatchInfoStore) patchInfoStoreControl.getMock(); + JdbcMigrationContext context = contextControl.createMock(JdbcMigrationContext.class); + IMocksControl patchInfoStoreControl = createStrictControl(); + PatchInfoStore patchInfoStore = patchInfoStoreControl.createMock(PatchInfoStore.class); expect(migrationRunnerStrategy.isSynchronized(currentPatchInfoStore, patchInfoStore)).andReturn(true); @@ -121,23 +119,21 @@ public void testValidateControlledSystemsWhenNodePatchLevelsAreOutOfSync() throw JdbcMigrationLauncher launcher = new JdbcMigrationLauncher(); // first node is at the 'current' patch level - MockControl node1ContextControl = MockControl.createControl(JdbcMigrationContext.class); - JdbcMigrationContext node1Context = (JdbcMigrationContext) node1ContextControl.getMock(); - MockControl node1PatchInfoStoreControl = MockControl.createControl(PatchInfoStore.class); - PatchInfoStore node1PatchInfoStore = (PatchInfoStore) node1PatchInfoStoreControl.getMock(); + IMocksControl node1ContextControl = createStrictControl(); + JdbcMigrationContext node1Context = node1ContextControl.createMock(JdbcMigrationContext.class); + IMocksControl node1PatchInfoStoreControl = createStrictControl(); + PatchInfoStore node1PatchInfoStore = node1PatchInfoStoreControl.createMock(PatchInfoStore.class); // setup mock patch info store to return the patch level we want - node1Context.getDatabaseName(); - node1ContextControl.setReturnValue("node1", MockControl.ONE_OR_MORE); + expect(node1Context.getDatabaseName()).andReturn("node1").atLeastOnce(); node1ContextControl.replay(); // second node simulates a newly added database instance, it has not been patched - MockControl node2ContextControl = MockControl.createControl(JdbcMigrationContext.class); - JdbcMigrationContext node2Context = (JdbcMigrationContext) node2ContextControl.getMock(); - MockControl node2PatchInfoStoreControl = MockControl.createControl(PatchInfoStore.class); - PatchInfoStore node2PatchInfoStore = (PatchInfoStore) node2PatchInfoStoreControl.getMock(); + IMocksControl node2ContextControl = createStrictControl(); + JdbcMigrationContext node2Context = node2ContextControl.createMock(JdbcMigrationContext.class); + IMocksControl node2PatchInfoStoreControl = createStrictControl(); + PatchInfoStore node2PatchInfoStore = node2PatchInfoStoreControl.createMock(PatchInfoStore.class); // setup mock patch info store to return the patch level we want - node2Context.getDatabaseName(); - node2ContextControl.setReturnValue("node2", MockControl.ONE_OR_MORE); + expect(node2Context.getDatabaseName()).andReturn("node2").atLeastOnce(); node2ContextControl.replay(); // create the launcher's contexts collection diff --git a/src/test/java/com/tacitknowledge/util/migration/MigrationProcessRollbackTest.java b/src/test/java/com/tacitknowledge/util/migration/MigrationProcessRollbackTest.java index ac90382..ca2a64c 100644 --- a/src/test/java/com/tacitknowledge/util/migration/MigrationProcessRollbackTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/MigrationProcessRollbackTest.java @@ -21,17 +21,18 @@ import com.tacitknowledge.util.migration.tasks.rollback.TestRollbackableTask4; import com.tacitknowledge.util.migration.tasks.rollback.TestRollbackableTask5; import org.easymock.EasyMock; -import org.easymock.MockControl; import org.easymock.classextension.IMocksControl; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import static org.easymock.EasyMock.anyObject; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; import static org.easymock.classextension.EasyMock.createStrictControl; + /** * This class defines unit tests for the Rollback functionality. * @@ -48,7 +49,7 @@ public class MigrationProcessRollbackTest extends MigrationListenerTestBase * Test migration context */ private TestMigrationContext context = null; - private MockControl patchInfoStoreControl; + private IMocksControl patchInfoStoreControl; private PatchInfoStore patchInfoStore; private PatchInfoStore currentPatchInfoStore; private IMocksControl mockControl; @@ -80,8 +81,8 @@ protected void setUp() throws Exception + ".tasks.post"); runner.addListener(this); context = new TestMigrationContext(); - patchInfoStoreControl = MockControl.createStrictControl(PatchInfoStore.class); - patchInfoStore = (PatchInfoStore) patchInfoStoreControl.getMock(); + patchInfoStoreControl = createStrictControl(); + patchInfoStore = patchInfoStoreControl.createMock(PatchInfoStore.class); currentPatchInfoStore = MockBuilder.getPatchInfoStore(12); mockControl = createStrictControl(); @@ -92,8 +93,8 @@ protected void setUp() throws Exception rollbackCandidates.add(new TestRollbackableTask4()); rollbackCandidates.add(new TestRollbackableTask3()); rollbackCandidates.add(new TestRollbackableTask2()); - expect(migrationStrategy.getRollbackCandidates(EasyMock.>anyObject(), eq(ROLLBACK_LEVELS), eq(currentPatchInfoStore))).andReturn(rollbackCandidates); - expect(migrationStrategy.getRollbackCandidates(EasyMock.>anyObject(), eq(ROLLBACK_LEVELS), eq(currentPatchInfoStore))).andReturn(Collections.EMPTY_LIST); + expect(migrationStrategy.getRollbackCandidates(EasyMock.> anyObject(), eq(ROLLBACK_LEVELS), eq(currentPatchInfoStore))).andReturn(rollbackCandidates); + expect(migrationStrategy.getRollbackCandidates(EasyMock.> anyObject(), eq(ROLLBACK_LEVELS), eq(currentPatchInfoStore))).andReturn(Collections.EMPTY_LIST); } @@ -118,7 +119,7 @@ public void testRollbackAllTasks() throws MigrationException List migrationTasks = runner.getMigrationTasks(); assertEquals(5, migrationTasks.size()); - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 1, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(1).atLeastOnce(); patchInfoStoreControl.replay(); int level = runner.doMigrations(patchInfoStore, context); @@ -153,7 +154,7 @@ public void testRollbackPartialTasks() throws MigrationException List l = runner.getMigrationTasks(); assertEquals(5, l.size()); - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 8, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(8).atLeastOnce(); patchInfoStoreControl.replay(); int level = runner.doMigrations(patchInfoStore, context); @@ -228,7 +229,7 @@ private void doInitialMigrations() throws MigrationException List l = runner.getMigrationTasks(); assertEquals(5, l.size()); - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 0, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(0).atLeastOnce(); patchInfoStoreControl.replay(); int level = runner.doMigrations(patchInfoStore, context); runner.doPostPatchMigrations(context); @@ -253,7 +254,7 @@ public void testInvalidRollbackLevel() throws MigrationException List l = runner.getMigrationTasks(); assertEquals(5, l.size()); - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 0, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(0).atLeastOnce(); patchInfoStoreControl.replay(); int level = runner.doMigrations(patchInfoStore, context); @@ -295,7 +296,7 @@ public void testMigrationTaskRollback() throws MigrationException assertEquals(6, l.size()); - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 7, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(7).atLeastOnce(); patchInfoStoreControl.replay(); int level = runner.doMigrations(patchInfoStore, context); diff --git a/src/test/java/com/tacitknowledge/util/migration/MigrationProcessTest.java b/src/test/java/com/tacitknowledge/util/migration/MigrationProcessTest.java index bac9947..1c5cd6f 100644 --- a/src/test/java/com/tacitknowledge/util/migration/MigrationProcessTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/MigrationProcessTest.java @@ -19,11 +19,15 @@ import com.tacitknowledge.util.migration.tasks.normal.TestMigrationTask2; import com.tacitknowledge.util.migration.tasks.normal.TestMigrationTask3; import junit.framework.TestCase; -import org.easymock.MockControl; +import org.easymock.IMocksControl; import java.util.ArrayList; import java.util.List; +import static org.easymock.EasyMock.expectLastCall; +import static org.easymock.classextension.EasyMock.expect; +import static org.easymock.classextension.EasyMock.createStrictControl; + /** * Test the {@link MigrationProcess} class. @@ -36,15 +40,15 @@ public class MigrationProcessTest extends TestCase private MigrationProcess migrationProcess = null; - private MockControl migrationContextControl = null; + private IMocksControl migrationContextControl = null; private MigrationContext migrationContextMock = null; - private MockControl migrationTaskSourceControl = null; + private IMocksControl migrationTaskSourceControl = null; private MigrationTaskSource migrationTaskSourceMock = null; - private MockControl patchInfoStoreControl = null; + private IMocksControl patchInfoStoreControl = null; private PatchInfoStore patchInfoStoreMock = null; private PatchInfoStore patchInfoStore; @@ -55,14 +59,13 @@ public void setUp() throws Exception migrationProcess = new MigrationProcess(); migrationProcess. setMigrationRunnerStrategy(MigrationRunnerFactory.getMigrationRunnerStrategy(null)); - migrationContextControl = MockControl.createStrictControl(MigrationContext.class); - migrationContextMock = - (MigrationContext) migrationContextControl.getMock(); - migrationTaskSourceControl = MockControl.createStrictControl(MigrationTaskSource.class); - migrationTaskSourceMock = (MigrationTaskSource) migrationTaskSourceControl.getMock(); + migrationContextControl = createStrictControl(); + migrationContextMock = migrationContextControl.createMock(MigrationContext.class); + migrationTaskSourceControl = createStrictControl(); + migrationTaskSourceMock = migrationTaskSourceControl.createMock(MigrationTaskSource.class); migrationProcess.addPatchResourcePackage("testPackageName"); - patchInfoStoreControl = MockControl.createStrictControl(PatchInfoStore.class); - patchInfoStoreMock = (PatchInfoStore) patchInfoStoreControl.getMock(); + patchInfoStoreControl = createStrictControl(); + patchInfoStoreMock = patchInfoStoreControl.createMock(PatchInfoStore.class); patchInfoStore = MockBuilder.getPatchInfoStore(3); } @@ -119,7 +122,7 @@ public void testDryRunWithNullMigrationList() throws MigrationException { } public void testDryRunWithMigrationsInOrder() throws MigrationException { - patchInfoStoreControl.expectAndReturn(patchInfoStoreMock.getPatchLevel(), 3, 2); + expect(patchInfoStoreMock.getPatchLevel()).andReturn(3).times(2); patchInfoStoreControl.replay(); int taskCount = migrationProcess.dryRun(patchInfoStoreMock, migrationContextMock, getMigrationTasks()); assertEquals("TaskCount should be equal to 2", 2, taskCount); @@ -142,10 +145,9 @@ public void testDoMigrationInReadOnlyWithExistingTasksThrowsError() throws Migra try { migrationProcess.setReadOnly(true); - migrationTaskSourceControl.expectAndReturn(migrationTaskSourceMock. - getMigrationTasks("testPackageName"), getMigrationTasks()); + expect(migrationTaskSourceMock.getMigrationTasks("testPackageName")).andReturn(getMigrationTasks()); migrationTaskSourceControl.replay(); - patchInfoStoreControl.expectAndReturn(patchInfoStoreMock.getPatchLevel(), 2, 2); + expect(patchInfoStoreMock.getPatchLevel()).andReturn(2).times(2); patchInfoStoreControl.replay(); migrationProcess.addMigrationTaskSource(migrationTaskSourceMock); migrationProcess.doMigrations(patchInfoStoreMock, migrationContextMock); @@ -163,11 +165,10 @@ public void testDoMigrationInReadOnlyWithExistingTasksThrowsError() throws Migra public void testDoMigrationInReadOnlyWithZeroTasks() throws MigrationException { migrationProcess.setReadOnly(true); - migrationTaskSourceControl.expectAndReturn(migrationTaskSourceMock. - getMigrationTasks("testPackageName"), new ArrayList()); + expect(migrationTaskSourceMock.getMigrationTasks("testPackageName")).andReturn(new ArrayList()); migrationTaskSourceControl.replay(); migrationProcess.addMigrationTaskSource(migrationTaskSourceMock); - patchInfoStoreControl.expectAndReturn(patchInfoStoreMock.getPatchLevel(), 0); + expect(patchInfoStoreMock.getPatchLevel()).andReturn(0); patchInfoStoreControl.replay(); migrationProcess.doMigrations(patchInfoStoreMock, migrationContextMock); } @@ -175,11 +176,10 @@ public void testDoMigrationInReadOnlyWithZeroTasks() throws MigrationException public void testDoTwoMigrations() throws MigrationException { migrationProcess.setReadOnly(false); - migrationTaskSourceControl.expectAndReturn(migrationTaskSourceMock. - getMigrationTasks("testPackageName"), getMigrationTasks()); + expect(migrationTaskSourceMock.getMigrationTasks("testPackageName")).andReturn(getMigrationTasks()); migrationTaskSourceControl.replay(); migrationProcess.addMigrationTaskSource(migrationTaskSourceMock); - patchInfoStoreControl.expectAndReturn(patchInfoStoreMock.getPatchLevel(), 2, 4); + expect(patchInfoStoreMock.getPatchLevel()).andReturn(2).times(4); patchInfoStoreControl.replay(); assertEquals("We should have executed 2 migrations", 2, migrationProcess.doMigrations(patchInfoStoreMock, migrationContextMock)); @@ -188,11 +188,10 @@ public void testDoTwoMigrations() throws MigrationException public void testDontDoMigrations() throws MigrationException { migrationProcess.setReadOnly(false); - migrationTaskSourceControl.expectAndReturn(migrationTaskSourceMock. - getMigrationTasks("testPackageName"), getMigrationTasks()); + expect(migrationTaskSourceMock.getMigrationTasks("testPackageName")).andReturn(getMigrationTasks()); migrationTaskSourceControl.replay(); migrationProcess.addMigrationTaskSource(migrationTaskSourceMock); - patchInfoStoreControl.expectAndReturn(patchInfoStoreMock.getPatchLevel(), 100, 4); + expect(patchInfoStoreMock.getPatchLevel()).andReturn(100).times(4); patchInfoStoreControl.replay(); assertEquals("We should have executed no migrations", 0, migrationProcess.doMigrations(patchInfoStoreMock, migrationContextMock)); diff --git a/src/test/java/com/tacitknowledge/util/migration/MigrationTest.java b/src/test/java/com/tacitknowledge/util/migration/MigrationTest.java index 9b386d0..98e7e28 100644 --- a/src/test/java/com/tacitknowledge/util/migration/MigrationTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/MigrationTest.java @@ -20,8 +20,10 @@ import com.tacitknowledge.util.migration.builders.MockBuilder; import com.tacitknowledge.util.migration.tasks.normal.TestMigrationTask2; import com.tacitknowledge.util.migration.tasks.normal.TestMigrationTask3; -import org.easymock.MockControl; +import org.easymock.IMocksControl; +import static org.easymock.classextension.EasyMock.createStrictControl; +import static org.easymock.EasyMock.expect; /** * Test basic migration functionality * @@ -34,7 +36,7 @@ public class MigrationTest extends MigrationListenerTestBase /** Test migration context */ private TestMigrationContext context = null; - private MockControl patchInfoStoreControl; + private IMocksControl patchInfoStoreControl; private PatchInfoStore patchInfoStore; /** @@ -60,8 +62,8 @@ protected void setUp() throws Exception runner.addPostPatchResourceDirectory(getClass().getPackage().getName() + ".tasks.post"); runner.addListener(this); context = new TestMigrationContext(); - patchInfoStoreControl = MockControl.createStrictControl(PatchInfoStore.class); - patchInfoStore = (PatchInfoStore) patchInfoStoreControl.getMock(); + patchInfoStoreControl = createStrictControl(); + patchInfoStore = patchInfoStoreControl.createMock(PatchInfoStore.class); } /** @@ -85,7 +87,7 @@ public void testRunAllMigrationTasks() throws MigrationException List l = runner.getMigrationTasks(); assertEquals(9, l.size()); - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 0, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(0).atLeastOnce(); patchInfoStoreControl.replay(); int level = runner.doMigrations(patchInfoStore, context); @@ -117,7 +119,7 @@ public void testReRunAllMigrationTasks() throws MigrationException assertEquals(9, l.size()); // run them all once - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 0, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(0).atLeastOnce(); patchInfoStoreControl.replay(); int level = runner.doMigrations(patchInfoStore, context); @@ -143,7 +145,7 @@ public void testReRunAllMigrationTasks() throws MigrationException setMigrationSuccessCount(0); patchInfoStoreControl.reset(); - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 15, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(15).atLeastOnce(); patchInfoStoreControl.replay(); level = runner.doMigrations(patchInfoStore, context); @@ -175,7 +177,7 @@ public void testRunPartialMigrationTasks() throws MigrationException List l = runner.getMigrationTasks(); assertEquals(9, l.size()); - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 9, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(9).atLeastOnce(); patchInfoStoreControl.replay(); int level = runner.doMigrations(patchInfoStore, context); @@ -210,7 +212,7 @@ public void testRunBrokenMigrationTasks() throws MigrationException int executedTasks = 0; try { - patchInfoStoreControl.expectAndReturn(patchInfoStore.getPatchLevel(), 5, MockControl.ONE_OR_MORE); + expect(patchInfoStore.getPatchLevel()).andReturn(5).atLeastOnce(); patchInfoStoreControl.replay(); executedTasks = runner.doMigrations(patchInfoStore, context); runner.doPostPatchMigrations(context); diff --git a/src/test/java/com/tacitknowledge/util/migration/MissingPatchMigrationRunnerStrategyTest.java b/src/test/java/com/tacitknowledge/util/migration/MissingPatchMigrationRunnerStrategyTest.java index 49d2649..38b9caf 100644 --- a/src/test/java/com/tacitknowledge/util/migration/MissingPatchMigrationRunnerStrategyTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/MissingPatchMigrationRunnerStrategyTest.java @@ -21,13 +21,12 @@ import com.tacitknowledge.util.migration.tasks.normal.TestMigrationTask4; import com.tacitknowledge.util.migration.tasks.rollback.*; import junit.framework.TestCase; -import org.easymock.EasyMock; -import org.easymock.MockControl; import org.easymock.classextension.IMocksControl; import java.util.*; import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.expectLastCall; import static org.easymock.classextension.EasyMock.createControl; /** @@ -39,7 +38,7 @@ public class MissingPatchMigrationRunnerStrategyTest extends TestCase { private MissingPatchMigrationRunnerStrategy strategy; - private MockControl patchInfoStoreControl; + private IMocksControl patchInfoStoreControl; private PatchInfoStore patchInfoStore; private List allMigrationTasks; private TestRollbackableTask2 rollbackableTask2; @@ -50,8 +49,8 @@ public class MissingPatchMigrationRunnerStrategyTest extends TestCase { protected void setUp() throws Exception { strategy = new MissingPatchMigrationRunnerStrategy(); - patchInfoStoreControl = MockControl.createControl(PatchInfoStore.class); - patchInfoStore = (PatchInfoStore) patchInfoStoreControl.getMock(); + patchInfoStoreControl = createControl(); + patchInfoStore = (PatchInfoStore) patchInfoStoreControl.createMock(PatchInfoStore.class); allMigrationTasks = new ArrayList(); rollbackableTask2 = new TestRollbackableTask2(); rollbackableTask4 = new TestRollbackableTask4(); @@ -66,14 +65,14 @@ protected void setUp() throws Exception { } public void testShouldMigrationRunReturnsTrueIfPatchWasNotApplied() throws MigrationException { - patchInfoStoreControl.expectAndReturn(patchInfoStore.isPatchApplied(5), false); + expect(patchInfoStore.isPatchApplied(5)).andReturn(false); patchInfoStoreControl.replay(); boolean actualResult = strategy.shouldMigrationRun(5, patchInfoStore); assertTrue("The patch was already applied.", actualResult); } public void testShouldMigrationRunReturnsFalseIfPatchWasApplied() throws MigrationException { - patchInfoStoreControl.expectAndReturn(patchInfoStore.isPatchApplied(4), true); + expect(patchInfoStore.isPatchApplied(4)).andReturn(true); patchInfoStoreControl.replay(); boolean actualResult = strategy.shouldMigrationRun(4, patchInfoStore); assertFalse("The patch was not applied.", actualResult); diff --git a/src/test/java/com/tacitknowledge/util/migration/jdbc/DistributedJdbcMigrationLauncherFactoryTest.java b/src/test/java/com/tacitknowledge/util/migration/jdbc/DistributedJdbcMigrationLauncherFactoryTest.java index 971f280..8db5ac8 100644 --- a/src/test/java/com/tacitknowledge/util/migration/jdbc/DistributedJdbcMigrationLauncherFactoryTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/jdbc/DistributedJdbcMigrationLauncherFactoryTest.java @@ -25,10 +25,8 @@ import com.tacitknowledge.util.migration.builders.MockBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.easymock.MockControl; import com.tacitknowledge.util.migration.tasks.normal.TestMigrationTask2; -import org.easymock.classextension.EasyMock; import org.easymock.classextension.IMocksControl; import static org.easymock.EasyMock.expect; diff --git a/src/test/java/com/tacitknowledge/util/migration/jdbc/JdbcMigrationLauncherTest.java b/src/test/java/com/tacitknowledge/util/migration/jdbc/JdbcMigrationLauncherTest.java index 1ee0673..7f44396 100644 --- a/src/test/java/com/tacitknowledge/util/migration/jdbc/JdbcMigrationLauncherTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/jdbc/JdbcMigrationLauncherTest.java @@ -24,7 +24,6 @@ import com.tacitknowledge.util.migration.*; import org.easymock.EasyMock; import org.easymock.IMocksControl; -import org.easymock.MockControl; import com.mockrunner.jdbc.PreparedStatementResultSetHandler; import com.mockrunner.mock.jdbc.MockConnection; @@ -34,6 +33,7 @@ import static org.easymock.EasyMock.anyInt; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.expectLastCall; import static org.easymock.classextension.EasyMock.createControl; import static org.easymock.classextension.EasyMock.createStrictControl; @@ -205,28 +205,21 @@ public void testDoMigrationsWithLockRace() throws Exception { h.prepareGlobalResultSet(rs); - MockControl mockControl = MockControl.createStrictControl(PatchInfoStore.class); - PatchInfoStore patchStore = (PatchInfoStore) mockControl.getMock(); + IMocksControl mockControl = createStrictControl(); + PatchInfoStore patchStore = mockControl.createMock(PatchInfoStore.class); // First they see if it is locked, and it is, so they spin - patchStore.isPatchStoreLocked(); - mockControl.setReturnValue(true); + expect(patchStore.isPatchStoreLocked()).andReturn(true); // Second they see if it is locked again, and it isn't, so they try and fail and spin - patchStore.isPatchStoreLocked(); - mockControl.setReturnValue(false); - patchStore.getPatchLevel(); - mockControl.setReturnValue(0); + expect(patchStore.isPatchStoreLocked()).andReturn(false); + expect(patchStore.getPatchLevel()).andReturn(0); patchStore.lockPatchStore(); - mockControl.setThrowable(new IllegalStateException("The table is already locked")); + expectLastCall().andThrow(new IllegalStateException("The table is already locked")); // Finally they see if it is locked again, and it isn't, and it works - patchStore.isPatchStoreLocked(); - mockControl.setReturnValue(false); - - - patchStore.getPatchLevel(); - mockControl.setReturnValue(2, MockControl.ONE_OR_MORE); + expect(patchStore.isPatchStoreLocked()).andReturn(false); + expect(patchStore.getPatchLevel()).andReturn(2).atLeastOnce(); patchStore.lockPatchStore(); IMocksControl migrationRunnerStrategyControl = createStrictControl(); @@ -266,27 +259,21 @@ public void testLockOverride() throws Exception { h.prepareGlobalResultSet(rs); - MockControl mockControl = MockControl.createStrictControl(PatchInfoStore.class); - PatchInfoStore patchStore = (PatchInfoStore) mockControl.getMock(); + IMocksControl mockControl = createStrictControl(); + PatchInfoStore patchStore = (PatchInfoStore) mockControl.createMock(PatchInfoStore.class); // First they see if it is locked three times, and it is, so they spin - patchStore.isPatchStoreLocked(); - mockControl.setReturnValue(true); - patchStore.isPatchStoreLocked(); - mockControl.setReturnValue(true); - patchStore.isPatchStoreLocked(); - mockControl.setReturnValue(true); - patchStore.isPatchStoreLocked(); - mockControl.setReturnValue(true); + expect(patchStore.isPatchStoreLocked()).andReturn(true); + expect(patchStore.isPatchStoreLocked()).andReturn(true); + expect(patchStore.isPatchStoreLocked()).andReturn(true); + expect(patchStore.isPatchStoreLocked()).andReturn(true); // after the third time, they unlock it patchStore.unlockPatchStore(); // now the lock succeeds - patchStore.isPatchStoreLocked(); - mockControl.setReturnValue(false); - patchStore.getPatchLevel(); - mockControl.setReturnValue(2); + expect(patchStore.isPatchStoreLocked()).andReturn(false); + expect(patchStore.getPatchLevel()).andReturn(2); patchStore.lockPatchStore(); IMocksControl migrationRunnerStrategyControl = createStrictControl(); @@ -340,32 +327,30 @@ public void testMigrationSuccessfulDoesNotOverWritePatchLevel() throws Migration int node2PatchLevel = 0; // create mocks - MockControl node1ContextControl = MockControl.createControl(JdbcMigrationContext.class); - MockControl node2ContextControl = MockControl.createControl(JdbcMigrationContext.class); - JdbcMigrationContext node1Context = (JdbcMigrationContext) node1ContextControl.getMock(); - JdbcMigrationContext node2Context = (JdbcMigrationContext) node2ContextControl.getMock(); + IMocksControl node1ContextControl = createControl(); + IMocksControl node2ContextControl = createControl(); + JdbcMigrationContext node1Context = node1ContextControl.createMock(JdbcMigrationContext.class); + JdbcMigrationContext node2Context = node2ContextControl.createMock(JdbcMigrationContext.class); - MockControl node1PatchInfoStoreControl = MockControl.createControl(PatchInfoStore.class); - MockControl node2PatchInfoStoreControl = MockControl.createControl(PatchInfoStore.class); - PatchInfoStore node1PatchInfoStore = (PatchInfoStore) node1PatchInfoStoreControl.getMock(); - PatchInfoStore node2PatchInfoStore = (PatchInfoStore) node2PatchInfoStoreControl.getMock(); + IMocksControl node1PatchInfoStoreControl = createControl(); + IMocksControl node2PatchInfoStoreControl = createControl(); + PatchInfoStore node1PatchInfoStore = node1PatchInfoStoreControl.createMock(PatchInfoStore.class); + PatchInfoStore node2PatchInfoStore = node2PatchInfoStoreControl.createMock(PatchInfoStore.class); LinkedHashMap contexts = new LinkedHashMap(); contexts.put(node1Context, node1PatchInfoStore); contexts.put(node2Context, node2PatchInfoStore); launcher.setContexts(contexts); - MockControl taskControl = MockControl.createControl(RollbackableMigrationTask.class); - MockControl contextControl = MockControl.createControl(MigrationContext.class); - RollbackableMigrationTask task = (RollbackableMigrationTask) taskControl.getMock(); - MigrationContext context = (MigrationContext) contextControl.getMock(); + IMocksControl taskControl = createControl(); + IMocksControl contextControl = createControl(); + RollbackableMigrationTask task = taskControl.createMock(RollbackableMigrationTask.class); + MigrationContext context = contextControl.createMock(MigrationContext.class); // set expectations // the migration successful event is for patch level 1 - task.getLevel(); - taskControl.setDefaultReturnValue(new Integer(migrationSuccessfulPatchLevel)); - task.getName(); - taskControl.setDefaultReturnValue("patch001_test.sql"); + expect(task.getName()).andReturn("patch001_test.sql"); + expect(task.getLevel()).andReturn(new Integer(migrationSuccessfulPatchLevel)); taskControl.replay(); @@ -373,19 +358,15 @@ public void testMigrationSuccessfulDoesNotOverWritePatchLevel() throws Migration MigrationRunnerStrategy migrationStrategyMock = migrationStrategyControl.createMock(MigrationRunnerStrategy.class); // node1 is at patchlevel 2 - node1PatchInfoStore.getPatchLevel(); - node1PatchInfoStoreControl.setDefaultReturnValue(node1PatchLevel); + expect(node1PatchInfoStore.getPatchLevel()).andReturn(node1PatchLevel).anyTimes(); node1PatchInfoStoreControl.replay(); expect(migrationStrategyMock.shouldMigrationRun(1, node1PatchInfoStore)).andReturn(false); // node2 is at patchlevel 1 - node2PatchInfoStore.getPatchLevel(); - node2PatchInfoStoreControl.setDefaultReturnValue(node2PatchLevel); - expect(migrationStrategyMock.shouldMigrationRun(1, node2PatchInfoStore)).andReturn(true); - - node2PatchInfoStore.updatePatchLevel(migrationSuccessfulPatchLevel); - node2PatchInfoStoreControl.setVoidCallable(); + expectLastCall().atLeastOnce(); + expect(node2PatchInfoStore.getPatchLevel()).andReturn(node2PatchLevel).anyTimes(); + expect(migrationStrategyMock.shouldMigrationRun(1, node2PatchInfoStore)).andReturn(true); node2PatchInfoStoreControl.replay(); migrationStrategyControl.replay(); diff --git a/src/test/java/com/tacitknowledge/util/migration/jdbc/PatchTableTest.java b/src/test/java/com/tacitknowledge/util/migration/jdbc/PatchTableTest.java index 081affe..0c35812 100644 --- a/src/test/java/com/tacitknowledge/util/migration/jdbc/PatchTableTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/jdbc/PatchTableTest.java @@ -19,7 +19,7 @@ import java.util.HashSet; import java.util.Set; -import org.easymock.MockControl; +import org.easymock.classextension.IMocksControl; import com.mockrunner.jdbc.JDBCTestCaseAdapter; import com.mockrunner.jdbc.PreparedStatementResultSetHandler; @@ -28,6 +28,8 @@ import com.tacitknowledge.util.migration.MigrationException; import com.tacitknowledge.util.migration.jdbc.util.ConnectionWrapperDataSource; +import static org.easymock.classextension.EasyMock.createStrictControl; +import static org.easymock.EasyMock.expect; /** * Out-of-container tests the PatchTable class using a * mock JDBC driver. @@ -53,7 +55,7 @@ public class PatchTableTest extends JDBCTestCaseAdapter /** Used to specify different statements in the tests */ private PreparedStatementResultSetHandler handler = null; - private MockControl contextControl; + private IMocksControl contextControl; private JdbcMigrationContext mockContext; @@ -82,8 +84,8 @@ protected void setUp() throws Exception context.setDatabaseType(new DatabaseType("hsqldb")); table = new PatchTable(context); - contextControl = MockControl.createControl(JdbcMigrationContext.class); - mockContext = (JdbcMigrationContext) contextControl.getMock(); + contextControl = createStrictControl(); + mockContext = contextControl.createMock(JdbcMigrationContext.class); } /** @@ -129,13 +131,9 @@ public void testCreatePatchesTable() throws Exception */ public void testCreatePatchesTableWithoutConnection() throws SQLException { - // setup mock calls - mockContext.getDatabaseType(); - contextControl.setReturnValue(new DatabaseType("postgres"), MockControl.ONE_OR_MORE); - - mockContext.getConnection(); - contextControl.setThrowable(new SQLException("An exception during getConnection")); + expect(mockContext.getDatabaseType()).andReturn(new DatabaseType("postgres")).atLeastOnce(); + expect(mockContext.getConnection()).andThrow(new SQLException("An exception during getConnection")); contextControl.replay(); table = new PatchTable(mockContext); @@ -361,11 +359,8 @@ public void testIsPatchApplied() throws MigrationException public void testMigrationExceptionIsThrownIfSQLExceptionHappens() throws SQLException { - mockContext.getDatabaseType(); - contextControl.setReturnValue(new DatabaseType("postgres"), MockControl.ONE_OR_MORE); - - mockContext.getConnection(); - contextControl.setThrowable(new SQLException("An exception during getConnection")); + expect(mockContext.getDatabaseType()).andReturn(new DatabaseType("postgres")).atLeastOnce(); + expect(mockContext.getConnection()).andThrow(new SQLException("An exception during getConnection")); contextControl.replay(); table = new PatchTable(mockContext); diff --git a/src/test/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTaskTest.java b/src/test/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTaskTest.java index 9dc83b8..6530e5e 100644 --- a/src/test/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTaskTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTaskTest.java @@ -27,7 +27,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.easymock.MockControl; +import org.easymock.IMocksControl; import com.mockrunner.jdbc.JDBCTestCaseAdapter; import com.mockrunner.mock.jdbc.MockConnection; @@ -36,6 +36,12 @@ import com.tacitknowledge.util.migration.RollbackableMigrationTask; import com.tacitknowledge.util.migration.jdbc.util.ConnectionWrapperDataSource; +import static org.easymock.EasyMock.anyObject; +import static org.easymock.EasyMock.expectLastCall; +import static org.easymock.classextension.EasyMock.createStrictControl; +import static org.easymock.classextension.EasyMock.createControl; +import static org.easymock.EasyMock.expect; + /** * Tests the SqlScriptMigrationTask. * @@ -274,34 +280,25 @@ public void testSybasePatchesCommitsOnEveryStatement() throws IOException, int numStatements = task.getSqlStatements(context).size(); // setup mocks to verify commits are called - MockControl dataSourceControl = MockControl - .createControl(DataSource.class); - DataSource dataSource = (DataSource) dataSourceControl.getMock(); + IMocksControl dataSourceControl = createStrictControl(); + DataSource dataSource = dataSourceControl.createMock(DataSource.class); context.setDataSource(dataSource); - MockControl connectionControl = MockControl - .createControl(Connection.class); - Connection connection = (Connection) connectionControl.getMock(); + IMocksControl connectionControl = createControl(); + Connection connection = connectionControl.createMock(Connection.class); - dataSourceControl.expectAndReturn(dataSource.getConnection(), - connection); + expect(dataSource.getConnection()).andReturn(connection); - MockControl statementControl = MockControl - .createControl(Statement.class); - Statement statement = (Statement) statementControl.getMock(); - statement.execute(""); - statementControl.setMatcher(MockControl.ALWAYS_MATCHER); - statementControl.setReturnValue(true, MockControl.ONE_OR_MORE); - statementControl.expectAndReturn(statement.isClosed(), false, MockControl.ONE_OR_MORE); + IMocksControl statementControl = createControl(); + Statement statement = statementControl.createMock(Statement.class); + expect(statement.execute((String) anyObject())).andReturn(true).atLeastOnce(); + expect(statement.isClosed()).andReturn(false).atLeastOnce(); statement.close(); - statementControl.setVoidCallable(MockControl.ONE_OR_MORE); - - connectionControl.expectAndReturn(connection.isClosed(), false, - MockControl.ONE_OR_MORE); - connectionControl.expectAndReturn(connection.createStatement(), - statement, numStatements); - connectionControl.expectAndReturn(connection.getAutoCommit(), false, - MockControl.ONE_OR_MORE); + expectLastCall().atLeastOnce(); + + expect(connection.isClosed()).andReturn(false).atLeastOnce(); + expect(connection.createStatement()).andReturn(statement).anyTimes(); + expect(connection.getAutoCommit()).andReturn(false).atLeastOnce(); connection.commit(); /* * Magic Number 4 derived from the assumption that the fixture sql @@ -315,7 +312,7 @@ public void testSybasePatchesCommitsOnEveryStatement() throws IOException, * Therefore, if you add more illegal statements to the fixture, add 2 * more commit call's for each illegal statement. */ - connectionControl.setVoidCallable(4); + expectLastCall().times(4); dataSourceControl.replay(); connectionControl.replay();