X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fcompat%2FPreLithiumTransactionProxyTest.java;h=6ca17838d0bbd71e97c38f9e03678c17ddf570bb;hp=ca342b960a8749d78ae5aa0b1879b06ecc61110b;hb=ecccb6d5b43dd73aef0d2d19349d19ee9b4728f7;hpb=559c2b6afa7714572e01b52029acaa4d5a7315e2 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/compat/PreLithiumTransactionProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/compat/PreLithiumTransactionProxyTest.java index ca342b960a..6ca17838d0 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/compat/PreLithiumTransactionProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/compat/PreLithiumTransactionProxyTest.java @@ -8,28 +8,27 @@ package org.opendaylight.controller.cluster.datastore.compat; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.argThat; import static org.mockito.Matchers.eq; import static org.mockito.Matchers.isA; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import static org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType.READ_WRITE; -import static org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType.WRITE_ONLY; +import static org.opendaylight.controller.cluster.datastore.TransactionType.READ_WRITE; +import static org.opendaylight.controller.cluster.datastore.TransactionType.WRITE_ONLY; import akka.actor.ActorRef; import akka.dispatch.Futures; import akka.util.Timeout; import com.google.common.base.Optional; +import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; -import org.junit.Ignore; +import java.util.concurrent.TimeoutException; import org.junit.Test; import org.mockito.ArgumentMatcher; import org.mockito.Mockito; import org.opendaylight.controller.cluster.datastore.AbstractThreePhaseCommitCohort; import org.opendaylight.controller.cluster.datastore.AbstractTransactionProxyTest; import org.opendaylight.controller.cluster.datastore.DataStoreVersions; -import org.opendaylight.controller.cluster.datastore.ThreePhaseCommitCohortProxy; import org.opendaylight.controller.cluster.datastore.TransactionProxy; import org.opendaylight.controller.cluster.datastore.messages.CanCommitTransaction; import org.opendaylight.controller.cluster.datastore.messages.CanCommitTransactionReply; @@ -60,7 +59,7 @@ import scala.concurrent.Future; */ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest { - private WriteData eqLegacyWriteData(final NormalizedNode nodeToWrite) { + private static WriteData eqLegacyWriteData(final NormalizedNode nodeToWrite) { ArgumentMatcher matcher = new ArgumentMatcher() { @Override public boolean matches(Object argument) { @@ -76,7 +75,7 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest return argThat(matcher); } - private MergeData eqLegacyMergeData(final NormalizedNode nodeToWrite) { + private static MergeData eqLegacyMergeData(final NormalizedNode nodeToWrite) { ArgumentMatcher matcher = new ArgumentMatcher() { @Override public boolean matches(Object argument) { @@ -92,7 +91,7 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest return argThat(matcher); } - private DeleteData eqLegacyDeleteData(final YangInstanceIdentifier expPath) { + private static DeleteData eqLegacyDeleteData(final YangInstanceIdentifier expPath) { ArgumentMatcher matcher = new ArgumentMatcher() { @Override public boolean matches(Object argument) { @@ -104,7 +103,7 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest return argThat(matcher); } - private CanCommitTransaction eqCanCommitTransaction(final String transactionID) { + private static CanCommitTransaction eqCanCommitTransaction(final String transactionID) { ArgumentMatcher matcher = new ArgumentMatcher() { @Override public boolean matches(Object argument) { @@ -116,7 +115,7 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest return argThat(matcher); } - private CommitTransaction eqCommitTransaction(final String transactionID) { + private static CommitTransaction eqCommitTransaction(final String transactionID) { ArgumentMatcher matcher = new ArgumentMatcher() { @Override public boolean matches(Object argument) { @@ -128,7 +127,7 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest return argThat(matcher); } - private Future readySerializedTxReply(String path, short version) { + private static Future readySerializedTxReply(String path, short version) { return Futures.successful(new ReadyTransactionReply(path, version).toSerializable()); } @@ -156,7 +155,7 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest doReturn(actorRef.path().toString()).when(mockActorContext).resolvePath(eq(actorRef.path().toString()), eq(actorRef.path().toString())); - TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, READ_WRITE); + TransactionProxy transactionProxy = new TransactionProxy(mockComponentFactory, READ_WRITE); Optional> readOptional = transactionProxy.read(TestModel.TEST_PATH). get(5, TimeUnit.SECONDS); @@ -174,13 +173,20 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest verifyCohortFutures(proxy, getSystem().actorSelection(actorRef.path())); + doThreePhaseCommit(actorRef, transactionProxy, proxy); + + return actorRef; + } + + private void doThreePhaseCommit(ActorRef actorRef, TransactionProxy transactionProxy, + AbstractThreePhaseCommitCohort proxy) throws InterruptedException, ExecutionException, TimeoutException { doReturn(Futures.successful(CanCommitTransactionReply.YES.toSerializable())).when(mockActorContext). - executeOperationAsync(eq(actorSelection(actorRef)), - eqCanCommitTransaction(transactionProxy.getIdentifier().toString()), any(Timeout.class)); + executeOperationAsync(eq(actorSelection(actorRef)), eqCanCommitTransaction( + transactionProxy.getIdentifier().toString()), any(Timeout.class)); doReturn(Futures.successful(new CommitTransactionReply().toSerializable())).when(mockActorContext). - executeOperationAsync(eq(actorSelection(actorRef)), - eqCommitTransaction(transactionProxy.getIdentifier().toString()), any(Timeout.class)); + executeOperationAsync(eq(actorSelection(actorRef)), eqCommitTransaction( + transactionProxy.getIdentifier().toString()), any(Timeout.class)); Boolean canCommit = proxy.canCommit().get(3, TimeUnit.SECONDS); assertEquals("canCommit", true, canCommit.booleanValue()); @@ -189,7 +195,11 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest proxy.commit().get(3, TimeUnit.SECONDS); - return actorRef; + verify(mockActorContext).executeOperationAsync(eq(actorSelection(actorRef)), eqCanCommitTransaction( + transactionProxy.getIdentifier().toString()), any(Timeout.class)); + + verify(mockActorContext).executeOperationAsync(eq(actorSelection(actorRef)), eqCommitTransaction( + transactionProxy.getIdentifier().toString()), any(Timeout.class)); } @Test @@ -209,9 +219,6 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest } @Test - @Ignore - // FIXME: disabled until we can get the primary shard version from the ShardManager as we now skip - // creating transaction actors for write-only Tx's. public void testWriteOnlyCompatibilityWithHeliumR2Version() throws Exception { short version = DataStoreVersions.HELIUM_2_VERSION; ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), WRITE_ONLY, version, @@ -225,19 +232,16 @@ public class PreLithiumTransactionProxyTest extends AbstractTransactionProxyTest doReturn(readySerializedTxReply(actorRef.path().toString(), version)).when(mockActorContext).executeOperationAsync( eq(actorSelection(actorRef)), isA(ReadyTransaction.SERIALIZABLE_CLASS)); - doReturn(actorRef.path().toString()).when(mockActorContext).resolvePath(eq(actorRef.path().toString()), - eq(actorRef.path().toString())); - - TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, WRITE_ONLY); + TransactionProxy transactionProxy = new TransactionProxy(mockComponentFactory, WRITE_ONLY); transactionProxy.write(TestModel.TEST_PATH, testNode); DOMStoreThreePhaseCommitCohort ready = transactionProxy.ready(); - assertTrue(ready instanceof ThreePhaseCommitCohortProxy); - - ThreePhaseCommitCohortProxy proxy = (ThreePhaseCommitCohortProxy) ready; + AbstractThreePhaseCommitCohort proxy = (AbstractThreePhaseCommitCohort) ready; verifyCohortFutures(proxy, getSystem().actorSelection(actorRef.path())); + + doThreePhaseCommit(actorRef, transactionProxy, proxy); } }