package org.apache.aries.subsystem.ctt.itests; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.junit.Before; import org.junit.Test; import org.osgi.framework.Bundle; import org.osgi.framework.Constants; import org.osgi.service.subsystem.Subsystem; import org.osgi.service.subsystem.SubsystemConstants; /* * B) Test with no pre-installed transitive resources - Register repository R2 - Using the Root subsystem, install a scoped subsystem with the following content bundles and no local repository - Bundle C - Bundle D - Bundle E - Verify that bundles A and B got installed into the Root Subsystem - Verify the wiring of C, D and E wire to A->x, A, B->y respectively */ public class SubsystemDependency_4BTest extends SubsystemDependencyTestBase { protected static String APPLICATION_B="sdt_application.b.esa"; @Override public void createApplications() throws Exception { super.createApplications(); createTestApplicationB(); } @Before public void registerRepo() throws Exception { registerRepositoryR2(); } // - Verify that bundles A and B got installed into the Root Subsystem @Test public void verifyBundlesAandBinstalledIntoRootRegion() throws Exception { System.out.println ("Into verifyBundlesAandBinstalledIntoRootRegion"); Subsystem s = installSubsystemFromFile(APPLICATION_B); startSubsystem(s); Bundle[] bundles = bundleContext.getBundles(); Collection<String> bundleNames = new ArrayList<String>(); for (Bundle b : bundles) { bundleNames.add(b.getSymbolicName()); } assertTrue ("Bundle A should have been provisioned to the root region", bundleNames.contains(BUNDLE_A)); assertTrue ("Bundle B should have been provisioned to the root region", bundleNames.contains(BUNDLE_B)); stopSubsystem(s); } @Test public void verifyBundleCWiredToPackage_xFromBundleA() throws Exception { Subsystem s = installSubsystemFromFile(APPLICATION_B); startSubsystem(s); verifySinglePackageWiring (s, BUNDLE_C, "x", BUNDLE_A); stopSubsystem(s); } @Test public void verifyBundleDWiredToBundleA() throws Exception { Subsystem s = installSubsystemFromFile(APPLICATION_B); startSubsystem(s); verifyRequireBundleWiring (s, BUNDLE_D, BUNDLE_A); stopSubsystem(s); } @Test public void verifyBundleEWiredToCapability_yFromBundleB() throws Exception { Subsystem s = installSubsystemFromFile(APPLICATION_B); startSubsystem(s); verifyCapabilityWiring (s, BUNDLE_E, "y", BUNDLE_B); stopSubsystem(s); } private static void createTestApplicationB() throws Exception { Map<String, String> attributes = new HashMap<String, String>(); attributes.put(SubsystemConstants.SUBSYSTEM_SYMBOLICNAME, APPLICATION_B); attributes.put(SubsystemConstants.SUBSYSTEM_TYPE, SubsystemConstants.SUBSYSTEM_TYPE_COMPOSITE); String appContent = BUNDLE_C + ";" + Constants.VERSION_ATTRIBUTE + "=\"[1.0.0,1.0.0]\"" + ", " + BUNDLE_D + ";" + Constants.VERSION_ATTRIBUTE + "=\"[1.0.0,1.0.0]\"" + ", " + BUNDLE_E + ";" + Constants.VERSION_ATTRIBUTE + "=\"[1.0.0,1.0.0]\""; attributes.put(SubsystemConstants.SUBSYSTEM_CONTENT, appContent); attributes.put(Constants.IMPORT_PACKAGE, "x"); attributes.put(Constants.REQUIRE_BUNDLE, BUNDLE_A); attributes.put(Constants.REQUIRE_CAPABILITY, "y"); createManifest(APPLICATION_B + ".mf", attributes); createSubsystem(APPLICATION_B); } }