2 * Copyright (c) 2015 Brocade Communications 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
8 package org.opendaylight.controller.cluster.raft;
10 import static org.mockito.Mockito.mock;
11 import static org.mockito.Mockito.never;
12 import static org.mockito.Mockito.timeout;
13 import static org.mockito.Mockito.verify;
14 import akka.dispatch.Dispatchers;
15 import org.junit.After;
16 import org.junit.Test;
17 import org.opendaylight.controller.cluster.raft.RaftActorLeadershipTransferCohort.OnComplete;
20 * Unit tests for RaftActorLeadershipTransferCohort.
22 * @author Thomas Pantelis
24 public class RaftActorLeadershipTransferCohortTest extends AbstractActorTest {
25 private final TestActorFactory factory = new TestActorFactory(getSystem());
26 private MockRaftActor mockRaftActor;
27 private RaftActorLeadershipTransferCohort cohort;
28 private final OnComplete onComplete = mock(OnComplete.class);
29 DefaultConfigParamsImpl config = new DefaultConfigParamsImpl();
32 public void tearDown() {
36 private void setup() {
37 String persistenceId = factory.generateActorId("leader-");
38 mockRaftActor = factory.<MockRaftActor>createTestActor(MockRaftActor.builder().id(persistenceId).config(
39 config).props().withDispatcher(Dispatchers.DefaultDispatcherId()), persistenceId).underlyingActor();
40 cohort = new RaftActorLeadershipTransferCohort(mockRaftActor, null);
41 cohort.addOnComplete(onComplete);
42 mockRaftActor.waitForInitializeBehaviorComplete();
46 public void testOnNewLeader() {
48 cohort.setNewLeaderTimeoutInMillis(20000);
50 cohort.onNewLeader("new-leader");
51 verify(onComplete, never()).onSuccess(mockRaftActor.self(), null);
53 cohort.transferComplete();
55 cohort.onNewLeader(null);
56 verify(onComplete, never()).onSuccess(mockRaftActor.self(), null);
58 cohort.onNewLeader("new-leader");
59 verify(onComplete).onSuccess(mockRaftActor.self(), null);
63 public void testNewLeaderTimeout() {
65 cohort.setNewLeaderTimeoutInMillis(200);
66 cohort.transferComplete();
67 verify(onComplete, timeout(3000)).onSuccess(mockRaftActor.self(), null);
71 public void testNotLeaderOnRun() {
72 config.setElectionTimeoutFactor(10000);
75 verify(onComplete).onSuccess(mockRaftActor.self(), null);
79 public void testAbortTransfer() {
81 cohort.abortTransfer();
82 verify(onComplete).onFailure(mockRaftActor.self(), null);