import akka.actor.ActorSelection;
import akka.actor.ActorSystem;
import akka.actor.Props;
+import akka.event.Logging;
+import akka.event.LoggingAdapter;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
public class MockRaftActorContext implements RaftActorContext {
private long lastApplied = 0;
private final ElectionTerm electionTerm;
private ReplicatedLog replicatedLog;
+ private Map<String, String> peerAddresses = new HashMap();
public MockRaftActorContext(){
electionTerm = null;
return this.system;
}
+ @Override public LoggingAdapter getLogger() {
+ return Logging.getLogger(system, this);
+ }
+
+ @Override public Map<String, String> getPeerAddresses() {
+ return peerAddresses;
+ }
+
+ @Override public String getPeerAddress(String peerId) {
+ return peerAddresses.get(peerId);
+ }
+
+ public void setPeerAddresses(Map<String, String> peerAddresses) {
+ this.peerAddresses = peerAddresses;
+ }
+
public static class MockReplicatedLog implements ReplicatedLog {
private ReplicatedLogEntry replicatedLogEntry = new MockReplicatedLogEntry(0,0, "");
return last;
}
+ @Override public long lastIndex() {
+ return last.getIndex();
+ }
+
+ @Override public long lastTerm() {
+ return last.getTerm();
+ }
+
@Override public void removeFrom(long index) {
}
@Override public void append(ReplicatedLogEntry replicatedLogEntry) {
}
+ @Override public void appendAndPersist(
+ ReplicatedLogEntry replicatedLogEntry) {
+ }
+
+ @Override public List<ReplicatedLogEntry> getFrom(long index) {
+ return Collections.EMPTY_LIST;
+ }
+
+ @Override public long size() {
+ if(replicatedLogEntry != null){
+ return 1;
+ }
+ return 0;
+ }
+
public void setReplicatedLogEntry(
ReplicatedLogEntry replicatedLogEntry) {
this.replicatedLogEntry = replicatedLogEntry;
private final List<ReplicatedLogEntry> log = new ArrayList<>(10000);
@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 void removeFrom(long index) {
for(int i=(int) index ; i < log.size() ; i++) {
log.remove(i);
@Override public void append(ReplicatedLogEntry replicatedLogEntry) {
log.add(replicatedLogEntry);
}
+
+ @Override public void appendAndPersist(
+ ReplicatedLogEntry replicatedLogEntry) {
+ append(replicatedLogEntry);
+ }
+
+ @Override public List<ReplicatedLogEntry> getFrom(long index) {
+ List<ReplicatedLogEntry> 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();
+ }
}
public static class MockReplicatedLogEntry implements ReplicatedLogEntry {