You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2017/07/14 22:06:47 UTC
curator git commit: more testing, bug fixes
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 <ra...@apache.org>
Authored: Fri Jul 14 17:06:42 2017 -0500
Committer: randgalt <ra...@apache.org>
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);
+ }
+ }
}