2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.cluster.raft;
11 import akka.actor.ActorRef;
12 import akka.actor.ActorSelection;
13 import akka.actor.ActorSystem;
14 import akka.actor.Props;
16 import java.util.ArrayList;
17 import java.util.List;
19 public class MockRaftActorContext implements RaftActorContext {
22 private ActorSystem system;
23 private ActorRef actor;
24 private long index = 0;
25 private long lastApplied = 0;
26 private final ElectionTerm electionTerm;
27 private ReplicatedLog replicatedLog;
29 public MockRaftActorContext(){
35 public MockRaftActorContext(String id, ActorSystem system, ActorRef actor){
40 electionTerm = new ElectionTermImpl(id);
46 public void initReplicatedLog(){
47 MockReplicatedLog mockReplicatedLog = new MockReplicatedLog();
48 this.replicatedLog = mockReplicatedLog;
49 mockReplicatedLog.setLast(new MockReplicatedLogEntry(1,1,""));
50 mockReplicatedLog.setReplicatedLogEntry(new MockReplicatedLogEntry(1,1, ""));
53 @Override public ActorRef actorOf(Props props) {
54 return system.actorOf(props);
57 @Override public ActorSelection actorSelection(String path) {
58 return system.actorSelection(path);
61 @Override public String getId() {
65 @Override public ActorRef getActor() {
69 @Override public ElectionTerm getTermInformation() {
73 public void setIndex(long index){
77 @Override public long getCommitIndex() {
81 @Override public void setCommitIndex(long commitIndex) {
82 this.index = commitIndex;
85 @Override public void setLastApplied(long lastApplied){
86 this.lastApplied = lastApplied;
89 @Override public long getLastApplied() {
93 public void setReplicatedLog(ReplicatedLog replicatedLog) {
94 this.replicatedLog = replicatedLog;
97 @Override public ReplicatedLog getReplicatedLog() {
101 @Override public ActorSystem getActorSystem() {
106 public static class MockReplicatedLog implements ReplicatedLog {
107 private ReplicatedLogEntry replicatedLogEntry = new MockReplicatedLogEntry(0,0, "");
108 private ReplicatedLogEntry last = new MockReplicatedLogEntry(0,0, "");
110 @Override public ReplicatedLogEntry get(long index) {
111 return replicatedLogEntry;
114 @Override public ReplicatedLogEntry last() {
118 @Override public void removeFrom(long index) {
121 @Override public void append(ReplicatedLogEntry replicatedLogEntry) {
124 public void setReplicatedLogEntry(
125 ReplicatedLogEntry replicatedLogEntry) {
126 this.replicatedLogEntry = replicatedLogEntry;
129 public void setLast(ReplicatedLogEntry last) {
134 public static class SimpleReplicatedLog implements ReplicatedLog {
135 private final List<ReplicatedLogEntry> log = new ArrayList<>(10000);
137 @Override public ReplicatedLogEntry get(long index) {
138 return log.get((int) index);
141 @Override public ReplicatedLogEntry last() {
142 return log.get(log.size()-1);
145 @Override public void removeFrom(long index) {
146 for(int i=(int) index ; i < log.size() ; i++) {
151 @Override public void append(ReplicatedLogEntry replicatedLogEntry) {
152 log.add(replicatedLogEntry);
156 public static class MockReplicatedLogEntry implements ReplicatedLogEntry {
158 private final long term;
159 private final long index;
160 private final Object data;
162 public MockReplicatedLogEntry(long term, long index, Object data){
169 @Override public Object getData() {
173 @Override public long getTerm() {
177 @Override public long getIndex() {