1 package org.opendaylight.controller.cluster.raft.behaviors;
3 import akka.testkit.JavaTestKit;
4 import junit.framework.Assert;
6 import org.opendaylight.controller.cluster.raft.AbstractActorTest;
7 import org.opendaylight.controller.cluster.raft.MockRaftActorContext;
8 import org.opendaylight.controller.cluster.raft.RaftState;
9 import org.opendaylight.controller.cluster.raft.internal.messages.SendHeartBeat;
10 import org.opendaylight.controller.cluster.raft.messages.AppendEntries;
12 import java.util.ArrayList;
13 import java.util.Collections;
14 import java.util.List;
16 import static org.junit.Assert.assertEquals;
18 public class LeaderTest extends AbstractActorTest {
21 public void testHandleMessageForUnknownMessage() throws Exception {
22 new JavaTestKit(getSystem()) {{
24 new Leader(new MockRaftActorContext(), Collections.EMPTY_LIST);
26 // handle message should return the Leader state when it receives an
28 RaftState state = leader.handleMessage(getRef(), "foo");
29 Assert.assertEquals(RaftState.Leader, state);
35 public void testThatLeaderSendsAHeartbeatMessageToAllFollowers(){
36 new JavaTestKit(getSystem()) {{
38 new Within(duration("1 seconds")) {
39 protected void run() {
41 List<String> followers = new ArrayList();
43 followers.add(getTestActor().path().toString());
45 Leader leader = new Leader(new MockRaftActorContext("test", getSystem(), getTestActor()), followers);
46 leader.handleMessage(getRef(), new SendHeartBeat());
48 final String out = new ExpectMsg<String>(duration("1 seconds"), "match hint") {
49 // do not put code outside this method, will run afterwards
50 protected String match(Object in) {
51 if (in instanceof AppendEntries) {
52 if (((AppendEntries) in).getTerm()
61 }.get(); // this extracts the received message
63 assertEquals("match", out);