Merge "Updated sal-netconf-connector mountpoint integration"
[controller.git] / opendaylight / md-sal / test / sal-rest-connector-it / src / test / java / org / opendaylight / controller / test / restconf / it / ServiceProviderController.java
1 package org.opendaylight.controller.test.restconf.it;
2
3 import static junit.framework.Assert.assertEquals;
4 import static org.junit.Assert.*;
5 import static org.ops4j.pax.exam.CoreOptions.junitBundles;
6 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
7 import static org.ops4j.pax.exam.CoreOptions.options;
8 import static org.ops4j.pax.exam.CoreOptions.systemPackages;
9 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
10 import static org.ops4j.pax.exam.CoreOptions.maven;
11
12 import java.net.InetSocketAddress;
13 import java.net.URI;
14 import java.util.Collection;
15 import java.util.Collections;
16 import java.util.Map;
17
18 import javax.inject.Inject;
19
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
23 import org.opendaylight.controller.sal.connect.netconf.InventoryUtils;
24 import org.opendaylight.controller.sal.connect.netconf.NetconfDeviceManager;
25 import org.opendaylight.controller.sal.connect.netconf.NetconfInventoryUtils;
26 import org.opendaylight.controller.sal.core.api.data.DataBrokerService;
27 import org.opendaylight.controller.sal.core.api.mount.MountProvisionInstance;
28 import org.opendaylight.controller.sal.core.api.mount.MountProvisionService;
29 import org.opendaylight.controller.test.sal.binding.it.TestHelper;
30 import org.opendaylight.yangtools.yang.common.QName;
31 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
32 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
33 import org.ops4j.pax.exam.Configuration;
34 import org.ops4j.pax.exam.CoreOptions;
35 import org.ops4j.pax.exam.Option;
36 import org.ops4j.pax.exam.junit.PaxExam;
37 import org.ops4j.pax.exam.util.PathUtils;
38 import org.osgi.framework.BundleContext;
39 import org.osgi.framework.InvalidSyntaxException;
40 import org.osgi.framework.ServiceReference;
41
42 import static org.opendaylight.controller.test.sal.binding.it.TestHelper.*;
43
44 @RunWith(PaxExam.class)
45 public class ServiceProviderController {
46
47     public static final String ODL = "org.opendaylight.controller";
48     public static final String YANG = "org.opendaylight.yangtools";
49     public static final String SAMPLE = "org.opendaylight.controller.samples";
50
51     private static QName CONFIG_MODULES = new QName(
52             URI.create("urn:opendaylight:params:xml:ns:yang:controller:config"), null, "modules");
53     private static QName CONFIG_SERVICES = new QName(
54             URI.create("urn:opendaylight:params:xml:ns:yang:controller:config"), null, "modules");
55     @Inject
56     BundleContext context;
57
58     @Inject
59     MountProvisionService mountService;
60
61     @Inject
62     DataBrokerService dataBroker;
63
64     @Inject
65     NetconfDeviceManager netconfManager;
66
67     @Test
68     public void properInitialized() throws Exception {
69
70         Map<QName, String> arg = Collections.singletonMap(InventoryUtils.INVENTORY_ID, "foo");
71
72         InstanceIdentifier path = InstanceIdentifier.builder(InventoryUtils.INVENTORY_PATH)
73                 .nodeWithKey(InventoryUtils.INVENTORY_NODE, InventoryUtils.INVENTORY_ID, "foo").toInstance();
74
75         netconfManager.netconfNodeAdded(path, new InetSocketAddress("127.0.0.1", 8383));
76
77         
78         InstanceIdentifier mountPointPath = path;
79         
80         /** We retrive a mountpoint **/
81         MountProvisionInstance mountPoint = mountService.getMountPoint(mountPointPath);
82         CompositeNode data = mountPoint.readOperationalData(InstanceIdentifier.builder().node(CONFIG_MODULES)
83                 .toInstance());
84         assertNotNull(data);
85         assertEquals(CONFIG_MODULES, data.getNodeType());
86
87         CompositeNode data2 = mountPoint.readOperationalData(InstanceIdentifier.builder().toInstance());
88         assertNotNull(data2);
89
90         InstanceIdentifier fullPath = InstanceIdentifier.builder(mountPointPath).node(CONFIG_MODULES).toInstance();
91
92         CompositeNode data3 = dataBroker.readOperationalData(fullPath);
93         assertNotNull(data3);
94         assertEquals(CONFIG_MODULES, data.getNodeType());
95
96         //Thread.sleep(30 * 60 * 1000); // Waiting for services to get wired.
97         //assertTrue(true);
98         // assertTrue(consumer.createToast(WhiteBread.class, 5));
99     }
100
101     @Configuration
102     public Option[] config() {
103         return options(
104                 mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(), //
105                 mavenBundle("org.slf4j", "log4j-over-slf4j").versionAsInProject(), //
106                 mavenBundle("ch.qos.logback", "logback-core").versionAsInProject(), //
107                 mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject(), //
108
109                 mdSalCoreBundles(),
110                 baseModelBundles(),
111                 flowCapableModelBundles(),
112                 configMinumumBundles(),
113
114                 // mavenBundle(ODL,
115                 // "sal-binding-broker-impl").versionAsInProject().update(), //
116                 mavenBundle(ODL, "sal-common").versionAsInProject(), //
117                 mavenBundle(ODL, "sal-common-api").versionAsInProject(),//
118                 mavenBundle(ODL, "sal-common-impl").versionAsInProject(), //
119                 mavenBundle(ODL, "sal-common-util").versionAsInProject(), //
120
121                 mavenBundle(ODL, "sal-core-api").versionAsInProject().update(), //
122                 mavenBundle(ODL, "sal-broker-impl").versionAsInProject(), //
123                 mavenBundle(ODL, "sal-core-spi").versionAsInProject().update(), //
124
125                 mavenBundle(ODL, "sal-connector-api").versionAsInProject(), //
126                 // mavenBundle(SAMPLE,
127                 // "zeromq-test-provider").versionAsInProject(), //
128                 mavenBundle(ODL, "sal-rest-connector").versionAsInProject(), //
129                 mavenBundle(ODL, "sal-netconf-connector").versionAsInProject(), //
130
131                 mavenBundle(YANG, "concepts").versionAsInProject(),
132                 mavenBundle(YANG, "yang-binding").versionAsInProject(), //
133                 mavenBundle(YANG, "yang-common").versionAsInProject(), //
134                 mavenBundle(YANG, "yang-data-api").versionAsInProject(), //
135                 mavenBundle(YANG, "yang-data-impl").versionAsInProject(), //
136                 mavenBundle(YANG, "yang-model-api").versionAsInProject(), //
137                 mavenBundle(YANG, "yang-model-util").versionAsInProject(), //
138                 mavenBundle(YANG, "yang-parser-api").versionAsInProject(),
139                 mavenBundle(YANG, "yang-parser-impl").versionAsInProject(),
140
141                 mavenBundle(YANG + ".thirdparty", "xtend-lib-osgi").versionAsInProject(), //
142                 mavenBundle(YANG + ".thirdparty", "antlr4-runtime-osgi-nohead").versionAsInProject(), //
143                 mavenBundle("com.google.guava", "guava").versionAsInProject(), //
144
145                 // systemProperty("logback.configurationFile").value(
146                 // "file:" + PathUtils.getBaseDir() +
147                 // "/src/test/resources/logback.xml"),
148                 // To start OSGi console for inspection remotely
149                 systemProperty("osgi.console").value("2401"),
150                 systemProperty("org.eclipse.gemini.web.tomcat.config.path").value(
151                         PathUtils.getBaseDir() + "/src/test/resources/tomcat-server.xml"),
152
153                 // setting default level. Jersey bundles will need to be started
154                 // earlier.
155                 systemProperty("osgi.bundles.defaultStartLevel").value("4"),
156
157                 systemProperty("netconf.tcp.address").value("127.0.0.1"),
158                 systemProperty("netconf.tcp.port").value("8383"),
159
160                 // Set the systemPackages (used by clustering)
161                 systemPackages("sun.reflect", "sun.reflect.misc", "sun.misc"),
162
163                 mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.xerces", "2.11.0_1"),
164                 mavenBundle("org.eclipse.birt.runtime.3_7_1", "org.apache.xml.resolver", "1.2.0"),
165
166                 mavenBundle("org.slf4j", "jcl-over-slf4j").versionAsInProject(),
167                 mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(),
168                 mavenBundle("org.slf4j", "log4j-over-slf4j").versionAsInProject(),
169                 mavenBundle("ch.qos.logback", "logback-core").versionAsInProject(),
170                 mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject(),
171                 mavenBundle("org.apache.commons", "commons-lang3").versionAsInProject(),
172                 mavenBundle("org.apache.felix", "org.apache.felix.dependencymanager").versionAsInProject(),
173                 mavenBundle("org.opendaylight.controller", "clustering.services").versionAsInProject(),
174                 mavenBundle("org.opendaylight.controller", "containermanager").versionAsInProject(),
175                 // List all the opendaylight modules
176                 mavenBundle("org.opendaylight.controller", "configuration").versionAsInProject(),
177                 mavenBundle("org.opendaylight.controller", "sal").versionAsInProject(),
178                 mavenBundle("org.opendaylight.controller", "switchmanager").versionAsInProject(),
179                 mavenBundle("org.opendaylight.controller", "usermanager").versionAsInProject(),
180                 mavenBundle("org.opendaylight.controller", "logging.bridge").versionAsInProject(),
181                 // mavenBundle("org.opendaylight.controller",
182                 // "clustering.test").versionAsInProject(),
183                 mavenBundle("org.opendaylight.controller", "bundlescanner").versionAsInProject(),
184                 mavenBundle("org.opendaylight.controller", "bundlescanner.implementation").versionAsInProject(),
185
186                 // Northbound bundles
187                 mavenBundle("org.opendaylight.controller", "commons.northbound").versionAsInProject(),
188                 mavenBundle("org.codehaus.jackson", "jackson-mapper-asl").versionAsInProject(),
189                 mavenBundle("org.codehaus.jackson", "jackson-core-asl").versionAsInProject(),
190                 mavenBundle("org.codehaus.jackson", "jackson-jaxrs").versionAsInProject(),
191                 mavenBundle("org.codehaus.jackson", "jackson-xc").versionAsInProject(),
192                 mavenBundle("org.codehaus.jettison", "jettison").versionAsInProject(),
193
194                 mavenBundle("commons-io", "commons-io").versionAsInProject(),
195
196                 // mavenBundle("commons-fileupload",
197                 // "commons-fileupload").versionAsInProject(),
198
199                 mavenBundle("io.netty", "netty-handler").versionAsInProject(),
200                 mavenBundle("io.netty", "netty-codec").versionAsInProject(),
201                 mavenBundle("io.netty", "netty-buffer").versionAsInProject(),
202                 mavenBundle("io.netty", "netty-transport").versionAsInProject(),
203                 mavenBundle("io.netty", "netty-common").versionAsInProject(),
204
205                 mavenBundle(ODL, "config-api").versionAsInProject(),
206                 mavenBundle(ODL, "config-manager").versionAsInProject(),
207                 mavenBundle(ODL, "config-util").versionAsInProject(),
208                 mavenBundle(ODL, "yang-jmx-generator").versionAsInProject(),
209                 mavenBundle(ODL, "yang-store-api").versionAsInProject(),
210                 mavenBundle(ODL, "yang-store-impl").versionAsInProject(),
211                 mavenBundle(ODL, "logback-config").versionAsInProject(),
212                 mavenBundle(ODL, "config-persister-api").versionAsInProject(),
213                 // mavenBundle(ODL,"config-persister-file-adapter").versionAsInProject(),
214                 mavenBundle(ODL, "netconf-api").versionAsInProject(),
215                 mavenBundle(ODL, "netconf-impl").versionAsInProject(),
216                 mavenBundle(ODL, "netconf-client").versionAsInProject(),
217                 mavenBundle(ODL, "netconf-util").versionAsInProject(),
218                 mavenBundle(ODL + ".thirdparty", "ganymed", "1.0-SNAPSHOT"),
219                 mavenBundle(ODL, "netconf-mapping-api").versionAsInProject(),
220                 mavenBundle(ODL, "config-netconf-connector").versionAsInProject(),
221                 mavenBundle(ODL, "config-persister-impl").versionAsInProject(),
222
223                 mavenBundle("org.opendaylight.bgpcep", "framework").versionAsInProject(),
224                 mavenBundle("org.opendaylight.bgpcep", "util").versionAsInProject(),
225                 mavenBundle(YANG, "binding-generator-spi").versionAsInProject(), //
226                 mavenBundle(YANG, "binding-model-api").versionAsInProject(), //
227                 mavenBundle(YANG, "binding-generator-util").versionAsInProject(),
228                 mavenBundle(YANG, "yang-parser-impl").versionAsInProject(),
229                 mavenBundle(YANG, "binding-type-provider").versionAsInProject(),
230
231                 mavenBundle("org.opendaylight.controller.thirdparty", "exificient", "0.9.2"),
232
233                 mavenBundle("equinoxSDK381", "javax.servlet").versionAsInProject(),
234                 mavenBundle("equinoxSDK381", "javax.servlet.jsp").versionAsInProject(),
235                 mavenBundle("equinoxSDK381", "org.eclipse.equinox.ds").versionAsInProject(),
236                 mavenBundle("orbit", "javax.xml.rpc").versionAsInProject(),
237                 mavenBundle("equinoxSDK381", "org.eclipse.equinox.util").versionAsInProject(),
238                 mavenBundle("equinoxSDK381", "org.eclipse.osgi.services").versionAsInProject(),
239                 mavenBundle("equinoxSDK381", "org.apache.felix.gogo.command").versionAsInProject(),
240                 mavenBundle("equinoxSDK381", "org.apache.felix.gogo.runtime").versionAsInProject(),
241                 mavenBundle("equinoxSDK381", "org.apache.felix.gogo.shell").versionAsInProject(),
242                 mavenBundle("equinoxSDK381", "org.eclipse.equinox.cm").versionAsInProject(),
243                 mavenBundle("equinoxSDK381", "org.eclipse.equinox.console").versionAsInProject(),
244                 mavenBundle("equinoxSDK381", "org.eclipse.equinox.launcher").versionAsInProject(),
245
246                 mavenBundle("geminiweb", "org.eclipse.gemini.web.core").versionAsInProject(),
247                 mavenBundle("geminiweb", "org.eclipse.gemini.web.extender").versionAsInProject(),
248                 mavenBundle("geminiweb", "org.eclipse.gemini.web.tomcat").versionAsInProject(),
249                 mavenBundle("geminiweb", "org.eclipse.virgo.kernel.equinox.extensions").versionAsInProject().noStart(),
250                 mavenBundle("geminiweb", "org.eclipse.virgo.util.common").versionAsInProject(),
251                 mavenBundle("geminiweb", "org.eclipse.virgo.util.io").versionAsInProject(),
252                 mavenBundle("geminiweb", "org.eclipse.virgo.util.math").versionAsInProject(),
253                 mavenBundle("geminiweb", "org.eclipse.virgo.util.osgi").versionAsInProject(),
254                 mavenBundle("geminiweb", "org.eclipse.virgo.util.osgi.manifest").versionAsInProject(),
255                 mavenBundle("geminiweb", "org.eclipse.virgo.util.parser.manifest").versionAsInProject(),
256
257                 mavenBundle("org.apache.felix", "org.apache.felix.dependencymanager").versionAsInProject(),
258                 mavenBundle("org.apache.felix", "org.apache.felix.dependencymanager.shell").versionAsInProject(),
259
260                 mavenBundle("com.google.code.gson", "gson").versionAsInProject(),
261                 mavenBundle("org.jboss.spec.javax.transaction", "jboss-transaction-api_1.1_spec").versionAsInProject(),
262                 mavenBundle("org.apache.felix", "org.apache.felix.fileinstall").versionAsInProject(),
263                 mavenBundle("org.apache.commons", "commons-lang3").versionAsInProject(),
264                 mavenBundle("commons-codec", "commons-codec").versionAsInProject(),
265                 mavenBundle("virgomirror", "org.eclipse.jdt.core.compiler.batch").versionAsInProject(),
266                 mavenBundle("eclipselink", "javax.persistence").versionAsInProject(),
267                 mavenBundle("eclipselink", "javax.resource").versionAsInProject(),
268
269                 mavenBundle("orbit", "javax.activation").versionAsInProject(),
270                 mavenBundle("orbit", "javax.annotation").versionAsInProject(),
271                 mavenBundle("orbit", "javax.ejb").versionAsInProject(),
272                 mavenBundle("orbit", "javax.el").versionAsInProject(),
273                 mavenBundle("orbit", "javax.mail.glassfish").versionAsInProject(),
274                 mavenBundle("orbit", "javax.xml.rpc").versionAsInProject(),
275                 mavenBundle("orbit", "org.apache.catalina").versionAsInProject(),
276                 // these are bundle fragments that can't be started on its own
277                 mavenBundle("orbit", "org.apache.catalina.ha").versionAsInProject().noStart(),
278                 mavenBundle("orbit", "org.apache.catalina.tribes").versionAsInProject().noStart(),
279                 mavenBundle("orbit", "org.apache.coyote").versionAsInProject().noStart(),
280                 mavenBundle("orbit", "org.apache.jasper").versionAsInProject().noStart(),
281
282                 mavenBundle("orbit", "org.apache.el").versionAsInProject(),
283                 mavenBundle("orbit", "org.apache.juli.extras").versionAsInProject(),
284                 mavenBundle("orbit", "org.apache.tomcat.api").versionAsInProject(),
285                 mavenBundle("orbit", "org.apache.tomcat.util").versionAsInProject().noStart(),
286                 mavenBundle("orbit", "javax.servlet.jsp.jstl").versionAsInProject(),
287                 mavenBundle("orbit", "javax.servlet.jsp.jstl.impl").versionAsInProject(),
288
289                 mavenBundle("org.ops4j.pax.exam", "pax-exam-container-native").versionAsInProject(),
290                 mavenBundle("org.ops4j.pax.exam", "pax-exam-junit4").versionAsInProject(),
291                 mavenBundle("org.ops4j.pax.exam", "pax-exam-link-mvn").versionAsInProject(),
292                 mavenBundle("org.ops4j.pax.url", "pax-url-aether").versionAsInProject(),
293
294                 mavenBundle("org.ow2.asm", "asm-all").versionAsInProject(),
295
296                 mavenBundle("org.springframework", "org.springframework.asm").versionAsInProject(),
297                 mavenBundle("org.springframework", "org.springframework.aop").versionAsInProject(),
298                 mavenBundle("org.springframework", "org.springframework.context").versionAsInProject(),
299                 mavenBundle("org.springframework", "org.springframework.context.support").versionAsInProject(),
300                 mavenBundle("org.springframework", "org.springframework.core").versionAsInProject(),
301                 mavenBundle("org.springframework", "org.springframework.beans").versionAsInProject(),
302                 mavenBundle("org.springframework", "org.springframework.expression").versionAsInProject(),
303                 mavenBundle("org.springframework", "org.springframework.web").versionAsInProject(),
304
305                 mavenBundle("org.aopalliance", "com.springsource.org.aopalliance").versionAsInProject(),
306                 mavenBundle("org.springframework", "org.springframework.web.servlet").versionAsInProject(),
307                 mavenBundle("org.springframework.security", "spring-security-config").versionAsInProject(),
308                 mavenBundle("org.springframework.security", "spring-security-core").versionAsInProject(),
309                 mavenBundle("org.springframework.security", "spring-security-web").versionAsInProject(),
310                 mavenBundle("org.springframework.security", "spring-security-taglibs").versionAsInProject(),
311                 mavenBundle("org.springframework", "org.springframework.transaction").versionAsInProject(),
312
313                 mavenBundle("org.ow2.chameleon.management", "chameleon-mbeans").versionAsInProject(),
314                 mavenBundle("org.opendaylight.controller.thirdparty", "com.sun.jersey.jersey-servlet")
315                         .versionAsInProject().startLevel(2),
316                 mavenBundle("org.opendaylight.controller.thirdparty", "org.apache.catalina.filters.CorsFilter")
317                         .versionAsInProject().noStart(),
318
319                 // Jersey needs to be started before the northbound application
320                 // bundles, using a lower start level
321                 mavenBundle("com.sun.jersey", "jersey-client").versionAsInProject(),
322                 mavenBundle("com.sun.jersey", "jersey-server").versionAsInProject().startLevel(2),
323                 mavenBundle("com.sun.jersey", "jersey-core").versionAsInProject().startLevel(2),
324                 mavenBundle("com.sun.jersey", "jersey-json").versionAsInProject().startLevel(2),
325
326                 junitBundles());
327     }
328
329 }