2 * Copyright (c) 2014 Red Hat, Inc. and others. All rights reserved.
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
8 * Authors : Madhu Venugopal
10 package org.opendaylight.ovsdb.plugin;
\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;
20 import java.io.IOException;
21 import java.util.List;
23 import javax.inject.Inject;
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;
39 @RunWith(PaxExam.class)
\r
40 public class OvsdbPluginIT extends OvsdbTestBase {
\r
41 private Logger log = LoggerFactory.getLogger(OvsdbPluginIT.class);
\r
43 private BundleContext bc;
\r
44 private OVSDBConfigService ovsdbConfigService = null;
45 private Node node = null;
\r
47 // Configure the OSGi container
\r
49 public Option[] config() {
\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(),
76 mavenBundle("com.google.guava",
77 "guava").versionAsInProject(),
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(),
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
126 private String stateToString(int state) {
\r
128 case Bundle.ACTIVE:
\r
130 case Bundle.INSTALLED:
\r
131 return "INSTALLED";
\r
132 case Bundle.RESOLVED:
\r
134 case Bundle.UNINSTALLED:
\r
135 return "UNINSTALLED";
\r
137 return "Not CONVERTED";
\r
142 public void areWeReady() throws InterruptedException {
\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
155 log.debug("Do some debugging because some bundle is unresolved");
158 // Assert if true, if false we are good to go!
\r
159 assertFalse(debugit);
161 node = getTestConnection();
162 } catch (IOException e) {
165 this.ovsdbConfigService = (OVSDBConfigService)ServiceHelper.getGlobalInstance(OVSDBConfigService.class, this);
\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);