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%2FAbstractTransactionProxyTest.java;h=0fa716a7ffb5eab6a52c5ffd3a9f3f5e40680772;hp=03edcf57a96027142fe4322100f590b0df563b2a;hb=c796596b5c46b5203c30b143e6282662e66c5642;hpb=488ec1e9d3552ec60c5dd6acb757d6f6c194a672 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/AbstractTransactionProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/AbstractTransactionProxyTest.java index 03edcf57a9..0fa716a7ff 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/AbstractTransactionProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/AbstractTransactionProxyTest.java @@ -26,8 +26,6 @@ import akka.testkit.JavaTestKit; import akka.util.Timeout; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Timer; -import com.google.common.base.Objects; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.CheckedFuture; import com.typesafe.config.Config; @@ -37,6 +35,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.concurrent.TimeUnit; import org.junit.AfterClass; import org.junit.Before; @@ -46,6 +45,8 @@ import org.mockito.ArgumentMatcher; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; +import org.opendaylight.controller.cluster.access.concepts.MemberName; import org.opendaylight.controller.cluster.datastore.DatastoreContext.Builder; import org.opendaylight.controller.cluster.datastore.TransactionProxyTest.TestException; import org.opendaylight.controller.cluster.datastore.config.Configuration; @@ -53,6 +54,7 @@ import org.opendaylight.controller.cluster.datastore.messages.BatchedModificatio import org.opendaylight.controller.cluster.datastore.messages.BatchedModificationsReply; import org.opendaylight.controller.cluster.datastore.messages.CommitTransactionReply; import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction; +import org.opendaylight.controller.cluster.datastore.messages.CreateTransactionReply; import org.opendaylight.controller.cluster.datastore.messages.DataExists; import org.opendaylight.controller.cluster.datastore.messages.DataExistsReply; import org.opendaylight.controller.cluster.datastore.messages.PrimaryShardInfo; @@ -72,10 +74,8 @@ import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; import org.opendaylight.controller.md.cluster.datastore.model.CarsModel; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages.CreateTransactionReply; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -164,7 +164,7 @@ public abstract class AbstractTransactionProxyTest { doReturn(getSystem()).when(mockActorContext).getActorSystem(); doReturn(getSystem().dispatchers().defaultGlobalDispatcher()).when(mockActorContext).getClientDispatcher(); - doReturn(memberName).when(mockActorContext).getCurrentMemberName(); + doReturn(MemberName.forName(memberName)).when(mockActorContext).getCurrentMemberName(); doReturn(new ShardStrategyFactory(configuration)).when(mockActorContext).getShardStrategyFactory(); doReturn(schemaContext).when(mockActorContext).getSchemaContext(); doReturn(new Timeout(operationTimeoutInSeconds, TimeUnit.SECONDS)).when(mockActorContext).getOperationTimeout(); @@ -172,7 +172,8 @@ public abstract class AbstractTransactionProxyTest { doReturn(mockClusterWrapper).when(mockActorContext).getClusterWrapper(); doReturn(dataStoreContextBuilder.build()).when(mockActorContext).getDatastoreContext(); - mockComponentFactory = TransactionContextFactory.create(mockActorContext); + final ClientIdentifier mockClientId = MockIdentifiers.clientIdentifier(getClass(), memberName); + mockComponentFactory = new TransactionContextFactory(mockActorContext, mockClientId); Timer timer = new MetricRegistry().timer("test"); doReturn(timer).when(mockActorContext).getOperationTimer(any(String.class)); @@ -187,9 +188,9 @@ public abstract class AbstractTransactionProxyTest { ArgumentMatcher matcher = new ArgumentMatcher() { @Override public boolean matches(Object argument) { - if(CreateTransaction.SERIALIZABLE_CLASS.equals(argument.getClass())) { + if(CreateTransaction.class.equals(argument.getClass())) { CreateTransaction obj = CreateTransaction.fromSerializable(argument); - return obj.getTransactionId().startsWith(memberName) && + return obj.getTransactionId().startsWith(memberName + ':') && obj.getTransactionType() == type.ordinal(); } @@ -200,18 +201,6 @@ public abstract class AbstractTransactionProxyTest { return argThat(matcher); } - protected DataExists eqSerializedDataExists() { - ArgumentMatcher matcher = new ArgumentMatcher() { - @Override - public boolean matches(Object argument) { - return DataExists.SERIALIZABLE_CLASS.equals(argument.getClass()) && - DataExists.fromSerializable(argument).getPath().equals(TestModel.TEST_PATH); - } - }; - - return argThat(matcher); - } - protected DataExists eqDataExists() { ArgumentMatcher matcher = new ArgumentMatcher() { @Override @@ -224,22 +213,6 @@ public abstract class AbstractTransactionProxyTest { return argThat(matcher); } - protected ReadData eqSerializedReadData() { - return eqSerializedReadData(TestModel.TEST_PATH); - } - - protected ReadData eqSerializedReadData(final YangInstanceIdentifier path) { - ArgumentMatcher matcher = new ArgumentMatcher() { - @Override - public boolean matches(Object argument) { - return ReadData.SERIALIZABLE_CLASS.equals(argument.getClass()) && - ReadData.fromSerializable(argument).getPath().equals(path); - } - }; - - return argThat(matcher); - } - protected ReadData eqReadData() { return eqReadData(TestModel.TEST_PATH); } @@ -265,7 +238,7 @@ public abstract class AbstractTransactionProxyTest { } protected Future dataExistsReply(boolean exists) { - return Futures.successful(DataExistsReply.create(exists)); + return Futures.successful(new DataExistsReply(exists, DataStoreVersions.CURRENT_VERSION)); } protected Future batchedModificationsReply(int count) { @@ -283,7 +256,7 @@ public abstract class AbstractTransactionProxyTest { protected void expectBatchedModifications(ActorRef actorRef, int count) { doReturn(batchedModificationsReply(count)).when(mockActorContext).executeOperationAsync( - eq(actorSelection(actorRef)), isA(BatchedModifications.class)); + eq(actorSelection(actorRef)), isA(BatchedModifications.class), any(Timeout.class)); } protected void expectBatchedModificationsReady(ActorRef actorRef) { @@ -293,22 +266,22 @@ public abstract class AbstractTransactionProxyTest { protected void expectBatchedModificationsReady(ActorRef actorRef, boolean doCommitOnReady) { doReturn(doCommitOnReady ? Futures.successful(new CommitTransactionReply().toSerializable()) : readyTxReply(actorRef.path().toString())).when(mockActorContext).executeOperationAsync( - eq(actorSelection(actorRef)), isA(BatchedModifications.class)); + eq(actorSelection(actorRef)), isA(BatchedModifications.class), any(Timeout.class)); } protected void expectBatchedModifications(int count) { doReturn(batchedModificationsReply(count)).when(mockActorContext).executeOperationAsync( - any(ActorSelection.class), isA(BatchedModifications.class)); + any(ActorSelection.class), isA(BatchedModifications.class), any(Timeout.class)); } protected void expectIncompleteBatchedModifications() { doReturn(incompleteFuture()).when(mockActorContext).executeOperationAsync( - any(ActorSelection.class), isA(BatchedModifications.class)); + any(ActorSelection.class), isA(BatchedModifications.class), any(Timeout.class)); } protected void expectFailedBatchedModifications(ActorRef actorRef) { doReturn(Futures.failed(new TestException())).when(mockActorContext).executeOperationAsync( - eq(actorSelection(actorRef)), isA(BatchedModifications.class)); + eq(actorSelection(actorRef)), isA(BatchedModifications.class), any(Timeout.class)); } protected void expectReadyLocalTransaction(ActorRef actorRef, boolean doCommitOnReady) { @@ -317,12 +290,8 @@ public abstract class AbstractTransactionProxyTest { eq(actorSelection(actorRef)), isA(ReadyLocalTransaction.class), any(Timeout.class)); } - protected CreateTransactionReply createTransactionReply(ActorRef actorRef, int transactionVersion){ - return CreateTransactionReply.newBuilder() - .setTransactionActorPath(actorRef.path().toString()) - .setTransactionId("txn-1") - .setMessageVersion(transactionVersion) - .build(); + protected CreateTransactionReply createTransactionReply(ActorRef actorRef, short transactionVersion){ + return new CreateTransactionReply(actorRef.path().toString(), "txn-1", transactionVersion); } protected ActorRef setupActorContextWithoutInitialCreateTransaction(ActorSystem actorSystem) { @@ -336,7 +305,7 @@ public abstract class AbstractTransactionProxyTest { protected Future primaryShardInfoReply(ActorSystem actorSystem, ActorRef actorRef, short transactionVersion) { return Futures.successful(new PrimaryShardInfo(actorSystem.actorSelection(actorRef.path()), - transactionVersion, Optional.absent())); + transactionVersion)); } protected ActorRef setupActorContextWithoutInitialCreateTransaction(ActorSystem actorSystem, String shardName) { @@ -354,8 +323,6 @@ public abstract class AbstractTransactionProxyTest { doReturn(primaryShardInfoReply(actorSystem, actorRef, transactionVersion)). when(mockActorContext).findPrimaryShardAsync(eq(shardName)); - doReturn(false).when(mockActorContext).isPathLocal(actorRef.path().toString()); - return actorRef; } @@ -421,7 +388,7 @@ public abstract class AbstractTransactionProxyTest { ArgumentCaptor batchedModificationsCaptor = ArgumentCaptor.forClass(BatchedModifications.class); verify(mockActorContext, Mockito.atLeastOnce()).executeOperationAsync( - eq(actorSelection(actorRef)), batchedModificationsCaptor.capture()); + eq(actorSelection(actorRef)), batchedModificationsCaptor.capture(), any(Timeout.class)); List batchedModifications = filterCaptured( batchedModificationsCaptor, BatchedModifications.class); @@ -484,16 +451,15 @@ public abstract class AbstractTransactionProxyTest { } } - for(int i = 0; i < expReplies.length; i++) { - Object expReply = expReplies[i]; + for (Object expReply : expReplies) { boolean found = false; Iterator iter = futureResults.iterator(); while(iter.hasNext()) { Object actual = iter.next(); - if(CommitTransactionReply.SERIALIZABLE_CLASS.isInstance(expReply) && - CommitTransactionReply.SERIALIZABLE_CLASS.isInstance(actual)) { + if(CommitTransactionReply.isSerializedType(expReply) && + CommitTransactionReply.isSerializedType(actual)) { found = true; - } else if(expReply instanceof ActorSelection && Objects.equal(expReply, actual)) { + } else if(expReply instanceof ActorSelection && Objects.equals(expReply, actual)) { found = true; } else if(expReply instanceof Class && ((Class)expReply).isInstance(actual)) { found = true;