Refactor Register*ListenerReply classes
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / ShardDataTreeMocking.java
index dff416258a50b43fb2d279c3b9674e3cc359534d..e2dc8143e5e16a72a0c2f9ba3d47cc96d915ff78 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.controller.cluster.datastore;
 
 import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.inOrder;
@@ -15,10 +16,14 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
+
 import com.google.common.primitives.UnsignedLong;
 import com.google.common.util.concurrent.FutureCallback;
 import org.mockito.InOrder;
 import org.mockito.invocation.InvocationOnMock;
+import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
+import org.opendaylight.controller.cluster.datastore.persisted.CommitTransactionPayload;
+import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 
 public final class ShardDataTreeMocking {
@@ -42,6 +47,14 @@ public final class ShardDataTreeMocking {
         return cohort;
     }
 
+    public static FutureCallback<Void> coordinatedCanCommit(final ShardDataTreeCohort cohort) {
+        final FutureCallback<Void> callback = mockCallback();
+        doNothing().when(callback).onSuccess(null);
+        doNothing().when(callback).onFailure(any(Throwable.class));
+        cohort.canCommit(callback);
+        return callback;
+    }
+
     public static ShardDataTreeCohort immediatePreCommit(final ShardDataTreeCohort cohort) {
         final FutureCallback<DataTreeCandidate> callback = mockCallback();
         doNothing().when(callback).onSuccess(any(DataTreeCandidate.class));
@@ -52,6 +65,14 @@ public final class ShardDataTreeMocking {
         return cohort;
     }
 
+    public static FutureCallback<DataTreeCandidate> coordinatedPreCommit(final ShardDataTreeCohort cohort) {
+        final FutureCallback<DataTreeCandidate> callback = mockCallback();
+        doNothing().when(callback).onSuccess(any(DataTreeCandidate.class));
+        doNothing().when(callback).onFailure(any(Throwable.class));
+        cohort.preCommit(callback);
+        return callback;
+    }
+
     public static ShardDataTreeCohort immediateCommit(final ShardDataTreeCohort cohort) {
         final FutureCallback<UnsignedLong> callback = mockCallback();
         doNothing().when(callback).onSuccess(any(UnsignedLong.class));
@@ -62,6 +83,37 @@ public final class ShardDataTreeMocking {
         return cohort;
     }
 
+    public static FutureCallback<UnsignedLong> coordinatedCommit(final ShardDataTreeCohort cohort) {
+        final FutureCallback<UnsignedLong> callback = mockCallback();
+        doNothing().when(callback).onSuccess(any(UnsignedLong.class));
+        doNothing().when(callback).onFailure(any(Throwable.class));
+        cohort.commit(callback);
+        return callback;
+    }
+
+    public static FutureCallback<UnsignedLong> immediate3PhaseCommit(final ShardDataTreeCohort cohort) {
+        final FutureCallback<UnsignedLong> commitCallback = mockCallback();
+        doNothing().when(commitCallback).onSuccess(any(UnsignedLong.class));
+        doNothing().when(commitCallback).onFailure(any(Throwable.class));
+
+        final FutureCallback<DataTreeCandidate> preCommitCallback = mockCallback();
+        doAnswer(invocation -> {
+            cohort.commit(commitCallback);
+            return null;
+        }).when(preCommitCallback).onSuccess(any(DataTreeCandidate.class));
+        doNothing().when(preCommitCallback).onFailure(any(Throwable.class));
+
+        final FutureCallback<Void> canCommit = mockCallback();
+        doAnswer(invocation -> {
+            cohort.preCommit(preCommitCallback);
+            return null;
+        }).when(canCommit).onSuccess(null);
+        doNothing().when(canCommit).onFailure(any(Throwable.class));
+
+        cohort.canCommit(canCommit);
+        return commitCallback;
+    }
+
     @SuppressWarnings("unchecked")
     private static <T> Object invokeSuccess(final InvocationOnMock invocation, final T value) {
         invocation.getArgumentAt(0, FutureCallback.class).onSuccess(value);
@@ -111,7 +163,8 @@ public final class ShardDataTreeMocking {
     }
 
     @SuppressWarnings("unchecked")
-    public static ShardDataTreeCohort successfulPreCommit(final ShardDataTreeCohort mock, final DataTreeCandidate candidate) {
+    public static ShardDataTreeCohort successfulPreCommit(final ShardDataTreeCohort mock,
+            final DataTreeCandidate candidate) {
         doAnswer(invocation -> {
             return invokeSuccess(invocation, candidate);
         }).when(mock).preCommit(any(FutureCallback.class));
@@ -139,4 +192,13 @@ public final class ShardDataTreeMocking {
         inOrder.verify(mock).preCommit(any(FutureCallback.class));
         inOrder.verify(mock).commit(any(FutureCallback.class));
     }
+
+    public static void immediatePayloadReplication(final ShardDataTree shardDataTree, final Shard mockShard) {
+        doAnswer(invocation -> {
+            shardDataTree.applyReplicatedPayload(invocation.getArgumentAt(0, TransactionIdentifier.class),
+                    invocation.getArgumentAt(1, Payload.class));
+            return null;
+        }).when(mockShard).persistPayload(any(TransactionIdentifier.class), any(CommitTransactionPayload.class),
+                anyBoolean());
+    }
 }