/**
* Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.openflowplugin.openflow.md.it;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
import org.opendaylight.controller.test.sal.binding.it.TestHelper;
import org.ops4j.pax.exam.CoreOptions;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.options.DefaultCompositeOption;
/**
* The main wiring is assembled in {@link #ofPluginBundles()}
* @author mirehak
*/
public abstract class OFPaxOptionsAssistant {
/** system property required to enable osgi console and remote debugging, only presence matters */
private static final String INSPECT_OSGI = "inspectOsgi";
/** default remote debug port */
public static final String DEBUG_PORT = "6000";
/** base controller package */
public static final String CONTROLLER = "org.opendaylight.controller";
/** base controller md-sal package */
public static final String CONTROLLER_MD = "org.opendaylight.controller.md";
/** OFLibrary package */
public static final String OFLIBRARY = "org.opendaylight.openflowjava";
/** OFPlugin package */
public static final String OFPLUGIN = "org.opendaylight.openflowplugin";
/** OFPlugin applications package */
public static final String OFPLUGIN_APPS = "org.opendaylight.openflowplugin.applications";
/** OFPlugin model package */
public static final String OFPLUGIN_MODEL = "org.opendaylight.openflowplugin.model";
/** controller.model package */
public static final String CONTROLLER_MODEL = "org.opendaylight.controller.model";
public static final String YANGTOOLS = "org.opendaylight.yangtools";
/**
* Works only if property -DinspectOsgi is used
* @return equinox console setup (in order to inspect running IT through osgi console (telnet))
* and remote debugging on port {@link #DEBUG_PORT}
*/
public static Option osgiConsoleBundles() {
DefaultCompositeOption option = new DefaultCompositeOption();
if (System.getProperty(INSPECT_OSGI) != null) {
option
.add(CoreOptions.vmOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address="+DEBUG_PORT))
.add(CoreOptions.mavenBundle("equinoxSDK381", "org.eclipse.equinox.console").versionAsInProject());
}
return option;
}
/**
* @return OFLibrary bundles
*/
public static Option ofLibraryBundles() {
return new DefaultCompositeOption(
mavenBundle(OFLIBRARY, "openflowjava-util").versionAsInProject(),
mavenBundle(OFLIBRARY, "openflow-protocol-impl").versionAsInProject(),
mavenBundle(OFLIBRARY, "openflow-protocol-api").versionAsInProject(),
mavenBundle(OFLIBRARY, "openflow-protocol-spi").versionAsInProject(),
mavenBundle(OFLIBRARY, "simple-client").versionAsInProject().start());
}
/**
* Here we construct whole wiring
* @return OFLibrary + OFPlugin bundles
*/
public static Option ofPluginBundles() {
return new DefaultCompositeOption(
baseSalBundles(),
mdSalApiBundles(),
mdSalImplBundles(),
mdSalBaseModelBundles(),
ofLibraryBundles(),
mavenBundle(CONTROLLER_MODEL, "model-inventory").versionAsInProject(),
mavenBundle(OFPLUGIN_MODEL, "model-flow-statistics").versionAsInProject(),
mavenBundle(OFPLUGIN_MODEL, "model-flow-base").versionAsInProject(),
mavenBundle(OFPLUGIN_MODEL, "model-flow-service").versionAsInProject(),
mavenBundle(OFPLUGIN, "openflowplugin-common").versionAsInProject(),
mavenBundle(OFPLUGIN, "openflowplugin-api").versionAsInProject(),
mavenBundle(OFPLUGIN, "openflowplugin-extension-api").versionAsInProject(),
mavenBundle(OFPLUGIN, "openflowplugin").versionAsInProject(),
mavenBundle(OFPLUGIN_APPS, "forwardingrules-manager").versionAsInProject(),
mavenBundle(OFPLUGIN_APPS, "inventory-manager").versionAsInProject(),
mavenBundle("openexi", "nagasena").versionAsInProject()
);
}
/**
* @return logging bundles
*/
public static Option loggingBudles() {
return new DefaultCompositeOption(
mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(),
mavenBundle("org.slf4j", "log4j-over-slf4j").versionAsInProject(),
mavenBundle("ch.qos.logback", "logback-core").versionAsInProject(),
mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject());
}
/**
* @return sal + dependencymanager
*/
public static Option baseSalBundles() {
return new DefaultCompositeOption(
// mavenBundle("org.apache.felix", "org.apache.felix.dependencymanager").versionAsInProject(),
// mavenBundle(CONTROLLER, "sal").versionAsInProject(),
mavenBundle("io.netty", "netty-common").versionAsInProject(), //
mavenBundle("io.netty", "netty-buffer").versionAsInProject(), //
mavenBundle("io.netty", "netty-handler").versionAsInProject(), //
mavenBundle("io.netty", "netty-codec").versionAsInProject(), //
mavenBundle("io.netty", "netty-transport").versionAsInProject(), //
mavenBundle(CONTROLLER, "liblldp").versionAsInProject(),
mavenBundle(OFPLUGIN_APPS, "topology-lldp-discovery").versionAsInProject(),
mavenBundle("org.antlr", "antlr4-runtime").versionAsInProject());
}
/**
* @return sal + dependencymanager
*/
public static Option mdSalApiBundles() {
return new DefaultCompositeOption(
TestHelper.junitAndMockitoBundles(),
TestHelper.mdSalCoreBundles(),
TestHelper.configMinumumBundles(),
mavenBundle("org.antlr", "antlr4-runtime").versionAsInProject());
}
private static Option mdSalImplBundles() {
return new DefaultCompositeOption(
TestHelper.bindingAwareSalBundles()
);
}
private static Option mdSalBaseModelBundles() {
return new DefaultCompositeOption(
TestHelper.baseModelBundles(),
mavenBundle(CONTROLLER_MODEL, "model-inventory").versionAsInProject()
);
}
}