Bug 2187: Bootstrap EOS shard when no local shards configured
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / test / java / org / opendaylight / controller / cluster / raft / RaftActorContextImplTest.java
1 /*
2  * Copyright (c) 2015 Brocade Communications 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 package org.opendaylight.controller.cluster.raft;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.mockito.Matchers.anyString;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.mock;
14 import static org.mockito.Mockito.never;
15 import static org.mockito.Mockito.reset;
16 import static org.mockito.Mockito.verify;
17 import akka.actor.Props;
18 import akka.testkit.TestActorRef;
19 import com.google.common.collect.ImmutableMap;
20 import com.google.common.collect.Maps;
21 import java.util.HashMap;
22 import java.util.Map;
23 import org.junit.After;
24 import org.junit.Test;
25 import org.opendaylight.controller.cluster.NonPersistentDataProvider;
26 import org.opendaylight.controller.cluster.raft.utils.DoNothingActor;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30 /**
31  * Unit tests for RaftActorContextImpl.
32  *
33  * @author Thomas Pantelis
34  */
35 public class RaftActorContextImplTest extends AbstractActorTest {
36     private final TestActorFactory actorFactory = new TestActorFactory(getSystem());
37
38     private final TestActorRef<DoNothingActor> actor = actorFactory.createTestActor(
39             Props.create(DoNothingActor.class), actorFactory.generateActorId("actor"));
40
41     private final Logger log = LoggerFactory.getLogger(RaftActorContextImplTest.class);
42
43     @After
44     public void tearDown() {
45         actorFactory.close();
46     }
47
48     @Test
49     public void testGetPeerAddress() {
50         Map<String, String> peerMap = new HashMap<>();
51         peerMap.put("peer1", "peerAddress1");
52         peerMap.put("peer2", null);
53         DefaultConfigParamsImpl configParams = new DefaultConfigParamsImpl();
54         RaftActorContextImpl context = new RaftActorContextImpl(actor, actor.underlyingActor().getContext(),
55                 "test", new ElectionTermImpl(new NonPersistentDataProvider(), "test", log), -1, -1,
56                 peerMap, configParams, new NonPersistentDataProvider(), log);
57
58         assertEquals("getPeerAddress", "peerAddress1", context.getPeerAddress("peer1"));
59         assertEquals("getPeerAddress", null, context.getPeerAddress("peer2"));
60
61         PeerAddressResolver mockResolver = mock(PeerAddressResolver.class);
62         doReturn("peerAddress2").when(mockResolver).resolve("peer2");
63         doReturn("peerAddress3").when(mockResolver).resolve("peer3");
64         configParams.setPeerAddressResolver(mockResolver);
65
66         assertEquals("getPeerAddress", "peerAddress2", context.getPeerAddress("peer2"));
67         assertEquals("getPeerAddress", "peerAddress3", context.getPeerAddress("peer3"));
68
69         reset(mockResolver);
70         assertEquals("getPeerAddress", "peerAddress1", context.getPeerAddress("peer1"));
71         assertEquals("getPeerAddress", "peerAddress2", context.getPeerAddress("peer2"));
72         verify(mockResolver, never()).resolve(anyString());
73     }
74
75     @Test
76     public void testSetPeerAddress() {
77         DefaultConfigParamsImpl configParams = new DefaultConfigParamsImpl();
78         RaftActorContextImpl context = new RaftActorContextImpl(actor, actor.underlyingActor().getContext(),
79                 "test", new ElectionTermImpl(new NonPersistentDataProvider(), "test", log), -1, -1,
80                 Maps.newHashMap(ImmutableMap.<String, String>of("peer1", "peerAddress1")), configParams,
81                 new NonPersistentDataProvider(), log);
82
83         context.setPeerAddress("peer1", "peerAddress1_1");
84         assertEquals("getPeerAddress", "peerAddress1_1", context.getPeerAddress("peer1"));
85
86         context.setPeerAddress("peer2", "peerAddress2");
87         assertEquals("getPeerAddress", null, context.getPeerAddress("peer2"));
88     }
89 }