Author: mnuttall
Date: Tue Jul 31 13:48:25 2012
New Revision: 1367550
URL: http://svn.apache.org/viewvc?rev=1367550&view=rev
Log:
Aries-893: org.apache.aries.subsystem.ctt.itests.SubsystemDependency_4CTest
fails. Change 4A and 4B to check that no _new_ bundles get provisioned,
regardless of how many we started with.
Modified:
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependencyTestBase.java
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4ATest.java
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4CTest.java
Modified:
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependencyTestBase.java
URL:
http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependencyTestBase.java?rev=1367550&r1=1367549&r2=1367550&view=diff
==============================================================================
---
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependencyTestBase.java
(original)
+++
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependencyTestBase.java
Tue Jul 31 13:48:25 2012
@@ -3,12 +3,15 @@ package org.apache.aries.subsystem.ctt.i
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.osgi.framework.namespace.BundleNamespace.BUNDLE_NAMESPACE;
import static org.osgi.framework.namespace.PackageNamespace.PACKAGE_NAMESPACE;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.aries.subsystem.itests.SubsystemTest;
import org.junit.After;
@@ -273,4 +276,25 @@ public abstract class SubsystemDependenc
assertTrue ("Bundle " + bundleName + " not found in
subsystem " + subsystemName, bundleFound);
}
}
+
+ /**
+ * Check that no new bundles have been provisioned by [x]
+ * @param failText where the failure occurred
+ * @param rootBundlesBefore Bundles before [x]
+ * @param rootBundlesAfter Bundles after [x]
+ */
+ protected void checkNoNewBundles(String failText, Bundle[]
rootBundlesBefore, Bundle[] rootBundlesAfter) {
+ if (rootBundlesBefore.length != rootBundlesAfter.length) {
+ Set<String> bundlesBefore = new HashSet<String>();
+ for (Bundle b : rootBundlesBefore) {
+ bundlesBefore.add(b.getSymbolicName() + "_" +
b.getVersion().toString());
+ }
+ Set<String> bundlesAfter = new HashSet<String>();
+ for (Bundle b : rootBundlesAfter) {
+ bundlesAfter.add(b.getSymbolicName() + "_" +
b.getVersion().toString());
+ }
+ bundlesAfter.removeAll(bundlesBefore);
+ fail ("Extra bundles provisioned in " + failText + " :
" + bundlesAfter);
+ }
+ }
}
Modified:
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4ATest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4ATest.java?rev=1367550&r1=1367549&r2=1367550&view=diff
==============================================================================
---
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4ATest.java
(original)
+++
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4ATest.java
Tue Jul 31 13:48:25 2012
@@ -2,9 +2,12 @@ package org.apache.aries.subsystem.ctt.i
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import org.junit.Before;
import org.junit.Test;
@@ -53,6 +56,7 @@ public class SubsystemDependency_4ATest
verifySinglePackageWiring (s, BUNDLE_C, "x", BUNDLE_A);
stopSubsystem(s);
+ uninstallSubsystem(s);
}
@Test
@@ -62,6 +66,7 @@ public class SubsystemDependency_4ATest
startSubsystem(s);
verifyRequireBundleWiring (s, BUNDLE_D, BUNDLE_A);
stopSubsystem(s);
+ uninstallSubsystem(s);
}
@Test
@@ -71,51 +76,30 @@ public class SubsystemDependency_4ATest
startSubsystem(s);
verifyCapabilityWiring (s, BUNDLE_E, "y", BUNDLE_B);
stopSubsystem(s);
+ uninstallSubsystem(s);
}
/*
* Verify no new bundles are installed into the Root subsystem
* (particularly bundles F and G)
- *
- * As of the time of writing, the Root subsystem should contain 23
bundles:
- * org.eclipse.osgi
- * org.ops4j.pax.exam
- * org.ops4j.pax.exam.junit.extender
- * org.ops4j.pax.exam.junit.extender.impl
- * wrap_mvn_org.ops4j.pax.exam_pax-exam-junit
- * org.ops4j.pax.logging.pax-logging-api
- * org.ops4j.pax.logging.pax-logging-service
- * org.ops4j.pax.url.mvn
- * org.eclipse.osgi.services
- * org.eclipse.equinox.region
- * org.apache.aries.testsupport.unit
- * org.apache.aries.application.api
- * org.apache.aries.util
- * org.apache.aries.application.utils
- * org.apache.felix.bundlerepository
- * org.apache.felix.resolver
- * org.eclipse.equinox.coordinator
- * org.eclipse.equinox.event
- * org.apache.aries.subsystem.api
- * org.apache.aries.subsystem.core
- * org.apache.aries.subsystem.itest.interfaces
- * com.springsource.org.junit
- * org.ops4j.pax.exam.rbc
- * org.osgi.service.subsystem.region.context.0
- * pax-exam-probe
*
*/
@Test
- public void verifyNoUnexpectedBundlesProvisioned()
+ public void verifyNoUnexpectedBundlesProvisioned() throws Exception
{
- Bundle[] bundles = bundleContext.getBundles();
- assertEquals ("Wrong number of bundles in the Root subsystem",
25, bundles.length);
- for (Bundle b: bundles) {
+ Bundle[] rootBundlesBefore = bundleContext.getBundles();
+ Subsystem s = installSubsystemFromFile(APPLICATION_A);
+ startSubsystem(s);
+ Bundle[] rootBundlesAfter = bundleContext.getBundles();
+ for (Bundle b: rootBundlesAfter) {
assertTrue ("Bundle F should not have been
provisioned!", !b.getSymbolicName().equals(BUNDLE_F));
assertTrue ("Bundle G should not have been
provisioned!", !b.getSymbolicName().equals(BUNDLE_G));
}
+ checkNoNewBundles("SubsystemDependency_4ATest",
rootBundlesBefore, rootBundlesAfter);
+ stopSubsystem(s);
+ uninstallSubsystem(s);
}
-
+
private static void createTestApplicationA() throws Exception
{
Map<String, String> attributes = new HashMap<String, String>();
Modified:
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4CTest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4CTest.java?rev=1367550&r1=1367549&r2=1367550&view=diff
==============================================================================
---
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4CTest.java
(original)
+++
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4CTest.java
Tue Jul 31 13:48:25 2012
@@ -94,52 +94,23 @@ public class SubsystemDependency_4CTest
verifyCapabilityWiring (s2, BUNDLE_E, "y", BUNDLE_B);
stopSubsystems();
}
-
- /*
- * Verify no new bundles are installed into the Root or S1 subsystems
- */
-
- private static final Collection<String> _expectedRootRegionBundles =
Arrays.asList(new String[]{
- "org.eclipse.osgi", "org.ops4j.pax.exam",
"org.ops4j.pax.exam.junit.extender",
- "org.ops4j.pax.exam.junit.extender.impl",
"org.ops4j.pax.logging.pax-logging-api",
- "org.ops4j.pax.logging.pax-logging-service",
"org.ops4j.pax.url.mvn",
- "org.eclipse.osgi.services", "org.eclipse.equinox.region",
- "org.apache.aries.testsupport.unit",
"org.apache.aries.application.api",
- "org.apache.aries.util", "org.apache.aries.application.utils",
- "org.apache.felix.bundlerepository",
"org.apache.felix.resolver",
- "org.eclipse.equinox.coordinator", "org.eclipse.equinox.event",
- "org.apache.aries.subsystem.api",
"org.apache.aries.subsystem.core",
- "com.springsource.org.junit", "org.ops4j.pax.exam.rbc",
- "org.osgi.service.subsystem.region.context.0", "pax-exam-probe",
- "wrap_mvn_org.ops4j.pax.exam_pax-exam-junit_1.2.3",
"org.apache.aries.subsystem.itest.interfaces"});
-
- private static final Collection<String> _expectedS1RegionBundles =
Arrays.asList(new String[] {
- BUNDLE_A, BUNDLE_B,
"org.osgi.service.subsystem.region.context.1"});
@Test
public void verifyNoUnexpectedBundlesProvisioned() throws Exception
{
- startSubsystems();
- checkSubsystemContents ("Root",
bundleContext,_expectedRootRegionBundles);
- BundleContext s1Context = s1.getBundleContext();
- checkSubsystemContents ("S1", s1Context,
_expectedS1RegionBundles);
+ Bundle[] rootBundlesBefore = bundleContext.getBundles();
+ s1 = installSubsystemFromFile(SUBSYSTEM_S1);
+ startSubsystem(s1);
+ Bundle[] s1BundlesBefore = bundleContext.getBundles();
+ s2 = installSubsystemFromFile(s1, SUBSYSTEM_S2);
+ startSubsystem(s2);
+ Bundle[] rootBundlesAfter = bundleContext.getBundles();
+ Bundle[] s1BundlesAfter = bundleContext.getBundles();
+ checkNoNewBundles ("rootBundles", rootBundlesBefore,
rootBundlesAfter);
+ checkNoNewBundles ("s1Bundles", s1BundlesBefore,
s1BundlesAfter);
stopSubsystems();
}
- private void checkSubsystemContents (String subsystemName,
BundleContext subsystemContext, Collection<String> expectedBundleNames )
- {
- Bundle[] regionBundles = subsystemContext.getBundles();
- if (expectedBundleNames.size() != regionBundles.length) {
- fail ("Wrong number of bundles in the " + subsystemName
+ " subsystem."
- + " Expected " + expectedBundleNames.size() + "
bundles: " + expectedBundleNames
- + " Found " + regionBundles.length + " bundles:
" + Arrays.toString(regionBundles));
- }
- for (Bundle b: regionBundles) {
- String bsn = b.getSymbolicName();
- assertTrue ("Unexpected bundle found in " +
subsystemName + " subsystem: " + bsn, expectedBundleNames.contains(bsn));
- }
- }
-
/*
* a composite subsystem S1 with the following content bundles (with no
import/export policy)
- Bundle A