Repository: curator
Updated Branches:
  refs/heads/CURATOR-421 909ed9aed -> f7e728b99


more testing, bug fixes


Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/f7e728b9
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/f7e728b9
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/f7e728b9

Branch: refs/heads/CURATOR-421
Commit: f7e728b99b8bf8cf1e0b2d68da1c3bf10e75d52a
Parents: 909ed9a
Author: randgalt <[email protected]>
Authored: Fri Jul 14 17:06:42 2017 -0500
Committer: randgalt <[email protected]>
Committed: Fri Jul 14 17:06:42 2017 -0500

----------------------------------------------------------------------
 .../framework/imps/ExtractingCuratorOp.java     |  2 +-
 .../x/async/migrations/MigrationManager.java    |  7 +++
 .../async/migrations/TestMigrationManager.java  | 53 ++++++++++++++++++++
 3 files changed, 61 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/f7e728b9/curator-framework/src/main/java/org/apache/curator/framework/imps/ExtractingCuratorOp.java
----------------------------------------------------------------------
diff --git 
a/curator-framework/src/main/java/org/apache/curator/framework/imps/ExtractingCuratorOp.java
 
b/curator-framework/src/main/java/org/apache/curator/framework/imps/ExtractingCuratorOp.java
index 58a1572..5b179e7 100644
--- 
a/curator-framework/src/main/java/org/apache/curator/framework/imps/ExtractingCuratorOp.java
+++ 
b/curator-framework/src/main/java/org/apache/curator/framework/imps/ExtractingCuratorOp.java
@@ -49,7 +49,7 @@ public class ExtractingCuratorOp implements CuratorOp
 
     public void addToDigest(MessageDigest digest)
     {
-
+        record.addToDigest(digest);
     }
 
     private void validate()

http://git-wip-us.apache.org/repos/asf/curator/blob/f7e728b9/curator-x-async/src/main/java/org/apache/curator/x/async/migrations/MigrationManager.java
----------------------------------------------------------------------
diff --git 
a/curator-x-async/src/main/java/org/apache/curator/x/async/migrations/MigrationManager.java
 
b/curator-x-async/src/main/java/org/apache/curator/x/async/migrations/MigrationManager.java
index 676eef6..56e7f04 100644
--- 
a/curator-x-async/src/main/java/org/apache/curator/x/async/migrations/MigrationManager.java
+++ 
b/curator-x-async/src/main/java/org/apache/curator/x/async/migrations/MigrationManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.curator.x.async.migrations;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Throwables;
 import org.apache.curator.framework.api.transaction.CuratorOp;
 import org.apache.curator.framework.imps.ExtractingCuratorOp;
@@ -39,6 +40,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionStage;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 import static org.apache.curator.x.async.AsyncWrappers.*;
@@ -185,8 +187,13 @@ public class MigrationManager
             .thenCompose(__ -> applyMetaDataAfterEnsure(set, toBeApplied, 
thisMetaDataPath));
     }
 
+    @VisibleForTesting
+    volatile AtomicInteger debugCount = null;
+
     private CompletionStage<Void> applyMetaDataAfterEnsure(MigrationSet set, 
List<Migration> toBeApplied, String thisMetaDataPath)
     {
+        debugCount.incrementAndGet();
+
         String metaDataBasePath = ZKPaths.makePath(thisMetaDataPath, 
META_DATA_NODE_NAME);
         List<CompletableFuture<Object>> stages = 
toBeApplied.stream().map(migration -> {
             List<CuratorOp> operations = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/curator/blob/f7e728b9/curator-x-async/src/test/java/org/apache/curator/x/async/migrations/TestMigrationManager.java
----------------------------------------------------------------------
diff --git 
a/curator-x-async/src/test/java/org/apache/curator/x/async/migrations/TestMigrationManager.java
 
b/curator-x-async/src/test/java/org/apache/curator/x/async/migrations/TestMigrationManager.java
index 19740d6..3522911 100644
--- 
a/curator-x-async/src/test/java/org/apache/curator/x/async/migrations/TestMigrationManager.java
+++ 
b/curator-x-async/src/test/java/org/apache/curator/x/async/migrations/TestMigrationManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.curator.x.async.migrations;
 
+import com.google.common.base.Throwables;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.framework.api.transaction.CuratorOp;
@@ -41,6 +42,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicInteger;
 
 public class TestMigrationManager extends CompletableBaseClassForTests
 {
@@ -79,6 +81,7 @@ public class TestMigrationManager extends 
CompletableBaseClassForTests
 
         executor = Executors.newCachedThreadPool();
         manager = new MigrationManager(client, "/migrations/locks", 
"/migrations/metadata", executor, Duration.ofMinutes(10));
+        manager.debugCount = new AtomicInteger();
     }
 
     @AfterMethod
@@ -106,6 +109,10 @@ public class TestMigrationManager extends 
CompletableBaseClassForTests
             Assert.assertEquals(m.getFirstName(), "One");
             Assert.assertEquals(m.getLastName(), "Two");
         });
+
+        int count = manager.debugCount.get();
+        complete(manager.migrate(migrationSet));
+        Assert.assertEquals(manager.debugCount.get(), count);   // second call 
should do nothing
     }
 
     @Test
@@ -165,4 +172,50 @@ public class TestMigrationManager extends 
CompletableBaseClassForTests
 
         Assert.assertNull(client.unwrap().checkExists().forPath("/main"));
     }
+
+    @Test
+    public void testChecksumDataError() throws Exception
+    {
+        CuratorOp op1 = client.transactionOp().create().forPath("/test");
+        CuratorOp op2 = client.transactionOp().create().forPath("/test/bar", 
"first".getBytes());
+        Migration migration = () -> Arrays.asList(op1, op2);
+        MigrationSet migrationSet = MigrationSet.build("1", 
Collections.singletonList(migration));
+        complete(manager.migrate(migrationSet));
+
+        CuratorOp op2Changed = 
client.transactionOp().create().forPath("/test/bar", "second".getBytes());
+        migration = () -> Arrays.asList(op1, op2Changed);
+        migrationSet = MigrationSet.build("1", 
Collections.singletonList(migration));
+        try
+        {
+            complete(manager.migrate(migrationSet));
+            Assert.fail("Should throw");
+        }
+        catch ( Throwable e )
+        {
+            Assert.assertTrue(Throwables.getRootCause(e) instanceof 
MigrationException);
+        }
+    }
+
+    @Test
+    public void testChecksumPathError() throws Exception
+    {
+        CuratorOp op1 = client.transactionOp().create().forPath("/test2");
+        CuratorOp op2 = client.transactionOp().create().forPath("/test2/bar");
+        Migration migration = () -> Arrays.asList(op1, op2);
+        MigrationSet migrationSet = MigrationSet.build("1", 
Collections.singletonList(migration));
+        complete(manager.migrate(migrationSet));
+
+        CuratorOp op2Changed = 
client.transactionOp().create().forPath("/test/bar");
+        migration = () -> Arrays.asList(op1, op2Changed);
+        migrationSet = MigrationSet.build("1", 
Collections.singletonList(migration));
+        try
+        {
+            complete(manager.migrate(migrationSet));
+            Assert.fail("Should throw");
+        }
+        catch ( Throwable e )
+        {
+            Assert.assertTrue(Throwables.getRootCause(e) instanceof 
MigrationException);
+        }
+    }
 }

Reply via email to