package org.apache.aries.subsystem.itests;
import static org.junit.Assert.assertEquals;
import java.io.InputStream;
import org.apache.aries.itest.RichBundleContext;
import org.apache.aries.subsystem.itests.bundles.blueprint.BPHelloImpl;
import org.apache.aries.subsystem.itests.hello.api.Hello;
import org.junit.Test;
import org.ops4j.pax.tinybundles.core.TinyBundles;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.service.subsystem.Subsystem;
/*
* iTest for blueprint with subsystems
*/
public class BlueprintTest extends SubsystemTest
{
private static final String BLUEPRINT_ESA = "target/blueprint.esa";
protected void init() throws Exception {
writeToFile(createBlueprintEsa(), BLUEPRINT_ESA);
}
@Test
public void checkBlueprint() throws Exception
{
Subsystem subsystem = installSubsystemFromFile(BLUEPRINT_ESA);
try {
startSubsystem(subsystem);
BundleContext bc = subsystem.getBundleContext();
Hello h = new RichBundleContext(bc).getService(Hello.class);
String message = h.saySomething();
assertEquals("Wrong message back", "messageFromBlueprint", message);
} finally {
stopSubsystem(subsystem);
uninstallSubsystem(subsystem);
}
}
private InputStream createBlueprintEsa() throws Exception {
return TinyBundles.bundle()
.add("OSGI-INF/SUBSYSTEM.MF", getResource("blueprint/OSGI-INF/SUBSYSTEM.MF"))
.add("blueprint.jar", createBlueprintTestBundle())
.build(TinyBundles.withBnd());
}
private InputStream createBlueprintTestBundle() {
return TinyBundles.bundle()
.add(BPHelloImpl.class)
.add("OSGI-INF/blueprint/blueprint.xml", getResource("blueprint/OSGI-INF/blueprint/blueprint.xml"))
.set(Constants.BUNDLE_SYMBOLICNAME, "org.apache.aries.subsystem.itests.blueprint")
.build(TinyBundles.withBnd());
}
}