package org.switchyard.karaf.test.quickstarts; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.junit.Assert; import org.junit.Test; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; import org.switchyard.deploy.osgi.SwitchYardEvent; import org.switchyard.deploy.osgi.SwitchYardListener; public class DeploymentProbe { public static final String BUNDLE_NAME_KEY = "org.switchyard.karaf.test.bundleName"; public DeploymentProbe() { } @Inject private BundleContext _bundleContext; private boolean _activated; @Test public void testBundleActivation() { Assert.assertNotNull(_bundleContext); String bundleName = System.getProperty(BUNDLE_NAME_KEY); Bundle bundle = null; for (Bundle aux : _bundleContext.getBundles()) { if (bundleName.equals(aux.getSymbolicName())) { bundle = aux; break; } } Assert.assertNotNull(bundle); Assert.assertEquals("Bundle ACTIVE", Bundle.ACTIVE, bundle.getState()); // Wait for SwitchYard application activation final CountDownLatch latch = new CountDownLatch(1); final long bundleId = bundle.getBundleId(); final SwitchYardListener listener = new SwitchYardListener() { @Override public void switchyardEvent(SwitchYardEvent event) { if (bundleId == event.getBundle().getBundleId()) { switch (event.getType()) { case SwitchYardEvent.CREATED: _activated = true; // fall through case SwitchYardEvent.FAILURE: latch.countDown(); break; default: break; } } } }; final ServiceRegistration<SwitchYardListener> registration = _bundleContext.registerService( SwitchYardListener.class, listener, null); try { latch.await(120000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { } registration.unregister(); Assert.assertTrue("SwitchYard bundle activation failed", _activated); } }