X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FShardDataTreeMocking.java;h=e2dc8143e5e16a72a0c2f9ba3d47cc96d915ff78;hb=64b9093c2c9ce670b92f2d0ea44c76dc9a385b5a;hp=dff416258a50b43fb2d279c3b9674e3cc359534d;hpb=a47dd7a5d21ca68804a6d0e2e3ca765f223c2ef4;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeMocking.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeMocking.java index dff416258a..e2dc8143e5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeMocking.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeMocking.java @@ -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 coordinatedCanCommit(final ShardDataTreeCohort cohort) { + final FutureCallback 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 callback = mockCallback(); doNothing().when(callback).onSuccess(any(DataTreeCandidate.class)); @@ -52,6 +65,14 @@ public final class ShardDataTreeMocking { return cohort; } + public static FutureCallback coordinatedPreCommit(final ShardDataTreeCohort cohort) { + final FutureCallback 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 callback = mockCallback(); doNothing().when(callback).onSuccess(any(UnsignedLong.class)); @@ -62,6 +83,37 @@ public final class ShardDataTreeMocking { return cohort; } + public static FutureCallback coordinatedCommit(final ShardDataTreeCohort cohort) { + final FutureCallback callback = mockCallback(); + doNothing().when(callback).onSuccess(any(UnsignedLong.class)); + doNothing().when(callback).onFailure(any(Throwable.class)); + cohort.commit(callback); + return callback; + } + + public static FutureCallback immediate3PhaseCommit(final ShardDataTreeCohort cohort) { + final FutureCallback commitCallback = mockCallback(); + doNothing().when(commitCallback).onSuccess(any(UnsignedLong.class)); + doNothing().when(commitCallback).onFailure(any(Throwable.class)); + + final FutureCallback preCommitCallback = mockCallback(); + doAnswer(invocation -> { + cohort.commit(commitCallback); + return null; + }).when(preCommitCallback).onSuccess(any(DataTreeCandidate.class)); + doNothing().when(preCommitCallback).onFailure(any(Throwable.class)); + + final FutureCallback 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 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()); + } }