]> git.argeo.org Git - lgpl/argeo-commons.git/blob - osgi/boot/OsgiBootRuntimeTest.java
Prepare next development cycle
[lgpl/argeo-commons.git] / osgi / boot / OsgiBootRuntimeTest.java
1 /*
2 * Copyright (C) 2007-2012 Mathieu Baudier
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.argeo.osgi.boot;
17
18 import java.util.Iterator;
19 import java.util.Map;
20 import java.util.TreeMap;
21
22 import junit.framework.TestCase;
23
24 import org.eclipse.core.runtime.adaptor.EclipseStarter;
25 import org.osgi.framework.Bundle;
26 import org.osgi.framework.BundleContext;
27
28 /** Starts an Equinox runtime and provision it with OSGi boot. */
29 public class OsgiBootRuntimeTest extends TestCase {
30 protected OsgiBoot osgiBoot = null;
31 private boolean osgiRuntimeAlreadyRunning = false;
32
33 public void testInstallAndStart() throws Exception {
34 if (osgiRuntimeAlreadyRunning) {
35 System.out
36 .println("OSGi runtime already running, skipping test...");
37 return;
38 }
39 osgiBoot.installUrls(osgiBoot.getBundlesUrls(OsgiBoot.DEFAULT_BASE_URL,
40 OsgiBootNoRuntimeTest.BUNDLES));
41 Map map = new TreeMap(osgiBoot.getBundlesBySymbolicName());
42 for (Iterator keys = map.keySet().iterator(); keys.hasNext();) {
43 Object key = keys.next();
44 Bundle bundle = (Bundle) map.get(key);
45 System.out.println(key + " : " + bundle.getLocation());
46 }
47 assertEquals(4, map.size());
48 Iterator keys = map.keySet().iterator();
49 assertEquals("org.argeo.osgi.boot.test.bundle1", keys.next());
50 assertEquals("org.argeo.osgi.boot.test.bundle2", keys.next());
51 assertEquals("org.argeo.osgi.boot.test.bundle3", keys.next());
52 assertEquals("org.eclipse.osgi", keys.next());
53
54 osgiBoot.startBundles("org.argeo.osgi.boot.test.bundle2");
55 long begin = System.currentTimeMillis();
56 while (System.currentTimeMillis() - begin < 10000) {
57 Map mapBundles = osgiBoot.getBundlesBySymbolicName();
58 Bundle bundle = (Bundle) mapBundles
59 .get("org.argeo.osgi.boot.test.bundle2");
60 if (bundle.getState() == Bundle.ACTIVE) {
61 System.out.println("Bundle " + bundle + " started.");
62 return;
63 }
64 }
65 fail("Bundle not started after timeout limit.");
66 }
67
68 protected BundleContext startRuntime() throws Exception {
69 String[] args = { "-console", "-clean" };
70 BundleContext bundleContext = EclipseStarter.startup(args, null);
71 return bundleContext;
72 }
73
74 protected void stopRuntime() throws Exception {
75 EclipseStarter.shutdown();
76 }
77
78 public void setUp() throws Exception {
79 osgiRuntimeAlreadyRunning = EclipseStarter.isRunning();
80 if (osgiRuntimeAlreadyRunning)
81 return;
82 BundleContext bundleContext = startRuntime();
83 osgiBoot = new OsgiBoot(bundleContext);
84 }
85
86 public void tearDown() throws Exception {
87 if (osgiRuntimeAlreadyRunning)
88 return;
89 osgiBoot = null;
90 stopRuntime();
91 }
92
93 }