Merge remote-tracking branch 'origin/master' into merge-branch
[netvirt.git] / paxexam / plugin.integrationtest / src / test / java / org / opendaylight / ovsdb / plugin / OvsdbPluginIT.java
1 /*
2  * Copyright (c) 2014 Red Hat, 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  * Authors : Madhu Venugopal
9  */
10 package org.opendaylight.ovsdb.plugin;\r
11 \r
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertNotNull;
14 import static org.ops4j.pax.exam.CoreOptions.junitBundles;
15 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
16 import static org.ops4j.pax.exam.CoreOptions.options;
17 import static org.ops4j.pax.exam.CoreOptions.systemPackages;
18 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
19
20 import java.io.IOException;
21 import java.util.List;
22
23 import javax.inject.Inject;
24
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.opendaylight.controller.sal.core.Node;
29 import org.opendaylight.controller.sal.utils.ServiceHelper;
30 import org.ops4j.pax.exam.Configuration;
31 import org.ops4j.pax.exam.Option;
32 import org.ops4j.pax.exam.junit.PaxExam;
33 import org.ops4j.pax.exam.util.PathUtils;
34 import org.osgi.framework.Bundle;
35 import org.osgi.framework.BundleContext;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
38 \r
39 @RunWith(PaxExam.class)\r
40 public class OvsdbPluginIT extends OvsdbTestBase {\r
41     private Logger log = LoggerFactory.getLogger(OvsdbPluginIT.class);\r
42     @Inject\r
43     private BundleContext bc;\r
44     private OVSDBConfigService ovsdbConfigService = null;
45     private Node node = null;\r
46 \r
47     // Configure the OSGi container\r
48     @Configuration\r
49     public Option[] config() {\r
50         return options(\r
51             //\r
52             systemProperty("logback.configurationFile").value(\r
53                 "file:" + PathUtils.getBaseDir()\r
54                 + "/src/test/resources/logback.xml"),\r
55             // To start OSGi console for inspection remotely\r
56             systemProperty("osgi.console").value("2401"),\r
57             // Set the systemPackages (used by clustering)\r
58             systemPackages("sun.reflect", "sun.reflect.misc", "sun.misc"),\r
59             // List framework bundles\r
60             mavenBundle("equinoxSDK381",\r
61                         "org.eclipse.equinox.console").versionAsInProject(),\r
62             mavenBundle("equinoxSDK381",\r
63                         "org.eclipse.equinox.util").versionAsInProject(),\r
64             mavenBundle("equinoxSDK381",\r
65                         "org.eclipse.osgi.services").versionAsInProject(),\r
66             mavenBundle("equinoxSDK381",\r
67                         "org.eclipse.equinox.ds").versionAsInProject(),\r
68             mavenBundle("equinoxSDK381",\r
69                         "org.apache.felix.gogo.command").versionAsInProject(),\r
70             mavenBundle("equinoxSDK381",\r
71                         "org.apache.felix.gogo.runtime").versionAsInProject(),\r
72             mavenBundle("equinoxSDK381",\r
73                         "org.apache.felix.gogo.shell").versionAsInProject(),
74             mavenBundle("equinoxSDK381", "javax.servlet").versionAsInProject(),
75
76             mavenBundle("com.google.guava",
77                         "guava").versionAsInProject(),
78 \r
79             // List logger bundles\r
80             mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(),\r
81             mavenBundle("org.slf4j", "log4j-over-slf4j").versionAsInProject(),\r
82             mavenBundle("ch.qos.logback", "logback-core").versionAsInProject(),\r
83             mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject(),\r
84             // List all the bundles on which the test case depends
85             mavenBundle("org.opendaylight.ovsdb", "ovsdb").versionAsInProject(),\r
86             mavenBundle("org.opendaylight.controller",\r
87                         "clustering.services").versionAsInProject(),\r
88             mavenBundle("org.opendaylight.controller",\r
89                         "clustering.services-implementation").versionAsInProject(),\r
90             mavenBundle("org.opendaylight.controller", "sal").versionAsInProject(),\r
91             mavenBundle("org.opendaylight.controller",\r
92                         "sal.implementation").versionAsInProject(),
93             mavenBundle("org.opendaylight.controller", "sal.connection").versionAsInProject(),
94             mavenBundle("org.opendaylight.controller",
95                         "sal.connection.implementation").versionAsInProject(),
96             mavenBundle("org.opendaylight.controller",
97                         "sal.networkconfiguration").versionAsInProject(),
98             mavenBundle("org.opendaylight.controller",
99                         "sal.networkconfiguration.implementation").versionAsInProject(),\r
100             mavenBundle("org.opendaylight.controller", "configuration").versionAsInProject(),\r
101             mavenBundle("org.opendaylight.controller", "containermanager").versionAsInProject(),\r
102             mavenBundle("org.opendaylight.controller",\r
103                         "containermanager.it.implementation").versionAsInProject(),
104             mavenBundle("com.fasterxml.jackson.core", "jackson-annotations").versionAsInProject(),
105             mavenBundle("com.fasterxml.jackson.core", "jackson-core").versionAsInProject(),
106             mavenBundle("com.fasterxml.jackson.core", "jackson-databind").versionAsInProject(),
107             mavenBundle("io.netty", "netty-buffer").versionAsInProject(),
108             mavenBundle("io.netty", "netty-common").versionAsInProject(),
109             mavenBundle("io.netty", "netty-codec").versionAsInProject(),
110             mavenBundle("io.netty", "netty-transport").versionAsInProject(),
111             mavenBundle("io.netty", "netty-handler").versionAsInProject(),
112
113             mavenBundle("org.apache.httpcomponents", "httpcore-nio").versionAsInProject(),
114             mavenBundle("com.google.code.gson", "gson").versionAsInProject(),\r
115             mavenBundle("org.jboss.spec.javax.transaction",\r
116                         "jboss-transaction-api_1.1_spec").versionAsInProject(),\r
117             mavenBundle("org.apache.commons", "commons-lang3").versionAsInProject(),\r
118             mavenBundle("org.apache.felix",\r
119                         "org.apache.felix.dependencymanager").versionAsInProject(),\r
120             mavenBundle("org.apache.felix",\r
121                         "org.apache.felix.dependencymanager.shell").versionAsInProject(),\r
122             mavenBundle("eclipselink", "javax.resource").versionAsInProject(),\r
123             junitBundles());\r
124     }\r
125 \r
126     private String stateToString(int state) {\r
127         switch (state) {\r
128         case Bundle.ACTIVE:\r
129             return "ACTIVE";\r
130         case Bundle.INSTALLED:\r
131             return "INSTALLED";\r
132         case Bundle.RESOLVED:\r
133             return "RESOLVED";\r
134         case Bundle.UNINSTALLED:\r
135             return "UNINSTALLED";\r
136         default:\r
137             return "Not CONVERTED";\r
138         }\r
139     }\r
140 \r
141     @Before\r
142     public void areWeReady() throws InterruptedException {\r
143         assertNotNull(bc);\r
144         boolean debugit = false;\r
145         Bundle b[] = bc.getBundles();\r
146         for (Bundle element : b) {\r
147             int state = element.getState();\r
148             if (state != Bundle.ACTIVE && state != Bundle.RESOLVED) {\r
149                 log.info("Bundle:" + element.getSymbolicName() + " state:"\r
150                           + stateToString(state));\r
151                 debugit = true;\r
152             }\r
153         }\r
154         if (debugit) {\r
155             log.debug("Do some debugging because some bundle is unresolved");
156         }\r
157 \r
158         // Assert if true, if false we are good to go!\r
159         assertFalse(debugit);
160         try {
161             node = getTestConnection();
162         } catch (IOException e) {
163             e.printStackTrace();
164         }
165         this.ovsdbConfigService = (OVSDBConfigService)ServiceHelper.getGlobalInstance(OVSDBConfigService.class, this);\r
166     }\r
167 \r
168     @Test\r
169     public void tableTest() throws Exception {
170         assertNotNull("Invalid Node. Check connection params", node);
171         Thread.sleep(3000); // Wait for a few seconds to get the Schema exchange done
172         List<String> tables = ovsdbConfigService.getTables(node);
173         System.out.println("Tables = "+tables);\r
174         assertNotNull(tables);
175     }\r
176 }\r