more testing
Project: http://git-wip-us.apache.org/repos/asf/curator/repo Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/bc7bf4ac Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/bc7bf4ac Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/bc7bf4ac Branch: refs/heads/CURATOR-421 Commit: bc7bf4ace6dcc186352f1c3731e1cae69cef2e1f Parents: c3adc95 Author: randgalt <[email protected]> Authored: Fri Jul 14 10:08:04 2017 -0500 Committer: randgalt <[email protected]> Committed: Fri Jul 14 10:08:04 2017 -0500 ---------------------------------------------------------------------- .../modeled/migrations/MigrationManager.java | 4 +- .../migrations/TestMigrationManager.java | 58 ++++++++++++++++---- 2 files changed, 49 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/curator/blob/bc7bf4ac/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/migrations/MigrationManager.java ---------------------------------------------------------------------- diff --git a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/migrations/MigrationManager.java b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/migrations/MigrationManager.java index e59b7bf..bfb9707 100644 --- a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/migrations/MigrationManager.java +++ b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/migrations/MigrationManager.java @@ -79,7 +79,7 @@ public class MigrationManager { if ( sortedMetaData.size() > set.migrations().size() ) { - throw new MigrationException(set.id(), String.format("More metadata than migrations. Migration ID: %s - MetaData: %s", set.id(), sortedMetaData)); + throw new MigrationException(set.id(), String.format("More metadata than migrations. Migration ID: %s - MigrationSet: %s - MetaData: %s", set.id(), set.migrations(), sortedMetaData)); } int compareSize = Math.min(set.migrations().size(), sortedMetaData.size()); @@ -89,7 +89,7 @@ public class MigrationManager .collect(Collectors.toList()); if ( !compareMigrations.equals(sortedMetaData) ) { - throw new MigrationException(set.id(), String.format("Metadata mismatch. Migration ID: %s - MetaData: %s", set.id(), sortedMetaData)); + throw new MigrationException(set.id(), String.format("Metadata mismatch. Migration ID: %s - MigrationSet: %s - MetaData: %s", set.id(), set.migrations(), sortedMetaData)); } return set.migrations().subList(sortedMetaData.size(), set.migrations().size()); } http://git-wip-us.apache.org/repos/asf/curator/blob/bc7bf4ac/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/migrations/TestMigrationManager.java ---------------------------------------------------------------------- diff --git a/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/migrations/TestMigrationManager.java b/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/migrations/TestMigrationManager.java index 9fcd53c..3fe5de2 100644 --- a/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/migrations/TestMigrationManager.java +++ b/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/migrations/TestMigrationManager.java @@ -48,11 +48,15 @@ import java.util.function.UnaryOperator; public class TestMigrationManager extends CompletableBaseClassForTests { private AsyncCuratorFramework client; - private MigrationSet migrationSet; private ModelSpec<ModelV1> v1Spec; private ModelSpec<ModelV2> v2Spec; private ModelSpec<ModelV3> v3Spec; private ExecutorService executor; + private CuratorOp v1opA; + private CuratorOp v1opB; + private CuratorOp v2op; + private CuratorOp v3op; + private MigrationManager manager; @BeforeMethod @Override @@ -99,17 +103,13 @@ public class TestMigrationManager extends CompletableBaseClassForTests v2Spec = ModelSpec.builder(modelPath, JacksonModelSerializer.build(ModelV2.class)).build(); v3Spec = ModelSpec.builder(modelPath, JacksonModelSerializer.build(ModelV3.class)).build(); - CuratorOp v1opA = client.unwrap().transactionOp().create().forPath(v1Spec.path().parent().fullPath()); - CuratorOp v1opB = ModeledFramework.wrap(client, v1Spec).createOp(new ModelV1("Test")); - CuratorOp v2op = ModeledFramework.wrap(client, v2Spec).updateOp(new ModelV2("Test 2", 10)); - CuratorOp v3op = ModeledFramework.wrap(client, v3Spec).updateOp(new ModelV3("One", "Two", 30)); - - Migration m1 = Migration.build("1",1, () -> Arrays.asList(v1opA, v1opB)); - Migration m2 = Migration.build("2",1, () -> Collections.singletonList(v2op)); - Migration m3 = Migration.build("3",1, () -> Collections.singletonList(v3op)); - migrationSet = MigrationSet.build("1", ZPath.parse("/metadata"), Arrays.asList(m1, m2, m3)); + v1opA = client.unwrap().transactionOp().create().forPath(v1Spec.path().parent().fullPath()); + v1opB = ModeledFramework.wrap(client, v1Spec).createOp(new ModelV1("Test")); + v2op = ModeledFramework.wrap(client, v2Spec).updateOp(new ModelV2("Test 2", 10)); + v3op = ModeledFramework.wrap(client, v3Spec).updateOp(new ModelV3("One", "Two", 30)); executor = Executors.newCachedThreadPool(); + manager = new MigrationManager(client, ZPath.parse("/locks"), JacksonModelSerializer.build(MetaData.class), executor, Duration.ofMinutes(10)); } @AfterMethod @@ -124,7 +124,43 @@ public class TestMigrationManager extends CompletableBaseClassForTests @Test public void testBasic() throws Exception { - MigrationManager manager = new MigrationManager(client, ZPath.parse("/locks"), JacksonModelSerializer.build(MetaData.class), executor, Duration.ofMinutes(10)); + Migration m1 = Migration.build("1",1, () -> Arrays.asList(v1opA, v1opB)); + Migration m2 = Migration.build("2",1, () -> Collections.singletonList(v2op)); + Migration m3 = Migration.build("3",1, () -> Collections.singletonList(v3op)); + MigrationSet migrationSet = MigrationSet.build("1", ZPath.parse("/metadata"), Arrays.asList(m1, m2, m3)); + + complete(manager.migrate(migrationSet)); + + ModeledFramework<ModelV3> v3Client = ModeledFramework.wrap(client, v3Spec); + complete(v3Client.read(), (m, e) -> { + Assert.assertEquals(m.getAge(), 30); + Assert.assertEquals(m.getFirstName(), "One"); + Assert.assertEquals(m.getLastName(), "Two"); + }); + } + + @Test + public void testStaged() throws Exception + { + Migration m1 = Migration.build("1",1, () -> Arrays.asList(v1opA, v1opB)); + MigrationSet migrationSet = MigrationSet.build("1", ZPath.parse("/metadata"), Collections.singletonList(m1)); + complete(manager.migrate(migrationSet)); + + ModeledFramework<ModelV1> v1Client = ModeledFramework.wrap(client, v1Spec); + complete(v1Client.read(), (m, e) -> Assert.assertEquals(m.getName(), "Test")); + + Migration m2 = Migration.build("2",1, () -> Collections.singletonList(v2op)); + migrationSet = MigrationSet.build("1", ZPath.parse("/metadata"), Arrays.asList(m1, m2)); + complete(manager.migrate(migrationSet)); + + ModeledFramework<ModelV2> v2Client = ModeledFramework.wrap(client, v2Spec); + complete(v2Client.read(), (m, e) -> { + Assert.assertEquals(m.getName(), "Test 2"); + Assert.assertEquals(m.getAge(), 10); + }); + + Migration m3 = Migration.build("3",1, () -> Collections.singletonList(v3op)); + migrationSet = MigrationSet.build("1", ZPath.parse("/metadata"), Arrays.asList(m1, m2, m3)); complete(manager.migrate(migrationSet)); ModeledFramework<ModelV3> v3Client = ModeledFramework.wrap(client, v3Spec);
