Merge "Add replication capability to Shard"
[controller.git] / opendaylight / md-sal / sal-remoterpc-connector / src / test / java / org / opendaylight / controller / remote / rpc / registry / RoutingTableTest.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.remote.rpc.registry;
10
11 import junit.framework.Assert;
12 import org.junit.Test;
13 import org.opendaylight.controller.remote.rpc.RouteIdentifierImpl;
14 import org.opendaylight.controller.sal.connector.api.RpcRouter;
15 import org.opendaylight.yangtools.yang.common.QName;
16
17 import java.net.URI;
18 import java.net.URISyntaxException;
19 import java.util.HashSet;
20 import java.util.Set;
21
22 public class RoutingTableTest {
23
24   private RoutingTable<RpcRouter.RouteIdentifier<?, ?, ?>, String> routingTable =
25       new RoutingTable<>();
26
27   @Test
28   public void addGlobalRouteNullRouteIdTest() {
29     try {
30       routingTable.addGlobalRoute(null, null);
31
32       Assert.fail("Null pointer exception was not thrown.");
33     } catch (Exception e) {
34       Assert.assertEquals(NullPointerException.class.getName(), e.getClass().getName());
35       Assert.assertEquals("addGlobalRoute: routeId cannot be null!", e.getMessage());
36     }
37   }
38
39   @Test
40   public void addGlobalRouteNullRouteTest() {
41     try {
42       QName type = new QName(new URI("actor1"), "actor1");
43       RouteIdentifierImpl routeId = new RouteIdentifierImpl(null, type, null);
44       routingTable.addGlobalRoute(routeId, null);
45
46       Assert.fail("Null pointer exception was not thrown.");
47     } catch (Exception e) {
48       Assert.assertEquals(NullPointerException.class.getName(), e.getClass().getName());
49       Assert.assertEquals("addGlobalRoute: route cannot be null!", e.getMessage());
50     }
51   }
52
53   @Test
54   public void getGlobalRouteNullTest() {
55     try {
56       routingTable.getGlobalRoute(null);
57
58       Assert.fail("Null pointer exception was not thrown.");
59     } catch (Exception e) {
60       Assert.assertEquals(NullPointerException.class.getName(), e.getClass().getName());
61       Assert.assertEquals("getGlobalRoute: routeId cannot be null!", e.getMessage());
62     }
63   }
64
65   @Test
66   public void getGlobalRouteTest() throws URISyntaxException {
67     QName type = new QName(new URI("actor1"), "actor1");
68     RouteIdentifierImpl routeId = new RouteIdentifierImpl(null, type, null);
69     String route = "actor1";
70
71     routingTable.addGlobalRoute(routeId, route);
72
73     String returnedRoute = routingTable.getGlobalRoute(routeId);
74
75     Assert.assertEquals(route, returnedRoute);
76
77   }
78
79   @Test
80   public void removeGlobalRouteTest() throws URISyntaxException {
81     QName type = new QName(new URI("actorRemove"), "actorRemove");
82     RouteIdentifierImpl routeId = new RouteIdentifierImpl(null, type, null);
83     String route = "actorRemove";
84
85     routingTable.addGlobalRoute(routeId, route);
86
87     String returnedRoute = routingTable.getGlobalRoute(routeId);
88
89     Assert.assertEquals(route, returnedRoute);
90
91     routingTable.removeGlobalRoute(routeId);
92
93     String deletedRoute = routingTable.getGlobalRoute(routeId);
94
95     Assert.assertNull(deletedRoute);
96   }
97
98   @Test
99   public void addRoutedRpcNullRouteIdTest() {
100     try {
101       routingTable.addRoutedRpc(null, null);
102
103       Assert.fail("Null pointer exception was not thrown.");
104     } catch (Exception e) {
105       Assert.assertEquals(NullPointerException.class.getName(), e.getClass().getName());
106       Assert.assertEquals("addRoute: routeId cannot be null", e.getMessage());
107     }
108   }
109
110   @Test
111   public void addRoutedRpcNullRouteTest() {
112     try {
113       QName type = new QName(new URI("actor1"), "actor1");
114       RouteIdentifierImpl routeId = new RouteIdentifierImpl(null, type, null);
115
116       routingTable.addRoutedRpc(routeId, null);
117
118       Assert.fail("Null pointer exception was not thrown.");
119     } catch (Exception e) {
120       Assert.assertEquals(NullPointerException.class.getName(), e.getClass().getName());
121       Assert.assertEquals("addRoute: route cannot be null", e.getMessage());
122     }
123   }
124
125   @Test
126   public void getRoutedRpcNullTest() {
127     try {
128       routingTable.getRoutedRpc(null);
129
130       Assert.fail("Null pointer exception was not thrown.");
131     } catch (Exception e) {
132       Assert.assertEquals(NullPointerException.class.getName(), e.getClass().getName());
133       Assert.assertEquals("getRoutes: routeId cannot be null!", e.getMessage());
134     }
135   }
136
137   @Test
138   public void getRoutedRpcTest() throws URISyntaxException {
139     QName type = new QName(new URI("actor1"), "actor1");
140     RouteIdentifierImpl routeId = new RouteIdentifierImpl(null, type, null);
141     String route = "actor1";
142
143     routingTable.addRoutedRpc(routeId, route);
144
145     Set<String> routes = routingTable.getRoutedRpc(routeId);
146
147     Assert.assertEquals(1, routes.size());
148     Assert.assertTrue(routes.contains(route));
149
150   }
151
152   @Test
153   public void getLastRoutedRpcTest() throws URISyntaxException {
154     QName type = new QName(new URI("first1"), "first1");
155     RouteIdentifierImpl routeId = new RouteIdentifierImpl(null, type, null);
156     String route = "first1";
157
158     routingTable.addRoutedRpc(routeId, route);
159
160     String route2 = "second1";
161     routingTable.addRoutedRpc(routeId, route2);
162
163     String latest = routingTable.getLastAddedRoutedRpc(routeId);
164     Assert.assertEquals(route2, latest);
165
166   }
167
168   @Test
169   public void removeRoutedRpcTest() throws URISyntaxException {
170     QName type = new QName(new URI("remove"), "remove");
171     RouteIdentifierImpl routeId = new RouteIdentifierImpl(null, type, null);
172     String route = "remove";
173     routingTable.addRoutedRpc(routeId, route);
174
175     String latest = routingTable.getLastAddedRoutedRpc(routeId);
176     Assert.assertEquals(route, latest);
177
178     routingTable.removeRoute(routeId, route);
179     String removed = routingTable.getLastAddedRoutedRpc(routeId);
180     Assert.assertNull(removed);
181   }
182
183   @Test
184   public void removeRoutedRpcsTest() throws URISyntaxException {
185     QName type = new QName(new URI("remove1"), "remove1");
186     RouteIdentifierImpl routeId = new RouteIdentifierImpl(null, type, null);
187
188     QName type2 = new QName(new URI("remove2"), "remove2");
189     RouteIdentifierImpl routeId2 = new RouteIdentifierImpl(null, type2, null);
190
191     Set<RpcRouter.RouteIdentifier<?, ?, ?>> routeIds = new HashSet<>();
192     routeIds.add(routeId);
193     routeIds.add(routeId2);
194     String route = "remove1";
195
196     routingTable.addRoutedRpcs(routeIds, route);
197     String latest1 = routingTable.getLastAddedRoutedRpc(routeId);
198     Assert.assertEquals(route, latest1);
199
200     String latest2 = routingTable.getLastAddedRoutedRpc(routeId2);
201     Assert.assertEquals(route, latest2);
202
203     routingTable.removeRoutes(routeIds, route);
204     String removed1 = routingTable.getLastAddedRoutedRpc(routeId);
205     Assert.assertNull(removed1);
206
207     String removed2 = routingTable.getLastAddedRoutedRpc(routeId2);
208     Assert.assertNull(removed2);
209   }
210
211 }