2 * Copyright (C) 2007-2012 Argeo GmbH
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package org
.argeo
.osgi
.boot
;
18 import java
.util
.Iterator
;
20 import java
.util
.TreeMap
;
22 import junit
.framework
.TestCase
;
24 import org
.eclipse
.core
.runtime
.adaptor
.EclipseStarter
;
25 import org
.osgi
.framework
.Bundle
;
26 import org
.osgi
.framework
.BundleContext
;
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;
33 public void testInstallAndStart() throws Exception
{
34 if (osgiRuntimeAlreadyRunning
) {
36 .println("OSGi runtime already running, skipping test...");
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());
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());
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.");
65 fail("Bundle not started after timeout limit.");
68 protected BundleContext
startRuntime() throws Exception
{
69 String
[] args
= { "-console", "-clean" };
70 BundleContext bundleContext
= EclipseStarter
.startup(args
, null);
74 protected void stopRuntime() throws Exception
{
75 EclipseStarter
.shutdown();
78 public void setUp() throws Exception
{
79 osgiRuntimeAlreadyRunning
= EclipseStarter
.isRunning();
80 if (osgiRuntimeAlreadyRunning
)
82 BundleContext bundleContext
= startRuntime();
83 osgiBoot
= new OsgiBoot(bundleContext
);
86 public void tearDown() throws Exception
{
87 if (osgiRuntimeAlreadyRunning
)