X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FMockRaftActorContext.java;h=65f0a624e6b83c6a3fb3cfff52a00d9d64c55850;hp=5a4b43721db99d1d2a548afceb00bcc47b7f37d8;hb=fe8352361d49c76a0ecc80162a2b8258d35198b5;hpb=bef65394c7f540b601ce4bd360d7d7648f289bd1 diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActorContext.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActorContext.java index 5a4b43721d..65f0a624e6 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActorContext.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActorContext.java @@ -13,11 +13,13 @@ import akka.actor.ActorSelection; import akka.actor.ActorSystem; import akka.actor.Props; import akka.japi.Procedure; +import com.google.common.base.Throwables; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import org.opendaylight.controller.cluster.NonPersistentDataProvider; import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior; +import org.opendaylight.controller.cluster.raft.persisted.SimpleReplicatedLogEntry; import org.opendaylight.controller.cluster.raft.policy.RaftPolicy; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; import org.slf4j.Logger; @@ -45,28 +47,27 @@ public class MockRaftActorContext extends RaftActorContextImpl { } @Override - public void update(long currentTerm, String votedFor){ - this.currentTerm = currentTerm; - this.votedFor = votedFor; + public void update(long newTerm, String newVotedFor) { + this.currentTerm = newTerm; + this.votedFor = newVotedFor; // TODO : Write to some persistent state } - @Override public void updateAndPersist(long currentTerm, - String votedFor) { - update(currentTerm, votedFor); + @Override public void updateAndPersist(long newTerm, String newVotedFor) { + update(newTerm, newVotedFor); } }; } - public MockRaftActorContext(){ - super(null, null, "test", newElectionTerm(), -1, -1, new HashMap(), + public MockRaftActorContext() { + super(null, null, "test", newElectionTerm(), -1, -1, new HashMap<>(), new DefaultConfigParamsImpl(), new NonPersistentDataProvider(), LOG); setReplicatedLog(new MockReplicatedLogBuilder().build()); } - public MockRaftActorContext(String id, ActorSystem system, ActorRef actor){ - super(actor, null, id, newElectionTerm(), -1, -1, new HashMap(), + public MockRaftActorContext(String id, ActorSystem system, ActorRef actor) { + super(actor, null, id, newElectionTerm(), -1, -1, new HashMap<>(), new DefaultConfigParamsImpl(), new NonPersistentDataProvider(), LOG); this.system = system; @@ -75,12 +76,14 @@ public class MockRaftActorContext extends RaftActorContextImpl { } - public void initReplicatedLog(){ + public void initReplicatedLog() { SimpleReplicatedLog replicatedLog = new SimpleReplicatedLog(); long term = getTermInformation().getCurrentTerm(); - replicatedLog.append(new MockReplicatedLogEntry(term, 0, new MockPayload("1"))); - replicatedLog.append(new MockReplicatedLogEntry(term, 1, new MockPayload("2"))); + replicatedLog.append(new SimpleReplicatedLogEntry(0, term, new MockPayload("1"))); + replicatedLog.append(new SimpleReplicatedLogEntry(1, term, new MockPayload("2"))); setReplicatedLog(replicatedLog); + setCommitIndex(replicatedLog.lastIndex()); + setLastApplied(replicatedLog.lastIndex()); } @Override public ActorRef actorOf(Props props) { @@ -97,18 +100,18 @@ public class MockRaftActorContext extends RaftActorContextImpl { @Override public ActorSelection getPeerActorSelection(String peerId) { String peerAddress = getPeerAddress(peerId); - if(peerAddress != null){ + if (peerAddress != null) { return actorSelection(peerAddress); } return null; } public void setPeerAddresses(Map peerAddresses) { - for(String id: getPeerIds()) { + for (String id: getPeerIds()) { removePeer(id); } - for(Map.Entry e: peerAddresses.entrySet()) { + for (Map.Entry e: peerAddresses.entrySet()) { addToPeers(e.getKey(), e.getValue(), VotingState.VOTING); } } @@ -130,12 +133,6 @@ public class MockRaftActorContext extends RaftActorContextImpl { } public static class SimpleReplicatedLog extends AbstractReplicatedLogImpl { - @Override - public void appendAndPersist( - ReplicatedLogEntry replicatedLogEntry) { - append(replicatedLogEntry); - } - @Override public int dataSize() { return -1; @@ -151,16 +148,20 @@ public class MockRaftActorContext extends RaftActorContextImpl { } @Override - public void appendAndPersist(ReplicatedLogEntry replicatedLogEntry, Procedure callback) { + @SuppressWarnings("checkstyle:IllegalCatch") + public boolean appendAndPersist(ReplicatedLogEntry replicatedLogEntry, Procedure callback, + boolean doAsync) { append(replicatedLogEntry); - if(callback != null) { + if (callback != null) { try { callback.apply(replicatedLogEntry); } catch (Exception e) { - e.printStackTrace(); + Throwables.propagate(e); } } + + return true; } } @@ -172,13 +173,13 @@ public class MockRaftActorContext extends RaftActorContextImpl { public MockPayload() { } - public MockPayload(String s) { - this.value = s; + public MockPayload(String data) { + this.value = data; size = value.length(); } - public MockPayload(String s, int size) { - this(s); + public MockPayload(String data, int size) { + this(data); this.size = size; } @@ -196,7 +197,7 @@ public class MockRaftActorContext extends RaftActorContextImpl { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((value == null) ? 0 : value.hashCode()); + result = prime * result + (value == null ? 0 : value.hashCode()); return result; } @@ -223,96 +224,19 @@ public class MockRaftActorContext extends RaftActorContextImpl { } } - public static class MockReplicatedLogEntry implements ReplicatedLogEntry, Serializable { - private static final long serialVersionUID = 1L; - - private final long term; - private final long index; - private final Payload data; - - public MockReplicatedLogEntry(long term, long index, Payload data){ - - this.term = term; - this.index = index; - this.data = data; - } - - @Override public Payload getData() { - return data; - } - - @Override public long getTerm() { - return term; - } - - @Override public long getIndex() { - return index; - } - - @Override - public int size() { - return getData().size(); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((data == null) ? 0 : data.hashCode()); - result = prime * result + (int) (index ^ (index >>> 32)); - result = prime * result + (int) (term ^ (term >>> 32)); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - MockReplicatedLogEntry other = (MockReplicatedLogEntry) obj; - if (data == null) { - if (other.data != null) { - return false; - } - } else if (!data.equals(other.data)) { - return false; - } - if (index != other.index) { - return false; - } - if (term != other.term) { - return false; - } - return true; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("MockReplicatedLogEntry [term=").append(term).append(", index=").append(index) - .append(", data=").append(data).append("]"); - return builder.toString(); - } - } - public static class MockReplicatedLogBuilder { private final ReplicatedLog mockLog = new SimpleReplicatedLog(); public MockReplicatedLogBuilder createEntries(int start, int end, int term) { - for (int i=start; i