new generalization complete with initial test
Project: http://git-wip-us.apache.org/repos/asf/curator/repo Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/c3adc953 Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/c3adc953 Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/c3adc953 Branch: refs/heads/CURATOR-421 Commit: c3adc95315413ee5c0be861b528e80a380444e5b Parents: 1a15582 Author: randgalt <[email protected]> Authored: Fri Jul 14 09:36:51 2017 -0500 Committer: randgalt <[email protected]> Committed: Fri Jul 14 09:36:51 2017 -0500 ---------------------------------------------------------------------- .../async/modeled/migrations/MigrationManager.java | 10 +++++----- .../modeled/migrations/TestMigrationManager.java | 17 +++++++---------- 2 files changed, 12 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/curator/blob/c3adc953/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 47adb1e..e59b7bf 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 @@ -147,13 +147,13 @@ public class MigrationManager private CompletionStage<Void> applyMetaDataAfterEnsure(List<Migration> toBeApplied, ModeledFramework<MetaData> metaDataClient) { - List<CuratorOp> operations = new ArrayList<>(); - for ( Migration migration : toBeApplied ) - { + List<CompletableFuture<Object>> stages = toBeApplied.stream().map(migration -> { + List<CuratorOp> operations = new ArrayList<>(); operations.addAll(migration.operations()); MetaData thisMetaData = new MetaData(migration.id(), migration.version()); operations.add(metaDataClient.child(META_DATA_NODE_NAME).createOp(thisMetaData)); - } - return client.transaction().forOperations(operations).thenApply(__ -> null); + return client.transaction().forOperations(operations).thenApply(__ -> null).toCompletableFuture(); + }).collect(Collectors.toList()); + return CompletableFuture.allOf(stages.toArray(new CompletableFuture[stages.size()])); } } http://git-wip-us.apache.org/repos/asf/curator/blob/c3adc953/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 daf69cd..9fcd53c 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 @@ -99,11 +99,12 @@ public class TestMigrationManager extends CompletableBaseClassForTests v2Spec = ModelSpec.builder(modelPath, JacksonModelSerializer.build(ModelV2.class)).build(); v3Spec = ModelSpec.builder(modelPath, JacksonModelSerializer.build(ModelV3.class)).build(); - CuratorOp v1op = ModeledFramework.wrap(client, v1Spec).createOp(new ModelV1("Test")); + 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, () -> Collections.singletonList(v1op)); + 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)); @@ -123,18 +124,14 @@ public class TestMigrationManager extends CompletableBaseClassForTests @Test public void testBasic() throws Exception { - ModeledFramework<ModelV1> v1Client = ModeledFramework.wrap(client, v1Spec); - ModelV1 v1 = new ModelV1("John Galt"); - complete(v1Client.child("1").set(v1)); - MigrationManager manager = new MigrationManager(client, ZPath.parse("/locks"), JacksonModelSerializer.build(MetaData.class), executor, Duration.ofMinutes(10)); complete(manager.migrate(migrationSet)); ModeledFramework<ModelV3> v3Client = ModeledFramework.wrap(client, v3Spec); - complete(v3Client.child("1").read(), (m, e) -> { - Assert.assertEquals(m.getAge(), 64); - Assert.assertEquals(m.getFirstName(), "John"); - Assert.assertEquals(m.getLastName(), "Galt"); + complete(v3Client.read(), (m, e) -> { + Assert.assertEquals(m.getAge(), 30); + Assert.assertEquals(m.getFirstName(), "One"); + Assert.assertEquals(m.getLastName(), "Two"); }); } }
