import org.mockito.internal.matchers.Same;
import org.opendaylight.controller.cluster.DataPersistenceProvider;
import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload;
-import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockReplicatedLogEntry;
import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior;
import org.opendaylight.controller.cluster.raft.persisted.DeleteEntries;
+import org.opendaylight.controller.cluster.raft.persisted.SimpleReplicatedLogEntry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
MockitoAnnotations.initMocks(this);
context = new RaftActorContextImpl(null, null, "test",
- new ElectionTermImpl(mockPersistence, "test", LOG),
- -1, -1, Collections.<String,String>emptyMap(), configParams, mockPersistence, LOG);
+ new ElectionTermImpl(mockPersistence, "test", LOG), -1, -1, Collections.<String,String>emptyMap(),
+ configParams, mockPersistence, applyState -> { }, LOG);
}
private void verifyPersist(Object message) throws Exception {
- verifyPersist(message, new Same(message));
+ verifyPersist(message, new Same(message), true);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
- private void verifyPersist(Object message, Matcher<?> matcher) throws Exception {
+ private void verifyPersist(Object message, Matcher<?> matcher, boolean async) throws Exception {
ArgumentCaptor<Procedure> procedure = ArgumentCaptor.forClass(Procedure.class);
- verify(mockPersistence).persist(Matchers.argThat(matcher), procedure.capture());
+ if (async) {
+ verify(mockPersistence).persistAsync(Matchers.argThat(matcher), procedure.capture());
+ } else {
+ verify(mockPersistence).persist(Matchers.argThat(matcher), procedure.capture());
+ }
procedure.getValue().apply(message);
}
public void testAppendAndPersistExpectingNoCapture() throws Exception {
ReplicatedLog log = ReplicatedLogImpl.newInstance(context);
- MockReplicatedLogEntry logEntry1 = new MockReplicatedLogEntry(1, 1, new MockPayload("1"));
+ ReplicatedLogEntry logEntry1 = new SimpleReplicatedLogEntry(1, 1, new MockPayload("1"));
- log.appendAndPersist(logEntry1);
+ log.appendAndPersist(logEntry1, null, true);
verifyPersist(logEntry1);
reset(mockPersistence);
- MockReplicatedLogEntry logEntry2 = new MockReplicatedLogEntry(1, 2, new MockPayload("2"));
+ ReplicatedLogEntry logEntry2 = new SimpleReplicatedLogEntry(2, 1, new MockPayload("2"));
Procedure<ReplicatedLogEntry> mockCallback = Mockito.mock(Procedure.class);
- log.appendAndPersist(logEntry2, mockCallback);
+ log.appendAndPersist(logEntry2, mockCallback, true);
verifyPersist(logEntry2);
ReplicatedLog log = ReplicatedLogImpl.newInstance(context);
Procedure<ReplicatedLogEntry> mockCallback = Mockito.mock(Procedure.class);
- MockReplicatedLogEntry logEntry = new MockReplicatedLogEntry(1, 1, new MockPayload("1"));
+ ReplicatedLogEntry logEntry = new SimpleReplicatedLogEntry(1, 1, new MockPayload("1"));
- log.appendAndPersist(logEntry, mockCallback);
+ log.appendAndPersist(logEntry, mockCallback, true);
verifyPersist(logEntry);
reset(mockPersistence, mockCallback);
- log.appendAndPersist(logEntry, mockCallback);
+ log.appendAndPersist(logEntry, mockCallback, true);
verifyNoMoreInteractions(mockPersistence, mockCallback);
ReplicatedLog log = ReplicatedLogImpl.newInstance(context);
- final MockReplicatedLogEntry logEntry1 = new MockReplicatedLogEntry(1, 2, new MockPayload("2"));
- final MockReplicatedLogEntry logEntry2 = new MockReplicatedLogEntry(1, 3, new MockPayload("3"));
+ final ReplicatedLogEntry logEntry1 = new SimpleReplicatedLogEntry(2, 1, new MockPayload("2"));
+ final ReplicatedLogEntry logEntry2 = new SimpleReplicatedLogEntry(3, 1, new MockPayload("3"));
- log.appendAndPersist(logEntry1);
+ log.appendAndPersist(logEntry1, null, true);
verifyPersist(logEntry1);
reset(mockPersistence);
- log.appendAndPersist(logEntry2);
+ log.appendAndPersist(logEntry2, null, true);
verifyPersist(logEntry2);
ReplicatedLog log = ReplicatedLogImpl.newInstance(context);
int dataSize = 600;
- MockReplicatedLogEntry logEntry = new MockReplicatedLogEntry(1, 2, new MockPayload("2", dataSize));
+ ReplicatedLogEntry logEntry = new SimpleReplicatedLogEntry(2, 1, new MockPayload("2", dataSize));
- log.appendAndPersist(logEntry);
+ log.appendAndPersist(logEntry, null, true);
verifyPersist(logEntry);
reset(mockPersistence);
- logEntry = new MockReplicatedLogEntry(1, 3, new MockPayload("3", 5));
+ logEntry = new SimpleReplicatedLogEntry(3, 1, new MockPayload("3", 5));
- log.appendAndPersist(logEntry);
+ log.appendAndPersist(logEntry, null, true);
verifyPersist(logEntry);
assertEquals("size", 2, log.size());
ReplicatedLog log = ReplicatedLogImpl.newInstance(context);
- log.append(new MockReplicatedLogEntry(1, 0, new MockPayload("0")));
- log.append(new MockReplicatedLogEntry(1, 1, new MockPayload("1")));
- log.append(new MockReplicatedLogEntry(1, 2, new MockPayload("2")));
+ log.append(new SimpleReplicatedLogEntry(0, 1, new MockPayload("0")));
+ log.append(new SimpleReplicatedLogEntry(1, 1, new MockPayload("1")));
+ log.append(new SimpleReplicatedLogEntry(2, 1, new MockPayload("2")));
log.removeFromAndPersist(1);
DeleteEntries deleteEntries = new DeleteEntries(1);
- verifyPersist(deleteEntries, match(deleteEntries));
+ verifyPersist(deleteEntries, match(deleteEntries), false);
assertEquals("size", 1, log.size());