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%2FAbstractTransactionProxyTest.java;h=03edcf57a96027142fe4322100f590b0df563b2a;hb=207129172cb981630f955170cb67efceba02df85;hp=a93666f0eecac9effdfa4580944f20b5313e9457;hpb=ffc46de334c8a903844b9f4aff73dc68b2401659;p=controller.git 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 a93666f0ee..03edcf57a9 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 @@ -58,6 +58,7 @@ import org.opendaylight.controller.cluster.datastore.messages.DataExistsReply; import org.opendaylight.controller.cluster.datastore.messages.PrimaryShardInfo; import org.opendaylight.controller.cluster.datastore.messages.ReadData; import org.opendaylight.controller.cluster.datastore.messages.ReadDataReply; +import org.opendaylight.controller.cluster.datastore.messages.ReadyLocalTransaction; import org.opendaylight.controller.cluster.datastore.messages.ReadyTransactionReply; import org.opendaylight.controller.cluster.datastore.modification.AbstractModification; import org.opendaylight.controller.cluster.datastore.modification.Modification; @@ -66,8 +67,8 @@ import org.opendaylight.controller.cluster.datastore.shardstrategy.DefaultShardS import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategyFactory; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; -import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor; import org.opendaylight.controller.cluster.datastore.utils.MockConfiguration; +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; @@ -93,31 +94,33 @@ public abstract class AbstractTransactionProxyTest { private static ActorSystem system; private final Configuration configuration = new MockConfiguration() { + Map strategyMap = ImmutableMap.builder().put( + "junk", new ShardStrategy() { + @Override + public String findShard(YangInstanceIdentifier path) { + return "junk"; + } + }).put( + "cars", new ShardStrategy() { + @Override + public String findShard(YangInstanceIdentifier path) { + return "cars"; + } + }).build(); + @Override - public Map getModuleNameToShardStrategyMap() { - return ImmutableMap.builder().put( - "junk", new ShardStrategy() { - @Override - public String findShard(YangInstanceIdentifier path) { - return "junk"; - } - }).put( - "cars", new ShardStrategy() { - @Override - public String findShard(YangInstanceIdentifier path) { - return "cars"; - } - }).build(); + public ShardStrategy getStrategyForModule(String moduleName) { + return strategyMap.get(moduleName); } @Override - public Optional getModuleNameFromNameSpace(String nameSpace) { + public String getModuleNameFromNameSpace(String nameSpace) { if(TestModel.JUNK_QNAME.getNamespace().toASCIIString().equals(nameSpace)) { - return Optional.of("junk"); + return "junk"; } else if(CarsModel.BASE_QNAME.getNamespace().toASCIIString().equals(nameSpace)){ - return Optional.of("cars"); + return "cars"; } - return Optional.absent(); + return null; } }; @@ -162,6 +165,7 @@ public abstract class AbstractTransactionProxyTest { doReturn(getSystem()).when(mockActorContext).getActorSystem(); doReturn(getSystem().dispatchers().defaultGlobalDispatcher()).when(mockActorContext).getClientDispatcher(); doReturn(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(); doReturn(mockClusterWrapper).when(mockActorContext).getClusterWrapper(); @@ -172,8 +176,6 @@ public abstract class AbstractTransactionProxyTest { Timer timer = new MetricRegistry().timer("test"); doReturn(timer).when(mockActorContext).getOperationTimer(any(String.class)); - - ShardStrategyFactory.setConfiguration(configuration); } protected ActorSystem getSystem() { @@ -239,11 +241,14 @@ public abstract class AbstractTransactionProxyTest { } protected ReadData eqReadData() { + return eqReadData(TestModel.TEST_PATH); + } + + protected ReadData eqReadData(final YangInstanceIdentifier path) { ArgumentMatcher matcher = new ArgumentMatcher() { @Override public boolean matches(Object argument) { - return (argument instanceof ReadData) && - ((ReadData)argument).getPath().equals(TestModel.TEST_PATH); + return (argument instanceof ReadData) && ((ReadData)argument).getPath().equals(path); } }; @@ -254,23 +259,11 @@ public abstract class AbstractTransactionProxyTest { return Futures.successful((Object)new ReadyTransactionReply(path)); } - protected Future readSerializedDataReply(NormalizedNode data, - short transactionVersion) { - return Futures.successful(new ReadDataReply(data, transactionVersion).toSerializable()); - } - - protected Future readSerializedDataReply(NormalizedNode data) { - return readSerializedDataReply(data, DataStoreVersions.CURRENT_VERSION); - } protected Future readDataReply(NormalizedNode data) { return Futures.successful(new ReadDataReply(data, DataStoreVersions.CURRENT_VERSION)); } - protected Future dataExistsSerializedReply(boolean exists) { - return Futures.successful(DataExistsReply.create(exists).toSerializable()); - } - protected Future dataExistsReply(boolean exists) { return Futures.successful(DataExistsReply.create(exists)); } @@ -318,6 +311,12 @@ public abstract class AbstractTransactionProxyTest { eq(actorSelection(actorRef)), isA(BatchedModifications.class)); } + protected void expectReadyLocalTransaction(ActorRef actorRef, boolean doCommitOnReady) { + doReturn(doCommitOnReady ? Futures.successful(new CommitTransactionReply().toSerializable()) : + readyTxReply(actorRef.path().toString())).when(mockActorContext).executeOperationAsync( + eq(actorSelection(actorRef)), isA(ReadyLocalTransaction.class), any(Timeout.class)); + } + protected CreateTransactionReply createTransactionReply(ActorRef actorRef, int transactionVersion){ return CreateTransactionReply.newBuilder() .setTransactionActorPath(actorRef.path().toString()) @@ -373,7 +372,7 @@ public abstract class AbstractTransactionProxyTest { TransactionType type, short transactionVersion, String prefix, ActorRef shardActorRef) { ActorRef txActorRef; - if(type == TransactionType.WRITE_ONLY && transactionVersion >= DataStoreVersions.LITHIUM_VERSION && + if(type == TransactionType.WRITE_ONLY && dataStoreContextBuilder.build().isWriteOnlyTransactionOptimizationsEnabled()) { txActorRef = shardActorRef; } else {