*/
package org.opendaylight.controller.cluster.raft;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doNothing;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
+
import akka.japi.Procedure;
-import com.google.protobuf.GeneratedMessage.GeneratedExtension;
-import java.util.Map;
import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
+import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.controller.cluster.DataPersistenceProvider;
import org.opendaylight.controller.cluster.PersistentDataProvider;
-import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
-import org.opendaylight.controller.cluster.raft.protobuff.client.messages.PersistentPayload;
+import org.opendaylight.controller.cluster.raft.messages.Payload;
+import org.opendaylight.controller.cluster.raft.messages.PersistentPayload;
/**
* Unit tests for RaftActorDelegatingPersistentDataProvider.
*
* @author Thomas Pantelis
*/
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class RaftActorDelegatingPersistentDataProviderTest {
private static final Payload PERSISTENT_PAYLOAD = new TestPersistentPayload();
private RaftActorDelegatingPersistentDataProvider provider;
- @SuppressWarnings("unchecked")
@Before
- public void setup() throws Exception {
- MockitoAnnotations.initMocks(this);
+ public void setup() {
doReturn(PERSISTENT_PAYLOAD).when(mockPersistentLogEntry).getData();
doReturn(NON_PERSISTENT_PAYLOAD).when(mockNonPersistentLogEntry).getData();
-
- doAnswer(new Answer<Void>() {
- @Override
- public Void answer(InvocationOnMock invocation) throws Exception {
- final Object[] args = invocation.getArguments();
- ((Procedure<Object>)args[1]).apply(args[0]);
- return null;
- }
- }).when(mockPersistentProvider).persist(any(Object.class), any(Procedure.class));
-
- doNothing().when(mockDelegateProvider).persist(any(Object.class), any(Procedure.class));
- doNothing().when(mockProcedure).apply(any(Object.class));
provider = new RaftActorDelegatingPersistentDataProvider(mockDelegateProvider, mockPersistentProvider);
}
verify(mockDelegateProvider).persist(OTHER_DATA_OBJECT, mockProcedure);
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({ "unchecked", "rawtypes" })
@Test
- public void testPersistWithPersistenceDisabled() {
+ public void testPersistWithPersistenceDisabled() throws Exception {
doReturn(false).when(mockDelegateProvider).isRecoveryApplicable();
provider.persist(mockPersistentLogEntry, mockProcedure);
- verify(mockPersistentProvider).persist(mockPersistentLogEntry, mockProcedure);
+
+ ArgumentCaptor<Procedure> procedureCaptor = ArgumentCaptor.forClass(Procedure.class);
+ verify(mockPersistentProvider).persist(eq(PERSISTENT_PAYLOAD), procedureCaptor.capture());
+ verify(mockDelegateProvider, never()).persist(mockNonPersistentLogEntry, mockProcedure);
+ procedureCaptor.getValue().apply(PERSISTENT_PAYLOAD);
+ verify(mockProcedure).apply(mockPersistentLogEntry);
provider.persist(mockNonPersistentLogEntry, mockProcedure);
verify(mockDelegateProvider).persist(mockNonPersistentLogEntry, mockProcedure);
}
static class TestNonPersistentPayload extends Payload {
- @SuppressWarnings("rawtypes")
+ @java.io.Serial
+ private static final long serialVersionUID = 1L;
+
@Override
- public <T> Map<GeneratedExtension, T> encode() {
- return null;
+ public int size() {
+ return 0;
}
@Override
- public Payload decode(
- org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntriesMessages.AppendEntries.ReplicatedLogEntry.Payload payload) {
- return null;
+ public int serializedSize() {
+ return 0;
}
@Override
- public int size() {
- return 0;
+ protected Object writeReplace() {
+ // Not needed
+ throw new UnsupportedOperationException();
}
}
static class TestPersistentPayload extends TestNonPersistentPayload implements PersistentPayload {
+ @java.io.Serial
+ private static final long serialVersionUID = 1L;
}
}