Changed zeromq-routingtable module to remoterpc-routingtable based on codereview...
[controller.git] / opendaylight / md-sal / remoterpc-routingtable / integrationtest / src / test / java / org / opendaylight / controller / sal / connector / remoterpc / impl / ZeroMQRoutingTableTestIT.java
1 package org.opendaylight.controller.sal.connector.remoterpc.impl;
2
3 import junit.framework.Assert;
4 import org.junit.Test;
5 import org.junit.runner.RunWith;
6 import org.opendaylight.controller.sal.connector.api.RpcRouter;
7 import org.opendaylight.controller.sal.connector.remoterpc.api.RoutingTable;
8 import org.opendaylight.yangtools.yang.common.QName;
9 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
10 import org.ops4j.pax.exam.Configuration;
11 import org.ops4j.pax.exam.Option;
12 import org.ops4j.pax.exam.junit.PaxExam;
13 import org.ops4j.pax.exam.util.PathUtils;
14 import org.osgi.framework.Bundle;
15 import org.osgi.framework.BundleContext;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18
19 import javax.inject.Inject;
20 import java.io.Serializable;
21 import java.net.URI;
22 import java.util.Set;
23
24 import static org.ops4j.pax.exam.CoreOptions.junitBundles;
25 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
26 import static org.ops4j.pax.exam.CoreOptions.options;
27 import static org.ops4j.pax.exam.CoreOptions.systemPackages;
28 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
29
30
31
32
33 @RunWith(PaxExam.class)
34 public class
35         ZeroMQRoutingTableTestIT {
36     private Logger log = LoggerFactory
37             .getLogger(ZeroMQRoutingTableTestIT.class);
38
39     public static final String ODL = "org.opendaylight.controller";
40     public static final String YANG = "org.opendaylight.yangtools";
41     public static final String CONTROLLER = "org.opendaylight.controller";
42     public static final String YANGTOOLS = "org.opendaylight.yangtools";
43     RoutingIdentifierImpl rii  = new RoutingIdentifierImpl();
44     // get the OSGI bundle context
45     @Inject
46     private BundleContext bc;
47     @Inject
48     private RoutingTable routingTable = null;
49
50     // Configure the OSGi container
51     @Configuration
52     public Option[] config() {
53         return options(
54                 //
55                 systemProperty("logback.configurationFile").value(
56                         "file:" + PathUtils.getBaseDir()
57                                 + "/src/test/resources/logback.xml"),
58                 // To start OSGi console for inspection remotely
59                 systemProperty("osgi.console").value("2401"),
60                 // Set the systemPackages (used by clustering)
61                 systemPackages("sun.reflect", "sun.reflect.misc", "sun.misc"),
62                 // List framework bundles
63
64                 mavenBundle("equinoxSDK381",
65                         "org.eclipse.equinox.console").versionAsInProject(),
66                 mavenBundle("equinoxSDK381",
67                         "org.eclipse.equinox.util").versionAsInProject(),
68                 mavenBundle("equinoxSDK381",
69                         "org.eclipse.osgi.services").versionAsInProject(),
70                 mavenBundle("equinoxSDK381",
71                         "org.eclipse.equinox.ds").versionAsInProject(),
72                 mavenBundle("equinoxSDK381",
73                         "org.apache.felix.gogo.command").versionAsInProject(),
74                 mavenBundle("equinoxSDK381",
75                         "org.apache.felix.gogo.runtime").versionAsInProject(),
76                 mavenBundle("equinoxSDK381",
77                         "org.apache.felix.gogo.shell").versionAsInProject(),
78                 // List logger bundles
79                 mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(),
80                 mavenBundle("org.slf4j", "log4j-over-slf4j").versionAsInProject(),
81                 mavenBundle("ch.qos.logback", "logback-core").versionAsInProject(),
82                 mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject(),
83                 // List all the bundles on which the test case depends
84                 mavenBundle(ODL,
85                         "clustering.services").versionAsInProject(),
86
87                 mavenBundle(ODL, "sal").versionAsInProject(),
88                 mavenBundle(ODL,
89                         "sal.implementation").versionAsInProject(),
90                 mavenBundle(ODL, "containermanager").versionAsInProject(),
91                 mavenBundle(ODL,
92                         "containermanager.it.implementation").versionAsInProject(),
93                 mavenBundle("org.jboss.spec.javax.transaction",
94                         "jboss-transaction-api_1.1_spec").versionAsInProject(),
95                 mavenBundle("org.apache.commons", "commons-lang3").versionAsInProject(),
96                 mavenBundle("org.apache.felix",
97                         "org.apache.felix.dependencymanager").versionAsInProject(),
98                 mavenBundle("org.apache.felix",
99                         "org.apache.felix.dependencymanager.shell").versionAsInProject(),
100                 mavenBundle("eclipselink", "javax.resource").versionAsInProject(),
101
102                 mavenBundle("com.google.guava","guava").versionAsInProject(),
103                 // List logger bundles
104                 mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(),
105                 mavenBundle("org.slf4j", "log4j-over-slf4j")
106                         .versionAsInProject(),
107                 mavenBundle("ch.qos.logback", "logback-core")
108                         .versionAsInProject(),
109                 mavenBundle("ch.qos.logback", "logback-classic")
110                         .versionAsInProject(),
111
112                 mavenBundle(ODL, "clustering.services")
113                         .versionAsInProject(),
114                 mavenBundle(ODL, "clustering.stub")
115                         .versionAsInProject(),
116
117
118                 // List all the bundles on which the test case depends
119                 mavenBundle(ODL, "sal")
120                         .versionAsInProject(),
121                 mavenBundle(ODL, "sal-connector-api")
122                         .versionAsInProject(),
123                 mavenBundle(ODL, "remoterpc-routingtable.implementation")
124                         .versionAsInProject(),
125
126                 mavenBundle("org.jboss.spec.javax.transaction",
127                         "jboss-transaction-api_1.1_spec").versionAsInProject(),
128                 mavenBundle("org.apache.commons", "commons-lang3")
129                         .versionAsInProject(),
130                 mavenBundle("org.apache.felix",
131                         "org.apache.felix.dependencymanager")
132                         .versionAsInProject(),
133
134                 mavenBundle(ODL,
135                         "sal-core-api")
136                         .versionAsInProject(),
137                 mavenBundle("org.opendaylight.yangtools","yang-data-api")
138                         .versionAsInProject(),
139                 mavenBundle("org.opendaylight.yangtools","yang-model-api")
140                         .versionAsInProject(),
141                 mavenBundle("org.opendaylight.yangtools","yang-binding")
142                         .versionAsInProject(),
143
144                 mavenBundle(CONTROLLER, "sal-binding-api").versionAsInProject(), //
145                 mavenBundle(CONTROLLER, "sal-binding-config").versionAsInProject(),
146                 mavenBundle(CONTROLLER, "sal-binding-broker-impl").versionAsInProject(), //
147                 mavenBundle("org.javassist", "javassist").versionAsInProject(), //
148                 mavenBundle(CONTROLLER, "sal-common-util").versionAsInProject(), //
149
150                 mavenBundle(YANGTOOLS, "yang-data-api").versionAsInProject(), //
151                 mavenBundle(YANGTOOLS, "yang-data-impl").versionAsInProject(), //
152                 mavenBundle(YANGTOOLS, "yang-model-api").versionAsInProject(), //
153                 mavenBundle(YANGTOOLS, "yang-model-util").versionAsInProject(), //
154                 mavenBundle(YANGTOOLS, "yang-parser-api").versionAsInProject(),
155                 mavenBundle(YANGTOOLS, "yang-parser-impl").versionAsInProject(),
156
157
158                 mavenBundle(YANGTOOLS, "binding-generator-spi").versionAsInProject(), //
159                 mavenBundle(YANGTOOLS, "binding-model-api").versionAsInProject(), //
160                 mavenBundle(YANGTOOLS, "binding-generator-util").versionAsInProject(),
161                 mavenBundle(YANGTOOLS, "yang-parser-impl").versionAsInProject(),
162                 mavenBundle(YANGTOOLS, "binding-type-provider").versionAsInProject(),
163                 mavenBundle(YANGTOOLS, "binding-generator-api").versionAsInProject(),
164                 mavenBundle(YANGTOOLS, "binding-generator-spi").versionAsInProject(),
165                 mavenBundle(YANGTOOLS, "binding-generator-impl").versionAsInProject(),
166
167
168                 mavenBundle(CONTROLLER, "sal-core-api").versionAsInProject().update(), //
169                 mavenBundle(CONTROLLER, "sal-broker-impl").versionAsInProject(), //
170                 mavenBundle(CONTROLLER, "sal-core-spi").versionAsInProject().update(), //
171
172                 mavenBundle(YANGTOOLS + ".thirdparty", "antlr4-runtime-osgi-nohead").versionAsInProject(), //
173
174                 mavenBundle(YANG+".thirdparty", "xtend-lib-osgi").versionAsInProject(),
175                 mavenBundle("com.google.guava", "guava").versionAsInProject(), //
176                 mavenBundle("org.javassist", "javassist").versionAsInProject(),
177                 mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(), //
178                 mavenBundle("org.slf4j", "log4j-over-slf4j").versionAsInProject(), //
179                 mavenBundle("ch.qos.logback", "logback-core").versionAsInProject(), //
180                 mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject(), //
181
182                 mavenBundle(ODL, "sal-common").versionAsInProject(), //
183                 mavenBundle(ODL, "sal-common-api").versionAsInProject(),//
184                 mavenBundle(ODL, "sal-common-impl").versionAsInProject(), //
185                 mavenBundle(ODL, "sal-common-util").versionAsInProject(), //
186
187                 mavenBundle(ODL, "config-api").versionAsInProject(), //
188                 mavenBundle(ODL, "config-manager").versionAsInProject(), //
189                 mavenBundle("commons-io", "commons-io").versionAsInProject(),
190                 mavenBundle("org.apache.commons", "commons-lang3").versionAsInProject(),
191
192                 mavenBundle(ODL, "sal-binding-api").versionAsInProject(), //
193                 mavenBundle(ODL, "sal-binding-config").versionAsInProject(),
194                 mavenBundle("org.javassist", "javassist").versionAsInProject(), //
195                 mavenBundle(ODL, "sal-common-util").versionAsInProject(), //
196
197                 mavenBundle(YANG, "yang-data-api").versionAsInProject(), //
198                 mavenBundle(YANG, "yang-data-impl").versionAsInProject(), //
199                 mavenBundle(YANG, "yang-model-api").versionAsInProject(), //
200                 mavenBundle(YANG, "yang-model-util").versionAsInProject(), //
201                 mavenBundle(YANG, "yang-parser-api").versionAsInProject(),
202                 mavenBundle(YANG, "yang-parser-impl").versionAsInProject(),
203
204
205                 mavenBundle(YANG, "binding-generator-spi").versionAsInProject(), //
206                 mavenBundle(YANG, "binding-model-api").versionAsInProject(), //
207                 mavenBundle(YANG, "binding-generator-util").versionAsInProject(),
208                 mavenBundle(YANG, "yang-parser-impl").versionAsInProject(),
209                 mavenBundle(YANG, "binding-type-provider").versionAsInProject(),
210                 mavenBundle(YANG, "binding-generator-api").versionAsInProject(),
211                 mavenBundle(YANG, "binding-generator-spi").versionAsInProject(),
212                 mavenBundle(YANG, "binding-generator-impl").versionAsInProject(),
213
214
215                 mavenBundle(ODL, "sal-core-api").versionAsInProject().update(), //
216                 mavenBundle(ODL, "sal-broker-impl").versionAsInProject(), //
217                 mavenBundle(ODL, "sal-core-spi").versionAsInProject().update(), //
218
219                 mavenBundle(YANG + ".thirdparty", "antlr4-runtime-osgi-nohead").versionAsInProject(), //
220
221                 mavenBundle(YANG, "concepts").versionAsInProject(),
222                 mavenBundle(YANG, "yang-binding").versionAsInProject(), //
223                 mavenBundle(YANG, "yang-common").versionAsInProject(), //
224                 mavenBundle(YANG+".thirdparty", "xtend-lib-osgi").versionAsInProject(),
225                 mavenBundle("com.google.guava", "guava").versionAsInProject(), //
226                 mavenBundle("org.javassist", "javassist").versionAsInProject(),
227
228                 junitBundles());
229     }
230
231     private String stateToString(int state) {
232         switch (state) {
233             case Bundle.ACTIVE:
234                 return "ACTIVE";
235             case Bundle.INSTALLED:
236                 return "INSTALLED";
237             case Bundle.RESOLVED:
238                 return "RESOLVED";
239             case Bundle.UNINSTALLED:
240                 return "UNINSTALLED";
241             default:
242                 return "Not CONVERTED";
243         }
244     }
245
246     @Test
247   public  void testAddGlobalRoute () throws Exception{
248
249        routingTable.addGlobalRoute(rii,"172.27.12.1:5000");
250
251        Set<String> routes = routingTable.getRoutes(rii);
252
253        for(String route:routes){
254            Assert.assertEquals(route,"172.27.12.1:5000");
255        }
256
257
258     }
259
260
261     @Test
262     public  void testDeleteGlobalRoute () throws Exception{
263
264         routingTable.removeGlobalRoute(rii);
265
266         Set<String> routes = routingTable.getRoutes(rii);
267
268         Assert.assertNull(routes);
269
270
271     }
272
273
274
275    class RoutingIdentifierImpl implements RpcRouter.RouteIdentifier,Serializable {
276
277        private final URI namespace = URI.create("http://cisco.com/example");
278        private final QName QNAME = new QName(namespace,"global");
279        private final QName instance = new QName(URI.create("127.0.0.1"),"local");
280
281        @Override
282        public QName getContext() {
283            return QNAME;
284        }
285
286        @Override
287        public QName getType() {
288            return QNAME;
289        }
290
291        @Override
292        public org.opendaylight.yangtools.yang.data.api.InstanceIdentifier getRoute() {
293            return InstanceIdentifier.of(instance);
294        }
295
296        @Override
297        public boolean equals(Object o) {
298            if (this == o) return true;
299            if (o == null || getClass() != o.getClass()) return false;
300
301            RoutingIdentifierImpl that = (RoutingIdentifierImpl) o;
302
303            if (QNAME != null ? !QNAME.equals(that.QNAME) : that.QNAME != null) return false;
304            if (instance != null ? !instance.equals(that.instance) : that.instance != null) return false;
305            if (namespace != null ? !namespace.equals(that.namespace) : that.namespace != null) return false;
306
307            return true;
308        }
309
310        @Override
311        public int hashCode() {
312            int result = namespace != null ? namespace.hashCode() : 0;
313            result = 31 * result + (QNAME != null ? QNAME.hashCode() : 0);
314            result = 31 * result + (instance != null ? instance.hashCode() : 0);
315            return result;
316        }
317    }
318
319
320
321
322
323 }