Added test for OSGi metadata.
[yangtools.git] / yangtools-it / src / test / java / BundleStartTest.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 import static org.junit.Assert.assertEquals;
10 import static org.junit.Assert.assertNotNull;
11 import static org.ops4j.pax.exam.CoreOptions.*;
12
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import javax.inject.Inject;
17
18 import org.junit.Test;
19 import org.junit.runner.RunWith;
20 import org.ops4j.pax.exam.Configuration;
21 import org.ops4j.pax.exam.Option;
22 import org.ops4j.pax.exam.junit.PaxExam;
23 import org.osgi.framework.Bundle;
24 import org.osgi.framework.BundleContext;
25 import org.osgi.framework.BundleException;
26
27 @RunWith(PaxExam.class)
28 public class BundleStartTest {
29     private static final String GROUP = "org.opendaylight.yangtools";
30
31     @Inject
32     BundleContext ctx;
33
34     private List<Option> coreBundles() {
35         List<Option> options = new ArrayList<>();
36
37         options.add(mavenBundle("org.slf4j", "slf4j-api").versionAsInProject());
38         options.add(mavenBundle("ch.qos.logback", "logback-core").versionAsInProject());
39         options.add(mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject());
40         options.add(mavenBundle("com.google.guava", "guava").versionAsInProject());
41         options.add(mavenBundle("org.apache.commons", "commons-lang3").versionAsInProject());
42         options.add(mavenBundle("org.opendaylight.yangtools.thirdparty", "antlr4-runtime-osgi-nohead")
43                 .versionAsInProject());
44         options.add(mavenBundle("org.opendaylight.yangtools.thirdparty", "xtend-lib-osgi").versionAsInProject());
45         options.add(mavenBundle("org.sonatype.plexus", "plexus-build-api").versionAsInProject());
46         options.add(mavenBundle("org.codehaus.plexus", "plexus-slf4j-logging").versionAsInProject());
47         options.add(mavenBundle("org.javassist", "javassist").versionAsInProject());
48
49         options.add(mavenBundle(GROUP, "concepts").versionAsInProject());
50         options.add(mavenBundle(GROUP, "yang-binding").versionAsInProject());
51         options.add(mavenBundle(GROUP, "yang-common").versionAsInProject());
52         options.add(mavenBundle(GROUP, "yang-data-api").versionAsInProject());
53         options.add(mavenBundle(GROUP, "yang-data-impl").versionAsInProject());
54         options.add(mavenBundle(GROUP, "yang-data-util").versionAsInProject());
55         options.add(mavenBundle(GROUP, "yang-model-api").versionAsInProject());
56         options.add(mavenBundle(GROUP, "yang-model-util").versionAsInProject());
57         options.add(mavenBundle(GROUP, "yang-parser-api").versionAsInProject());
58         options.add(mavenBundle(GROUP, "yang-parser-impl").versionAsInProject());
59
60         options.add(mavenBundle(GROUP, "binding-generator-api").versionAsInProject());
61         options.add(mavenBundle(GROUP, "binding-generator-impl").versionAsInProject());
62         options.add(mavenBundle(GROUP, "binding-generator-spi").versionAsInProject());
63         options.add(mavenBundle(GROUP, "binding-generator-util").versionAsInProject());
64         options.add(mavenBundle(GROUP, "binding-java-api-generator").versionAsInProject());
65         options.add(mavenBundle(GROUP, "binding-model-api").versionAsInProject());
66         options.add(mavenBundle(GROUP, "binding-type-provider").versionAsInProject());
67         options.add(mavenBundle(GROUP, "maven-sal-api-gen-plugin").versionAsInProject());
68
69         options.add(junitBundles());
70         return options;
71     }
72
73     @Configuration
74     public final Option[] config() {
75         final List<Option> options = coreBundles();
76         return options.toArray(new Option[0]);
77     }
78
79     @Test
80     public void testBundleActivation() throws BundleException {
81         testBundle("yang-binding");
82         testBundle("yang-common");
83         testBundle("yang-data-api");
84         testBundle("yang-data-impl");
85         testBundle("yang-data-util");
86         testBundle("yang-model-api");
87         testBundle("yang-model-util");
88         testBundle("yang-parser-api");
89         testBundle("yang-parser-impl");
90
91         testBundle("binding-generator-api");
92         testBundle("binding-generator-impl");
93         testBundle("binding-generator-spi");
94         testBundle("binding-generator-util");
95         testBundle("binding-model-api");
96         testBundle("binding-java-api-generator");
97         testBundle("binding-type-provider");
98         testBundle("maven-sal-api-gen-plugin");
99     }
100
101     private void testBundle(String name) throws BundleException {
102         Bundle bundle = getBundle(name);
103         assertNotNull("Bundle '" + name + "' not found", bundle);
104         assertEquals("Bundle '" + name + "' is not in ACTIVE state", Bundle.ACTIVE, bundle.getState());
105     }
106
107     private Bundle getBundle(final String name) {
108         final String bn = GROUP + "." + name;
109         for (Bundle b : ctx.getBundles()) {
110             if (bn.equals(b.getSymbolicName())) {
111                 return b;
112             }
113         }
114         return null;
115     }
116
117 }