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%2Fdatabroker%2Factors%2Fdds%2FAbstractProxyTransactionTest.java;h=b28c84b09e64c75a710f961053fbcbcf693c9dfe;hb=HEAD;hp=f906c76528a40ab285ce9064b1bc5d05467fca52;hpb=ac68d04dbe5c3d7bae8fb7ec28e11ff568c1902f;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransactionTest.java index f906c76528..b28c84b09e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransactionTest.java @@ -7,16 +7,21 @@ */ package org.opendaylight.controller.cluster.databroker.actors.dds; -import static org.hamcrest.CoreMatchers.both; +import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.CoreMatchers.hasItem; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.isA; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import akka.actor.ActorSystem; -import akka.testkit.JavaTestKit; import akka.testkit.TestProbe; +import akka.testkit.javadsl.TestKit; import com.google.common.base.Ticker; import com.google.common.primitives.UnsignedLong; import java.util.ArrayList; @@ -27,11 +32,11 @@ import java.util.function.Consumer; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.junit.After; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.client.AbstractClientConnection; import org.opendaylight.controller.cluster.access.client.AccessClientUtil; @@ -56,13 +61,18 @@ import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifie import org.opendaylight.controller.cluster.access.concepts.RequestEnvelope; import org.opendaylight.controller.cluster.access.concepts.Response; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; +import org.opendaylight.controller.cluster.datastore.DatastoreContext; +import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; +import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.api.schema.tree.CursorAwareDataTreeModification; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; -import org.opendaylight.yangtools.yang.data.impl.schema.Builders; +import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes; +import org.opendaylight.yangtools.yang.data.tree.api.CursorAwareDataTreeModification; +import org.opendaylight.yangtools.yang.data.tree.api.DataTreeSnapshot; +@RunWith(MockitoJUnitRunner.StrictStubs.class) public abstract class AbstractProxyTransactionTest { protected static final TransactionIdentifier TRANSACTION_ID = TestUtils.TRANSACTION_ID; private static final ClientIdentifier CLIENT_ID = TestUtils.CLIENT_ID; @@ -77,11 +87,11 @@ public abstract class AbstractProxyTransactionTest connection = AccessClientUtil.createConnectedConnection(context, 0L, backend); + final ProxyHistory parent = ProxyHistory.createClient(history, connection, HISTORY_ID); transaction = createTransaction(parent, TestUtils.TRANSACTION_ID, snapshot); tester = new TransactionTester<>(transaction, connection, backendProbe); } + protected final void mockForRemote() { + doReturn(1000).when(datastoreContext).getShardBatchedModificationCount(); + doReturn(datastoreContext).when(actorUtils).getDatastoreContext(); + doReturn(actorUtils).when(history).actorUtils(); + } + + @SuppressWarnings("checkstyle:hiddenField") protected abstract T createTransaction(ProxyHistory parent, TransactionIdentifier id, DataTreeSnapshot snapshot); @After - public void tearDown() throws Exception { - JavaTestKit.shutdownActorSystem(system); + public void tearDown() { + TestKit.shutdownActorSystem(system); } @Test @@ -127,46 +149,46 @@ public abstract class AbstractProxyTransactionTest transaction.abort(f), TransactionAbortRequest.class, TransactionAbortSuccess::new); } @Test - public void testForwardToRemotePurge() throws Exception { + public void testForwardToRemotePurge() { final TestProbe probe = new TestProbe(system); final TransactionPurgeRequest request = new TransactionPurgeRequest(TRANSACTION_ID, 0L, probe.ref()); testForwardToRemote(request, TransactionPurgeRequest.class); } @Test - public void testReplayMessages() throws Exception { + public void testReplayMessages() { final TestProbe probe = new TestProbe(system); final List entries = new ArrayList<>(); final Consumer> callback = createCallbackMock(); @@ -185,52 +207,52 @@ public abstract class AbstractProxyTransactionTest modifications = modifyRequest.getModifications(); - Assert.assertEquals(3, modifications.size()); - Assert.assertThat(modifications, hasItem(both(isA(TransactionWrite.class)).and(hasPath(PATH_1)))); - Assert.assertThat(modifications, hasItem(both(isA(TransactionMerge.class)).and(hasPath(PATH_2)))); - Assert.assertThat(modifications, hasItem(both(isA(TransactionDelete.class)).and(hasPath(PATH_3)))); + assertEquals(3, modifications.size()); + assertThat(modifications, hasItem(allOf(isA(TransactionWrite.class), hasPath(PATH_1)))); + assertThat(modifications, hasItem(allOf(isA(TransactionMerge.class), hasPath(PATH_2)))); + assertThat(modifications, hasItem(allOf(isA(TransactionDelete.class), hasPath(PATH_3)))); } - protected > void testRequestResponse(final Consumer> consumer, + @SuppressWarnings("checkstyle:hiddenField") + protected > void testRequestResponse(final Consumer> consumer, final Class expectedRequest, - final BiFunction> replySupplier) throws Exception { + final BiFunction> replySupplier) { final TransactionTester tester = getTester(); - final VotingFuture future = mock(VotingFuture.class); + final VotingFuture future = mock(VotingFuture.class); transaction.seal(); consumer.accept(future); final TransactionRequest req = tester.expectTransactionRequest(expectedRequest); @@ -238,13 +260,13 @@ public abstract class AbstractProxyTransactionTest> R testHandleForwardedRemoteRequest(final R request) throws Exception { + protected > R testHandleForwardedRemoteRequest(final R request) { transaction.handleReplayedRemoteRequest(request, createCallbackMock(), Ticker.systemTicker().read()); final RequestEnvelope envelope = backendProbe.expectMsgClass(RequestEnvelope.class); final R received = (R) envelope.getMessage(); - Assert.assertTrue(received.getClass().equals(request.getClass())); - Assert.assertEquals(TRANSACTION_ID, received.getTarget()); - Assert.assertEquals(clientContextProbe.ref(), received.getReplyTo()); + assertTrue(received.getClass().equals(request.getClass())); + assertEquals(TRANSACTION_ID, received.getTarget()); + assertEquals(clientContextProbe.ref(), received.getReplyTo()); return received; } @@ -267,7 +289,7 @@ public abstract class AbstractProxyTransactionTest hasPath(final YangInstanceIdentifier path) { - return new BaseMatcher() { + return new BaseMatcher<>() { @Override public boolean matches(final Object item) { @@ -291,12 +313,13 @@ public abstract class AbstractProxyTransactionTest createLocalProxy() { final TestProbe backendProbe = new TestProbe(system, "backend2"); final TestProbe clientContextProbe = new TestProbe(system, "clientContext2"); final ClientActorContext context = AccessClientUtil.createClientActorContext(system, clientContextProbe.ref(), CLIENT_ID, PERSISTENCE_ID); - final ShardBackendInfo backend = new ShardBackendInfo(backendProbe.ref(), 0L, ABIVersion.BORON, + final ShardBackendInfo backend = new ShardBackendInfo(backendProbe.ref(), 0L, ABIVersion.current(), "default", UnsignedLong.ZERO, Optional.empty(), 3); final AbstractClientConnection connection = AccessClientUtil.createConnectedConnection(context, 0L, backend); @@ -309,19 +332,25 @@ public abstract class AbstractProxyTransactionTest(tx, connection, backendProbe); } + @SuppressWarnings("checkstyle:hiddenField") protected TransactionTester createRemoteProxyTransactionTester() { final TestProbe clientContextProbe = new TestProbe(system, "remoteClientContext"); final TestProbe backendProbe = new TestProbe(system, "remoteBackend"); final AbstractClientHistory history = mock(AbstractClientHistory.class); + doReturn(1000).when(datastoreContext).getShardBatchedModificationCount(); + doReturn(datastoreContext).when(actorUtils).getDatastoreContext(); + doReturn(actorUtils).when(history).actorUtils(); + final ClientActorContext context = AccessClientUtil.createClientActorContext(system, clientContextProbe.ref(), CLIENT_ID, PERSISTENCE_ID); - final ShardBackendInfo backend = new ShardBackendInfo(backendProbe.ref(), 0L, ABIVersion.BORON, + final ShardBackendInfo backend = new ShardBackendInfo(backendProbe.ref(), 0L, ABIVersion.current(), "default", UnsignedLong.ZERO, Optional.empty(), 5); final AbstractClientConnection connection = AccessClientUtil.createConnectedConnection(context, 0L, backend); final ProxyHistory proxyHistory = ProxyHistory.createClient(history, connection, HISTORY_ID); + final RemoteProxyTransaction transaction = - new RemoteProxyTransaction(proxyHistory, TRANSACTION_ID, false, false); + new RemoteProxyTransaction(proxyHistory, TRANSACTION_ID, false, false, false); return new TransactionTester<>(transaction, connection, backendProbe); } }