Improve segmented journal actor metrics
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / DataTreeCohortActorTest.java
index ce60c592f2150c88257ebf2a485263c6defe8639..7a3e2683921c3a6d99f04ea5ef41e5fe34240de4 100644 (file)
@@ -9,7 +9,8 @@ package org.opendaylight.controller.cluster.datastore;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyCollection;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.reset;
@@ -18,8 +19,8 @@ import static org.mockito.Mockito.verify;
 import akka.actor.ActorRef;
 import akka.pattern.Patterns;
 import akka.util.Timeout;
+import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.Uninterruptibles;
@@ -43,9 +44,10 @@ import org.opendaylight.mdsal.common.api.PostPreCommitStep;
 import org.opendaylight.mdsal.common.api.ThreePhaseCommitStep;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohort;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.data.tree.api.DataValidationFailedException;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import scala.concurrent.Await;
 
 /**
@@ -55,7 +57,7 @@ import scala.concurrent.Await;
  */
 public class DataTreeCohortActorTest extends AbstractActorTest {
     private static final Collection<DOMDataTreeCandidate> CANDIDATES = new ArrayList<>();
-    private static final SchemaContext MOCK_SCHEMA = mock(SchemaContext.class);
+    private static final EffectiveModelContext MOCK_SCHEMA = mock(EffectiveModelContext.class);
     private final TestActorFactory actorFactory = new TestActorFactory(getSystem());
     private final DOMDataTreeCommitCohort mockCohort = mock(DOMDataTreeCommitCohort.class);
     private final PostCanCommitStep mockPostCanCommit = mock(PostCanCommitStep.class);
@@ -77,7 +79,7 @@ public class DataTreeCohortActorTest extends AbstractActorTest {
 
         TransactionIdentifier txId = nextTransactionId();
         askAndAwait(cohortActor, new CanCommit(txId, CANDIDATES, MOCK_SCHEMA, cohortActor));
-        verify(mockCohort).canCommit(txId, CANDIDATES, MOCK_SCHEMA);
+        verify(mockCohort).canCommit(txId, MOCK_SCHEMA, CANDIDATES);
 
         askAndAwait(cohortActor, new PreCommit(txId));
         verify(mockPostCanCommit).preCommit();
@@ -87,7 +89,7 @@ public class DataTreeCohortActorTest extends AbstractActorTest {
 
         resetMockCohort();
         askAndAwait(cohortActor, new CanCommit(txId, CANDIDATES, MOCK_SCHEMA, cohortActor));
-        verify(mockCohort).canCommit(txId, CANDIDATES, MOCK_SCHEMA);
+        verify(mockCohort).canCommit(txId, MOCK_SCHEMA, CANDIDATES);
     }
 
     @Test
@@ -107,14 +109,12 @@ public class DataTreeCohortActorTest extends AbstractActorTest {
         askAndAwait(cohortActor, new Commit(txId2));
     }
 
-    @SuppressWarnings("unchecked")
     @Test
     public void testAsyncCohort() throws Exception {
         ListeningExecutorService executor = MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor());
 
-        doReturn(Futures.makeChecked(executeWithDelay(executor, mockPostCanCommit),
-            ex -> new DataValidationFailedException(YangInstanceIdentifier.EMPTY, "mock")))
-                .when(mockCohort).canCommit(any(Object.class), any(Collection.class), any(SchemaContext.class));
+        doReturn(executeWithDelay(executor, mockPostCanCommit))
+                .when(mockCohort).canCommit(any(Object.class), any(EffectiveModelContext.class), anyCollection());
 
         doReturn(executor.submit(() -> mockPostPreCommit)).when(mockPostCanCommit).preCommit();
 
@@ -124,7 +124,7 @@ public class DataTreeCohortActorTest extends AbstractActorTest {
 
         TransactionIdentifier txId = nextTransactionId();
         askAndAwait(cohortActor, new CanCommit(txId, CANDIDATES, MOCK_SCHEMA, cohortActor));
-        verify(mockCohort).canCommit(txId, CANDIDATES, MOCK_SCHEMA);
+        verify(mockCohort).canCommit(txId, MOCK_SCHEMA, CANDIDATES);
 
         askAndAwait(cohortActor, new PreCommit(txId));
         verify(mockPostCanCommit).preCommit();
@@ -135,12 +135,12 @@ public class DataTreeCohortActorTest extends AbstractActorTest {
         executor.shutdownNow();
     }
 
-    @SuppressWarnings("unchecked")
     @Test
     public void testFailureOnCanCommit() throws Exception {
-        DataValidationFailedException failure = new DataValidationFailedException(YangInstanceIdentifier.EMPTY, "mock");
-        doReturn(Futures.immediateFailedCheckedFuture(failure)).when(mockCohort).canCommit(any(Object.class),
-                any(Collection.class), any(SchemaContext.class));
+        DataValidationFailedException failure = new DataValidationFailedException(YangInstanceIdentifier.of(),
+                "mock");
+        doReturn(FluentFutures.immediateFailedFluentFuture(failure)).when(mockCohort).canCommit(any(Object.class),
+                any(EffectiveModelContext.class), anyCollection());
 
         ActorRef cohortActor = newCohortActor("testFailureOnCanCommit");
 
@@ -153,7 +153,7 @@ public class DataTreeCohortActorTest extends AbstractActorTest {
 
         resetMockCohort();
         askAndAwait(cohortActor, new CanCommit(txId, CANDIDATES, MOCK_SCHEMA, cohortActor));
-        verify(mockCohort).canCommit(txId, CANDIDATES, MOCK_SCHEMA);
+        verify(mockCohort).canCommit(txId, MOCK_SCHEMA, CANDIDATES);
     }
 
     @Test
@@ -162,14 +162,14 @@ public class DataTreeCohortActorTest extends AbstractActorTest {
 
         TransactionIdentifier txId = nextTransactionId();
         askAndAwait(cohortActor, new CanCommit(txId, CANDIDATES, MOCK_SCHEMA, cohortActor));
-        verify(mockCohort).canCommit(txId, CANDIDATES, MOCK_SCHEMA);
+        verify(mockCohort).canCommit(txId, MOCK_SCHEMA, CANDIDATES);
 
         askAndAwait(cohortActor, new Abort(txId));
         verify(mockPostCanCommit).abort();
 
         resetMockCohort();
         askAndAwait(cohortActor, new CanCommit(txId, CANDIDATES, MOCK_SCHEMA, cohortActor));
-        verify(mockCohort).canCommit(txId, CANDIDATES, MOCK_SCHEMA);
+        verify(mockCohort).canCommit(txId, MOCK_SCHEMA, CANDIDATES);
     }
 
     @Test
@@ -178,7 +178,7 @@ public class DataTreeCohortActorTest extends AbstractActorTest {
 
         TransactionIdentifier txId = nextTransactionId();
         askAndAwait(cohortActor, new CanCommit(txId, CANDIDATES, MOCK_SCHEMA, cohortActor));
-        verify(mockCohort).canCommit(txId, CANDIDATES, MOCK_SCHEMA);
+        verify(mockCohort).canCommit(txId, MOCK_SCHEMA, CANDIDATES);
 
         askAndAwait(cohortActor, new PreCommit(txId));
         verify(mockPostCanCommit).preCommit();
@@ -187,24 +187,23 @@ public class DataTreeCohortActorTest extends AbstractActorTest {
         verify(mockPostPreCommit).abort();
     }
 
-    private static <T> ListenableFuture<T> executeWithDelay(final ListeningExecutorService executor, final T result) {
-        return executor.submit(() -> {
+    private static <T> FluentFuture<T> executeWithDelay(final ListeningExecutorService executor, final T result) {
+        return FluentFuture.from(executor.submit(() -> {
             Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS);
             return result;
-        });
+        }));
     }
 
     private ActorRef newCohortActor(final String name) {
-        return actorFactory.createActor(DataTreeCohortActor.props(mockCohort, YangInstanceIdentifier.EMPTY), name);
+        return actorFactory.createActor(DataTreeCohortActor.props(mockCohort, YangInstanceIdentifier.of()), name);
     }
 
-    @SuppressWarnings("unchecked")
     private void resetMockCohort() {
         reset(mockCohort);
         doReturn(ThreePhaseCommitStep.NOOP_ABORT_FUTURE).when(mockPostCanCommit).abort();
         doReturn(Futures.immediateFuture(mockPostPreCommit)).when(mockPostCanCommit).preCommit();
-        doReturn(Futures.immediateCheckedFuture(mockPostCanCommit)).when(mockCohort).canCommit(any(Object.class),
-                any(Collection.class), any(SchemaContext.class));
+        doReturn(FluentFutures.immediateFluentFuture(mockPostCanCommit)).when(mockCohort).canCommit(any(Object.class),
+                any(EffectiveModelContext.class), anyCollection());
 
         doReturn(ThreePhaseCommitStep.NOOP_ABORT_FUTURE).when(mockPostPreCommit).abort();
         doReturn(Futures.immediateFuture(null)).when(mockPostPreCommit).commit();