2aa70fb1a2651ff14777de451fc65cd571ae2360
[openflowplugin.git] / openflowplugin-it / src / test / java / org / opendaylight / openflowplugin / openflow / md / it / OFPaxOptionsAssistant.java
1 /**
2  * Copyright (c) 2013 Cisco Systems, 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
9 package org.opendaylight.openflowplugin.openflow.md.it;
10
11
12 import org.ops4j.pax.exam.CoreOptions;
13 import org.ops4j.pax.exam.Option;
14 import org.ops4j.pax.exam.options.DefaultCompositeOption;
15
16 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
17
18 /**
19  * @author mirehak
20  *
21  */
22 public abstract class OFPaxOptionsAssistant {
23
24     /** system property required to enable osgi console and remote debugging, only presence matters */
25     private static final String INSPECT_OSGI = "inspectOsgi";
26     /** default remote debug port */
27     public static final String DEBUG_PORT = "6000";
28     /** base controller package */
29     public static final String CONTROLLER = "org.opendaylight.controller";
30     /** base controller.md package */
31     public static final String CONTROLLER_MD = "org.opendaylight.controller.md";
32     /** OFLibrary package */
33     public static final String OFLIBRARY = "org.opendaylight.openflowjava";
34     /** OFPlugin package */
35     public static final String OFPLUGIN = "org.opendaylight.openflowplugin";
36     /** OFPlugin applications package */
37     public static final String OFPLUGIN_APPS = "org.opendaylight.openflowplugin.applications";
38     /** OFPlugin model package */
39     public static final String OFPLUGIN_MODEL = "org.opendaylight.openflowplugin.model";
40     /** controller.model package */
41     public static final String CONTROLLER_MODEL = "org.opendaylight.controller.model";
42
43     public static final String YANGTOOLS = "org.opendaylight.yangtools";
44
45
46     /**
47      * Works only if property -DinspectOsgi is used
48      * @return equinox console setup (in order to inspect running IT through osgi console (telnet))
49      * and remote debugging on port {@link #DEBUG_PORT}
50      */
51     public static Option osgiConsoleBundles() {
52         DefaultCompositeOption option = new DefaultCompositeOption();
53         if (System.getProperty(INSPECT_OSGI) != null) {
54             option
55             .add(CoreOptions.vmOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address="+DEBUG_PORT))
56             .add(CoreOptions.mavenBundle("equinoxSDK381", "org.eclipse.equinox.console").versionAsInProject())
57             .add(CoreOptions.mavenBundle("equinoxSDK381", "org.apache.felix.gogo.shell").versionAsInProject())
58             .add(CoreOptions.mavenBundle("equinoxSDK381", "org.apache.felix.gogo.runtime").versionAsInProject())
59             .add(CoreOptions.mavenBundle("equinoxSDK381", "org.apache.felix.gogo.command").versionAsInProject());
60         }
61
62         return option;
63     }
64
65     /**
66      * @return OFLibrary bundles
67      */
68     public static Option ofLibraryBundles() {
69         return new DefaultCompositeOption(
70                 mavenBundle(OFLIBRARY, "util").versionAsInProject(),
71                 mavenBundle(OFLIBRARY, "openflow-protocol-impl").versionAsInProject(),
72                 mavenBundle(OFLIBRARY, "openflow-protocol-api").versionAsInProject(),
73                 mavenBundle(OFLIBRARY, "openflow-protocol-spi").versionAsInProject(),
74                 mavenBundle(OFLIBRARY, "simple-client").versionAsInProject().start());
75     }
76
77     /**
78      * @return OFLibrary + OFPlugin bundles
79      */
80     public static Option ofPluginBundles() {
81         return new DefaultCompositeOption(
82                 baseSalBundles(),
83                 ofLibraryBundles(),
84                 mavenBundle(CONTROLLER_MODEL, "model-inventory").versionAsInProject(),
85                 mavenBundle(OFPLUGIN_MODEL, "model-flow-statistics").versionAsInProject(),
86                 mavenBundle(OFPLUGIN_MODEL, "model-flow-base").versionAsInProject(),
87                 mavenBundle(OFPLUGIN_MODEL, "model-flow-service").versionAsInProject(),
88                 mavenBundle(OFPLUGIN, "openflowplugin-api").versionAsInProject(),
89                 mavenBundle(OFPLUGIN, "openflowplugin-extension-api").versionAsInProject(),
90                 mavenBundle(OFPLUGIN, "openflowplugin").versionAsInProject(),
91                 mavenBundle(OFPLUGIN_APPS, "forwardingrules-manager").versionAsInProject(),
92                 mavenBundle(OFPLUGIN_APPS, "inventory-manager").versionAsInProject(),
93                 mavenBundle("org.openexi", "nagasena").versionAsInProject()
94                 );
95     }
96
97     /**
98      * @return logging bundles
99      */
100     public static Option loggingBudles() {
101         return new DefaultCompositeOption(
102                 mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(),
103                 mavenBundle("org.slf4j", "log4j-over-slf4j").versionAsInProject(),
104                 mavenBundle("ch.qos.logback", "logback-core").versionAsInProject(),
105                 mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject());
106     }
107
108     /**
109      * @return sal + dependencymanager
110      */
111     public static Option baseSalBundles() {
112         return new DefaultCompositeOption(
113 //                mavenBundle("org.apache.felix", "org.apache.felix.dependencymanager").versionAsInProject(),
114 //                mavenBundle(CONTROLLER, "sal").versionAsInProject(),
115                 mavenBundle(YANGTOOLS + ".thirdparty", "antlr4-runtime-osgi-nohead").versionAsInProject());
116
117     }
118
119 }