Send leader's full address via AppendEntries
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / shardmanager / ShardPeerAddressResolverTest.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.datastore.shardmanager;
9
10 import static org.junit.Assert.assertEquals;
11
12 import akka.actor.Address;
13 import com.google.common.collect.Sets;
14 import java.util.Collection;
15 import org.junit.Test;
16 import org.opendaylight.controller.cluster.access.concepts.MemberName;
17 import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier;
18
19 /**
20  * Unit tests for ShardPeerAddressResolver.
21  *
22  * @author Thomas Pantelis
23  */
24 public class ShardPeerAddressResolverTest {
25     private static final MemberName MEMBER_1 = MemberName.forName("member-1");
26     private static final MemberName MEMBER_2 = MemberName.forName("member-2");
27     private static final MemberName MEMBER_3 = MemberName.forName("member-3");
28
29     @Test
30     public void testGetShardActorAddress() {
31         ShardPeerAddressResolver resolver = new ShardPeerAddressResolver("config", MEMBER_1);
32
33         assertEquals("getShardActorAddress", null, resolver.getShardActorAddress("default", MEMBER_2));
34
35         Address address2 = new Address("tcp", "system2");
36         resolver.addPeerAddress(MEMBER_2, address2);
37         assertEquals("getPeerAddress", address2, resolver.getPeerAddress(MEMBER_2));
38
39         Address address3 = new Address("tcp", "system3");
40         resolver.addPeerAddress(MEMBER_3, address3);
41         assertEquals("getPeerAddress", address3, resolver.getPeerAddress(MEMBER_3));
42
43         assertEquals("getShardActorAddress",
44                 address2.toString() + "/user/shardmanager-config/member-2-shard-default-config",
45                 resolver.getShardActorAddress("default", MEMBER_2));
46
47         assertEquals("getShardActorAddress",
48                 address3.toString() + "/user/shardmanager-config/member-3-shard-default-config",
49                 resolver.getShardActorAddress("default", MEMBER_3));
50
51         assertEquals("getShardActorAddress",
52                 address2.toString() + "/user/shardmanager-config/member-2-shard-topology-config",
53                 resolver.getShardActorAddress("topology", MEMBER_2));
54
55         resolver.removePeerAddress(MEMBER_2);
56         assertEquals("getShardActorAddress", null, resolver.getShardActorAddress("default", MEMBER_2));
57         assertEquals("getShardActorAddress", null, resolver.getShardActorAddress("topology", MEMBER_2));
58         assertEquals("getShardActorAddress",
59                 address3.toString() + "/user/shardmanager-config/member-3-shard-default-config",
60                 resolver.getShardActorAddress("default", MEMBER_3));
61     }
62
63     @Test
64     public void testResolve() {
65         String type = "config";
66         ShardPeerAddressResolver resolver = new ShardPeerAddressResolver(type, MEMBER_1);
67
68         MemberName memberName = MEMBER_2;
69         String peerId = ShardIdentifier.create("default", memberName, type).toString();
70
71         assertEquals("resolve", null, resolver.resolve(peerId));
72
73         Address address = new Address("tcp", "system");
74         resolver.addPeerAddress(memberName, address);
75
76         String shardAddress = resolver.getShardActorAddress("default", memberName);
77         assertEquals("getShardActorAddress", address.toString() + "/user/shardmanager-" + type + "/"
78                 + memberName.getName() + "-shard-default-" + type, shardAddress);
79
80         assertEquals("resolve", shardAddress, resolver.resolve(peerId));
81     }
82
83     @Test
84     public void testSetResolved() {
85         String type = "config";
86         ShardPeerAddressResolver resolver = new ShardPeerAddressResolver(type, MEMBER_1);
87
88         String peerId = ShardIdentifier.create("default", MEMBER_2, type).toString();
89
90         String address = "akka.tcp://opendaylight-cluster-data@127.0.0.1:2550/user/shardmanager-" + type
91                 + "/" + MEMBER_2.getName() + "-shard-default-" + type;
92
93         resolver.setResolved(peerId, address);
94
95         assertEquals("resolve", address, resolver.resolve(peerId));
96     }
97
98     @Test
99     public void testGetShardManagerPeerActorAddresses() {
100         ShardPeerAddressResolver resolver = new ShardPeerAddressResolver("config", MEMBER_1);
101
102         resolver.addPeerAddress(MEMBER_1, new Address("tcp", "system1"));
103
104         Address address2 = new Address("tcp", "system2");
105         resolver.addPeerAddress(MEMBER_2, address2);
106
107         Address address3 = new Address("tcp", "system3");
108         resolver.addPeerAddress(MEMBER_3, address3);
109
110         Collection<String> peerAddresses = resolver.getShardManagerPeerActorAddresses();
111         assertEquals("getShardManagerPeerActorAddresses", Sets.newHashSet(
112                 address2.toString() + "/user/shardmanager-config",
113                 address3.toString() + "/user/shardmanager-config"), Sets.newHashSet(peerAddresses));
114     }
115 }