Improve error reporting for tell-based reads
[controller.git] / opendaylight / md-sal / cds-access-client / src / test / java / org / opendaylight / controller / cluster / access / client / AbstractClientConnectionTest.java
index 550dd9fa518b35b2c94d28f3ed0054863d5ab30c..59930ca024794c6351baa25b23cc761e5d98ece2 100644 (file)
@@ -8,8 +8,6 @@
 package org.opendaylight.controller.cluster.access.client;
 
 import static org.hamcrest.CoreMatchers.hasItems;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.argThat;
 import static org.mockito.Matchers.isA;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.timeout;
@@ -18,8 +16,9 @@ import static org.opendaylight.controller.cluster.access.client.ConnectionEntryM
 
 import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
-import akka.testkit.JavaTestKit;
 import akka.testkit.TestProbe;
+import akka.testkit.javadsl.TestKit;
+import com.google.common.collect.Iterables;
 import java.util.Optional;
 import java.util.function.Consumer;
 import org.junit.After;
@@ -43,7 +42,6 @@ import org.opendaylight.controller.cluster.access.concepts.ResponseEnvelope;
 import org.opendaylight.controller.cluster.access.concepts.RuntimeRequestException;
 import org.opendaylight.controller.cluster.access.concepts.SuccessEnvelope;
 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
-import scala.concurrent.duration.FiniteDuration;
 
 public abstract class AbstractClientConnectionTest<T extends AbstractClientConnection<U>, U extends BackendInfo> {
 
@@ -62,13 +60,13 @@ public abstract class AbstractClientConnectionTest<T extends AbstractClientConne
     protected TestProbe replyToProbe;
 
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         MockitoAnnotations.initMocks(this);
         system = ActorSystem.apply();
         backendProbe = new TestProbe(system);
         contextProbe = new TestProbe(system);
-        context = new ClientActorContext(contextProbe.ref(), system.scheduler(), system.dispatcher(),
-                PERSISTENCE_ID, CLIENT_ID);
+        context = new ClientActorContext(contextProbe.ref(), PERSISTENCE_ID, system,
+                CLIENT_ID, AccessClientUtil.newMockClientActorConfig());
         replyToProbe = new TestProbe(system);
         connection = createConnection();
     }
@@ -76,15 +74,15 @@ public abstract class AbstractClientConnectionTest<T extends AbstractClientConne
     protected abstract T createConnection();
 
     @Test
-    public void testLocalActor() throws Exception {
+    public void testLocalActor() {
         Assert.assertEquals(contextProbe.ref(), connection.localActor());
     }
 
     @Test
-    public abstract void testReconnectConnection() throws Exception;
+    public abstract void testReconnectConnection();
 
     @Test
-    public void testPoison() throws Exception {
+    public void testPoison() {
         final Consumer<Response<?, ?>> callback = mock(Consumer.class);
         final Request<?, ?> request = createRequest(replyToProbe.ref());
         final ConnectionEntry entry = new ConnectionEntry(request, callback, 0L);
@@ -94,7 +92,7 @@ public abstract class AbstractClientConnectionTest<T extends AbstractClientConne
     }
 
     @Test
-    public void testSendRequestReceiveResponse() throws Exception {
+    public void testSendRequestReceiveResponse() {
         final Consumer<Response<?, ?>> callback = mock(Consumer.class);
         final Request<?, ?> request = createRequest(replyToProbe.ref());
         connection.sendRequest(request, callback);
@@ -108,37 +106,28 @@ public abstract class AbstractClientConnectionTest<T extends AbstractClientConne
     }
 
     @Test
-    public void testRun() throws Exception {
+    public void testRun() {
         final ClientActorBehavior<U> behavior = mock(ClientActorBehavior.class);
         Assert.assertSame(behavior, connection.runTimer(behavior));
     }
 
     @Test
-    public void testCheckTimeoutEmptyQueue() throws Exception {
-        final Optional<FiniteDuration> timeout = connection.checkTimeout(context.ticker().read());
+    public void testCheckTimeoutEmptyQueue() {
+        final Optional<Long> timeout = connection.checkTimeout(context.ticker().read());
         Assert.assertFalse(timeout.isPresent());
     }
 
     @Test
-    public void testCheckTimeoutConnectionTimeouted() throws Exception {
-        final Consumer<Response<?, ?>> callback = mock(Consumer.class);
-        connection.sendRequest(createRequest(replyToProbe.ref()), callback);
-        final long now = context.ticker().read() + ConnectedClientConnection.REQUEST_TIMEOUT_NANOS;
-        final Optional<FiniteDuration> timeout = connection.checkTimeout(now);
-        Assert.assertNull(timeout);
-    }
-
-    @Test
-    public void testCheckTimeout() throws Exception {
+    public void testCheckTimeout() {
         final Consumer<Response<?, ?>> callback = mock(Consumer.class);
         connection.sendRequest(createRequest(replyToProbe.ref()), callback);
         final long now = context.ticker().read();
-        final Optional<FiniteDuration> timeout = connection.checkTimeout(now);
+        final Optional<Long> timeout = connection.checkTimeout(now);
         Assert.assertTrue(timeout.isPresent());
     }
 
     @Test
-    public void testReplay() throws Exception {
+    public void testReplay() {
         final Consumer<Response<?, ?>> callback = mock(Consumer.class);
         final Request<?, ?> request1 = createRequest(replyToProbe.ref());
         final Request<?, ?> request2 = createRequest(replyToProbe.ref());
@@ -146,15 +135,15 @@ public abstract class AbstractClientConnectionTest<T extends AbstractClientConne
         connection.sendRequest(request2, callback);
         final Iterable<ConnectionEntry> entries = connection.startReplay();
         Assert.assertThat(entries, hasItems(entryWithRequest(request1), entryWithRequest(request2)));
+        Assert.assertEquals(2, Iterables.size(entries));
+        Iterables.removeIf(entries, e -> true);
         final ReconnectForwarder forwarder = mock(ReconnectForwarder.class);
         connection.finishReplay(forwarder);
-        verify(forwarder).forwardEntry(argThat(entryWithRequest(request1)), anyLong());
-        verify(forwarder).forwardEntry(argThat(entryWithRequest(request2)), anyLong());
     }
 
     @After
-    public void tearDown() throws Exception {
-        JavaTestKit.shutdownActorSystem(system);
+    public void tearDown() {
+        TestKit.shutdownActorSystem(system);
     }
 
     protected Request<?, ?> createRequest(final ActorRef replyTo) {
@@ -163,4 +152,4 @@ public abstract class AbstractClientConnectionTest<T extends AbstractClientConne
         return new AbortLocalTransactionRequest(identifier, replyTo);
     }
 
-}
\ No newline at end of file
+}