/* * Copyright (C) 2007-2012 Mathieu Baudier * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.argeo.osgi.boot; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; import junit.framework.TestCase; import org.argeo.osgi.boot.OsgiBoot; import org.eclipse.core.runtime.adaptor.EclipseStarter; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; /** Starts an Equinox runtime and provision it with OSGi boot. */ public class OsgiBootRuntimeTest extends TestCase { protected OsgiBoot osgiBoot = null; public void testInstallAndStart() throws Exception { osgiBoot.installUrls(osgiBoot.getBundlesUrls(OsgiBoot.DEFAULT_BASE_URL, OsgiBootNoRuntimeTest.BUNDLES)); Map map = new TreeMap(osgiBoot.getBundlesBySymbolicName()); for (Iterator keys = map.keySet().iterator(); keys.hasNext();) { Object key = keys.next(); Bundle bundle = (Bundle) map.get(key); System.out.println(key + " : " + bundle.getLocation()); } assertEquals(4, map.size()); Iterator keys = map.keySet().iterator(); assertEquals("org.argeo.osgi.boot.test.bundle1", keys.next()); assertEquals("org.argeo.osgi.boot.test.bundle2", keys.next()); assertEquals("org.argeo.osgi.boot.test.bundle3", keys.next()); assertEquals("org.eclipse.osgi", keys.next()); osgiBoot.startBundles("org.argeo.osgi.boot.test.bundle2"); long begin = System.currentTimeMillis(); while (System.currentTimeMillis() - begin < 10000) { Map mapBundles = osgiBoot.getBundlesBySymbolicName(); Bundle bundle = (Bundle) mapBundles .get("org.argeo.osgi.boot.test.bundle2"); if (bundle.getState() == Bundle.ACTIVE) { System.out.println("Bundle " + bundle + " started."); return; } } fail("Bundle not started after timeout limit."); } protected BundleContext startRuntime() throws Exception { String[] args = { "-console", "-clean" }; BundleContext bundleContext = EclipseStarter.startup(args, null); return bundleContext; } protected void stopRuntime() throws Exception { EclipseStarter.shutdown(); } public void setUp() throws Exception { BundleContext bundleContext = startRuntime(); osgiBoot = new OsgiBoot(bundleContext); } public void tearDown() throws Exception { osgiBoot = null; stopRuntime(); } }