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=ca34a34ca49337783ec7fda8a9b9966fba1f16ac;hp=77d0071917261ad0c2bfe03573c96a9b5769fb08;hb=43fbc0b14b21dc32ed8a14128453dd1581920f5a;hpb=d255fdd0b14660a22ff63771d954ac3fe5d0cb7e 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 77d0071917..ca34a34ca4 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 @@ -14,11 +14,14 @@ import akka.actor.ActorSystem; import akka.actor.Props; import akka.event.Logging; import akka.event.LoggingAdapter; +import com.google.common.base.Preconditions; +import com.google.protobuf.GeneratedMessage; +import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; +import org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntriesMessages; +import org.opendaylight.controller.protobuff.messages.cluster.raft.test.MockPayloadMessages; -import java.util.ArrayList; -import java.util.Collections; +import java.io.Serializable; import java.util.HashMap; -import java.util.List; import java.util.Map; public class MockRaftActorContext implements RaftActorContext { @@ -31,6 +34,7 @@ public class MockRaftActorContext implements RaftActorContext { private final ElectionTerm electionTerm; private ReplicatedLog replicatedLog; private Map peerAddresses = new HashMap(); + private ConfigParams configParams; public MockRaftActorContext(){ electionTerm = null; @@ -73,13 +77,15 @@ public class MockRaftActorContext implements RaftActorContext { } }; + configParams = new DefaultConfigParamsImpl(); + initReplicatedLog(); } public void initReplicatedLog(){ this.replicatedLog = new SimpleReplicatedLog(); - this.replicatedLog.append(new MockReplicatedLogEntry(1, 1, "")); + this.replicatedLog.append(new MockReplicatedLogEntry(1, 1, new MockPayload(""))); } @Override public ActorRef actorOf(Props props) { @@ -154,121 +160,86 @@ public class MockRaftActorContext implements RaftActorContext { peerAddresses.remove(name); } - public void setPeerAddresses(Map peerAddresses) { - this.peerAddresses = peerAddresses; - } - - - - public static class SimpleReplicatedLog implements ReplicatedLog { - private final List log = new ArrayList<>(); - - @Override public ReplicatedLogEntry get(long index) { - if(index >= log.size() || index < 0){ - return null; - } - return log.get((int) index); - } - - @Override public ReplicatedLogEntry last() { - if(log.size() == 0){ - return null; - } - return log.get(log.size()-1); - } - - @Override public long lastIndex() { - if(log.size() == 0){ - return -1; - } - - return last().getIndex(); - } - - @Override public long lastTerm() { - if(log.size() == 0){ - return -1; - } - - return last().getTerm(); + @Override public ActorSelection getPeerActorSelection(String peerId) { + String peerAddress = getPeerAddress(peerId); + if(peerAddress != null){ + return actorSelection(peerAddress); } + return null; + } - @Override public void removeFrom(long index) { - if(index >= log.size() || index < 0){ - return; - } + @Override public void setPeerAddress(String peerId, String peerAddress) { + Preconditions.checkState(peerAddresses.containsKey(peerId)); + peerAddresses.put(peerId, peerAddress); + } - log.subList((int) index, log.size()).clear(); - //log.remove((int) index); - } + public void setPeerAddresses(Map peerAddresses) { + this.peerAddresses = peerAddresses; + } - @Override public void removeFromAndPersist(long index) { - removeFrom(index); - } + @Override + public ConfigParams getConfigParams() { + return configParams; + } - @Override public void append(ReplicatedLogEntry replicatedLogEntry) { - log.add(replicatedLogEntry); - } + public void setConfigParams(ConfigParams configParams) { + this.configParams = configParams; + } + public static class SimpleReplicatedLog extends AbstractReplicatedLogImpl { @Override public void appendAndPersist( ReplicatedLogEntry replicatedLogEntry) { append(replicatedLogEntry); } - @Override public List getFrom(long index) { - if(index >= log.size() || index < 0){ - return Collections.EMPTY_LIST; - } - List entries = new ArrayList<>(); - for(int i=(int) index ; i < log.size() ; i++) { - entries.add(get(i)); - } - return entries; - } - - @Override public long size() { - return log.size(); + @Override public void removeFromAndPersist(long index) { + removeFrom(index); } + } - @Override public boolean isPresent(long index) { - if(index >= log.size() || index < 0){ - return false; - } + public static class MockPayload extends Payload implements Serializable { + private String value = ""; - return true; + public MockPayload(String s) { + this.value = s; } - @Override public boolean isInSnapshot(long index) { - return false; + @Override public Map encode() { + Map map = new HashMap(); + map.put(MockPayloadMessages.value, value); + return map; } - @Override public Object getSnapshot() { - return null; + @Override public Payload decode( + AppendEntriesMessages.AppendEntries.ReplicatedLogEntry.Payload payloadProtoBuff) { + String value = payloadProtoBuff.getExtension(MockPayloadMessages.value); + this.value = value; + return this; } - @Override public long getSnapshotIndex() { - return -1; + @Override public String getClientPayloadClassName() { + return MockPayload.class.getName(); } - @Override public long getSnapshotTerm() { - return -1; + public String toString() { + return value; } } - public static class MockReplicatedLogEntry implements ReplicatedLogEntry { + public static class MockReplicatedLogEntry implements ReplicatedLogEntry, Serializable { private final long term; private final long index; - private final Object data; + private final Payload data; - public MockReplicatedLogEntry(long term, long index, Object data){ + public MockReplicatedLogEntry(long term, long index, Payload data){ this.term = term; this.index = index; this.data = data; } - @Override public Object getData() { + @Override public Payload getData() { return data; }