Initial code/design for an Akka Raft implementation
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / test / java / org / opendaylight / controller / cluster / raft / MockRaftActorContext.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.controller.cluster.raft;
10
11 import akka.actor.ActorRef;
12 import akka.actor.ActorSelection;
13 import akka.actor.ActorSystem;
14 import akka.actor.Props;
15
16 import java.util.concurrent.atomic.AtomicLong;
17
18 public class MockRaftActorContext implements RaftActorContext {
19
20     private String id;
21     private ActorSystem system;
22     private ActorRef actor;
23
24     public MockRaftActorContext(){
25
26     }
27
28     public MockRaftActorContext(String id, ActorSystem system, ActorRef actor){
29         this.id = id;
30         this.system = system;
31         this.actor = actor;
32     }
33
34     @Override public ActorRef actorOf(Props props) {
35         return system.actorOf(props);
36     }
37
38     @Override public ActorSelection actorSelection(String path) {
39         return system.actorSelection(path);
40     }
41
42     @Override public String getId() {
43         return id;
44     }
45
46     @Override public ActorRef getActor() {
47         return actor;
48     }
49
50     @Override public ElectionTerm getTermInformation() {
51         return new ElectionTermImpl(this.id);
52     }
53
54     @Override public AtomicLong getCommitIndex() {
55         throw new UnsupportedOperationException("getCommitIndex");
56     }
57
58     @Override public AtomicLong getLastApplied() {
59         throw new UnsupportedOperationException("getLastApplied");
60     }
61
62     @Override public ReplicatedLog getReplicatedLog() {
63         return new ReplicatedLog(){
64
65             @Override public ReplicatedLogEntry getReplicatedLogEntry(
66                 long index) {
67                 throw new UnsupportedOperationException(
68                     "getReplicatedLogEntry");
69             }
70
71             @Override public ReplicatedLogEntry last() {
72                 return new ReplicatedLogEntry() {
73                     @Override public Object getData() {
74                         return null;
75                     }
76
77                     @Override public long getTerm() {
78                         return 1;
79                     }
80
81                     @Override public long getIndex() {
82                         return 1;
83                     }
84                 };
85             }
86         };
87     }
88 }