You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by mn...@apache.org on 2012/07/06 13:05:48 UTC

svn commit: r1358119 - in /aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem: ctt/itests/ itests/

Author: mnuttall
Date: Fri Jul  6 11:05:47 2012
New Revision: 1358119

URL: http://svn.apache.org/viewvc?rev=1358119&view=rev
Log:
Aries-865: Code tidy

Added:
    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
    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_4BTest.java
    aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/ApplicationTest.java
    aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/BasicTest.java
    aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java
    aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/HelloWorldTest.java
    aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java
    aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.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=1358119&r1=1358118&r2=1358119&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 Fri Jul  6 11:05:47 2012
@@ -13,6 +13,8 @@ import org.apache.aries.subsystem.itests
 import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.wiring.BundleWire;
@@ -49,6 +51,7 @@ import org.osgi.service.subsystem.Subsys
 	  - Bundle E
  */
 
+@RunWith(JUnit4TestRunner.class)
 public abstract class SubsystemDependencyTestBase extends SubsystemTest 
 {
 	protected static String BUNDLE_A = "sdt_bundle.a.jar";
@@ -59,22 +62,25 @@ public abstract class SubsystemDependenc
 	protected static String BUNDLE_F = "sdt_bundle.f.jar";
 	protected static String BUNDLE_G = "sdt_bundle.g.jar";
 
-	@BeforeClass
-	public static void createStaticResources() throws Exception
-	{ 
-		createBundleA();
-		createBundleB();
-		createBundleC();
-		createBundleD();
-		createBundleE();
-		createBundleF();
-		createBundleG();
-	}
-	
+	private static boolean _staticResourcesCreated = false;
 	@Before
 	public void setUp() throws Exception
 	{
 		super.setUp();
+		
+		// We'd like to do this in an @BeforeClass method, but files written in @BeforeClass
+		// go into the project's target/ directory whereas those written in @Before go into 
+		// paxexam's temp directory, which is where they're needed. 
+		if (!_staticResourcesCreated) { 
+			createBundleA();
+			createBundleB();
+			createBundleC();
+			createBundleD();
+			createBundleE();
+			createBundleF();
+			createBundleG();
+			_staticResourcesCreated = true;
+		}
 	}
 	
 	@After

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=1358119&r1=1358118&r2=1358119&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 Fri Jul  6 11:05:47 2012
@@ -1,23 +1,14 @@
 package org.apache.aries.subsystem.ctt.itests;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-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.List;
 import java.util.Map;
 
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.junit.JUnit4TestRunner;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.wiring.BundleWire;
-import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.service.subsystem.Subsystem;
 import org.osgi.service.subsystem.SubsystemConstants;
 
@@ -37,22 +28,19 @@ A) Test a transitively closed subsystem 
  
 */
 
-
-@RunWith(JUnit4TestRunner.class)
 public class SubsystemDependency_4ATest extends SubsystemDependencyTestBase 
 {
 	protected static String APPLICATION_A="sdt_application.a.esa";
-
-	@BeforeClass
-	public static void createTestApplication() throws Exception
-	{ 
-		createTestApplicationA();
-	}
+	private static boolean _testAppCreated = false;
 	
 	@Before
 	public void setUp() throws Exception
 	{
 		super.setUp();
+		if (!_testAppCreated) { 
+			createTestApplicationA();
+			_testAppCreated = true;
+		}
 		registerRepositoryR1();
 	}
 	

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4BTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4BTest.java?rev=1358119&r1=1358118&r2=1358119&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4BTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4BTest.java Fri Jul  6 11:05:47 2012
@@ -8,10 +8,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.junit.JUnit4TestRunner;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.service.subsystem.Subsystem;
@@ -28,22 +25,21 @@ import org.osgi.service.subsystem.Subsys
      - Verify the wiring of C, D and E wire to A->x, A, B->y respectively
  */
 
-@RunWith(JUnit4TestRunner.class)
 public class SubsystemDependency_4BTest extends SubsystemDependencyTestBase 
 {
 
-	protected static String APPLICATION_B="sdt_application.a.esa";
+	protected static String APPLICATION_B="sdt_application.b.esa";
 	
-	@BeforeClass
-	public static void createTestApp() throws Exception
-	{ 
-		createTestApplicationB();
-	}
+	private static boolean appCreated = false;
 	
 	@Before
 	public void setUp() throws Exception
 	{ 
 		super.setUp();
+		if (!appCreated) { 
+			createTestApplicationB();
+			appCreated = true;
+		}
 		registerRepositoryR2();
 	}
 	

Added: 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=1358119&view=auto
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4CTest.java (added)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/ctt/itests/SubsystemDependency_4CTest.java Fri Jul  6 11:05:47 2012
@@ -0,0 +1,58 @@
+package org.apache.aries.subsystem.ctt.itests;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.Constants;
+import org.osgi.service.subsystem.SubsystemConstants;
+
+public class SubsystemDependency_4CTest extends SubsystemDependencyTestBase 
+{
+	/*
+	 C) Test with pre-installed transitive resources
+     - Register repository R1
+     - Using the Root subsystem, install a composite subsystem S1 with the following content bundles (with no import/export policy)
+       - Bundle A
+       - Bundle B
+     - Using the subsystem S1, install a composite S2 that imports package x, requires bundle A and required capability y
+     - Verify the wiring of C, D and E wire to A->x, A, B->y respectively 
+     - Verify no new bundles are installed into the Root or S1 subsystems
+	 */
+	private static final String SUBSYSTEM_S1 = "sdt_composite.s1.esa";
+	
+	private static boolean _testSubsystemCreated = false;
+	@Before
+	public void setUp() throws Exception
+	{ 
+		super.setUp();
+		if (!_testSubsystemCreated) { 
+			createSubsystemS1();
+			_testSubsystemCreated = true;
+		}
+	}
+	
+	@Test
+	public void verifyCinS1WiresToAxInS2() 
+	{
+		
+	}
+	
+	private static void createSubsystemS1() throws Exception
+	{
+		Map<String, String> attributes = new HashMap<String, String>();
+		attributes.put(SubsystemConstants.SUBSYSTEM_SYMBOLICNAME, SUBSYSTEM_S1);
+		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;filter:=\"(bug=true)\"");
+		createManifest(SUBSYSTEM_S1 + ".mf", attributes);
+		createSubsystem(SUBSYSTEM_S1);
+	}
+
+}

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/ApplicationTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/ApplicationTest.java?rev=1358119&r1=1358118&r2=1358119&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/ApplicationTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/ApplicationTest.java Fri Jul  6 11:05:47 2012
@@ -21,7 +21,6 @@ package org.apache.aries.subsystem.itest
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
@@ -32,9 +31,6 @@ import java.util.jar.Manifest;
 import org.apache.aries.subsystem.itests.util.TestCapability;
 import org.apache.aries.subsystem.itests.util.TestRepository;
 import org.apache.aries.subsystem.itests.util.TestRepositoryContent;
-import org.apache.aries.subsystem.itests.util.Utils;
-import org.apache.aries.unittest.fixture.ArchiveFixture;
-import org.apache.aries.unittest.fixture.ArchiveFixture.ZipFixture;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -133,31 +129,6 @@ public class ApplicationTest extends Sub
 		createManifest(APPLICATION_B + ".mf", attributes);
 	}
 	
-	private static void createApplication(String name, String[] content) throws Exception {
-		ZipFixture feature = ArchiveFixture
-				.newZip()
-				.binary("OSGI-INF/SUBSYSTEM.MF",
-						ApplicationTest.class.getClassLoader().getResourceAsStream(
-								name + "/OSGI-INF/SUBSYSTEM.MF"));
-		for (String s : content) {
-			try {
-				feature.binary(s,
-						ApplicationTest.class.getClassLoader().getResourceAsStream(
-								name + '/' + s));
-			}
-			catch (Exception e) {
-				feature.binary(s, new FileInputStream(new File(s)));
-			}
-		}
-		feature.end();
-		FileOutputStream fos = new FileOutputStream(name + ".esa");
-		try {
-			feature.writeOut(fos);
-		} finally {
-			Utils.closeQuietly(fos);
-		}
-	}
-	
 	@Before
 	public static void createApplications() throws Exception {
 		if (createdApplications) {

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/BasicTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/BasicTest.java?rev=1358119&r1=1358118&r2=1358119&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/BasicTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/BasicTest.java Fri Jul  6 11:05:47 2012
@@ -21,13 +21,6 @@ package org.apache.aries.subsystem.itest
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-
-import org.apache.aries.subsystem.itests.util.Utils;
-import org.apache.aries.unittest.fixture.ArchiveFixture;
-import org.apache.aries.unittest.fixture.ArchiveFixture.ZipFixture;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -40,30 +33,6 @@ import org.osgi.service.subsystem.Subsys
 
 @RunWith(JUnit4TestRunner.class)
 public class BasicTest extends SubsystemTest {
-	private static void createApplication(String name, String[] content) throws Exception {
-		ZipFixture feature = ArchiveFixture
-				.newZip()
-				.binary("OSGI-INF/SUBSYSTEM.MF",
-						FeatureTest.class.getClassLoader().getResourceAsStream(
-								name + "/OSGI-INF/SUBSYSTEM.MF"));
-		for (String s : content) {
-			try {
-				feature.binary(s,
-						FeatureTest.class.getClassLoader().getResourceAsStream(
-								name + '/' + s));
-			}
-			catch (Exception e) {
-				feature.binary(s, new FileInputStream(new File(s)));
-			}
-		}
-		feature.end();
-		FileOutputStream fos = new FileOutputStream(name + ".esa");
-		try {
-			feature.writeOut(fos);
-		} finally {
-			Utils.closeQuietly(fos);
-		}
-	}
 	
 	@Before
 	public static void createApplications() throws Exception {

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java?rev=1358119&r1=1358118&r2=1358119&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java Fri Jul  6 11:05:47 2012
@@ -18,17 +18,11 @@
  */
 package org.apache.aries.subsystem.itests;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.util.Collection;
 
 import junit.framework.AssertionFailedError;
 
 import org.apache.aries.subsystem.core.internal.ResourceHelper;
-import org.apache.aries.subsystem.itests.util.Utils;
-import org.apache.aries.unittest.fixture.ArchiveFixture;
-import org.apache.aries.unittest.fixture.ArchiveFixture.ZipFixture;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -42,30 +36,6 @@ import org.osgi.service.subsystem.Subsys
 
 @RunWith(JUnit4TestRunner.class)
 public class FeatureTest extends SubsystemTest {
-	private static void createApplication(String name, String[] content) throws Exception {
-		ZipFixture feature = ArchiveFixture
-				.newZip()
-				.binary("OSGI-INF/SUBSYSTEM.MF",
-						FeatureTest.class.getClassLoader().getResourceAsStream(
-								name + "/OSGI-INF/SUBSYSTEM.MF"));
-		for (String s : content) {
-			try {
-				feature.binary(s,
-						FeatureTest.class.getClassLoader().getResourceAsStream(
-								name + '/' + s));
-			}
-			catch (Exception e) {
-				feature.binary(s, new FileInputStream(new File(s)));
-			}
-		}
-		feature.end();
-		FileOutputStream fos = new FileOutputStream(name + ".esa");
-		try {
-			feature.writeOut(fos);
-		} finally {
-			Utils.closeQuietly(fos);
-		}
-	}
 	
 	@Before
 	public static void createApplications() throws Exception {

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/HelloWorldTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/HelloWorldTest.java?rev=1358119&r1=1358118&r2=1358119&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/HelloWorldTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/HelloWorldTest.java Fri Jul  6 11:05:47 2012
@@ -14,12 +14,17 @@ import org.osgi.framework.BundleContext;
 import org.osgi.service.subsystem.Subsystem;
 
 @RunWith(JUnit4TestRunner.class)
-public class HelloWorldTest extends InstallTest {
+public class HelloWorldTest extends SubsystemTest 
+{
+	private static boolean _testAppCreated = false;
 	
 	@Before
 	public void installTestApp() throws Exception 
 	{
-		createApplication("hello", new String[]{"helloImpl.jar"});
+		if (!_testAppCreated) { 
+			createApplication("hello", new String[]{"helloImpl.jar"});
+			_testAppCreated = true;
+		}
 	}
 
 	@Test

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java?rev=1358119&r1=1358118&r2=1358119&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java Fri Jul  6 11:05:47 2012
@@ -20,13 +20,6 @@ package org.apache.aries.subsystem.itest
 
 import static org.junit.Assert.assertSame;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-
-import org.apache.aries.subsystem.itests.util.Utils;
-import org.apache.aries.unittest.fixture.ArchiveFixture;
-import org.apache.aries.unittest.fixture.ArchiveFixture.ZipFixture;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -35,30 +28,6 @@ import org.osgi.service.subsystem.Subsys
 
 @RunWith(JUnit4TestRunner.class)
 public class InstallTest extends SubsystemTest {
-	static void createApplication(String name, String[] content) throws Exception {
-		ZipFixture feature = ArchiveFixture
-				.newZip()
-				.binary("OSGI-INF/SUBSYSTEM.MF",
-						FeatureTest.class.getClassLoader().getResourceAsStream(
-								name + "/OSGI-INF/SUBSYSTEM.MF"));
-		for (String s : content) {
-			try {
-				feature.binary(s,
-						FeatureTest.class.getClassLoader().getResourceAsStream(
-								name + '/' + s));
-			}
-			catch (Exception e) {
-				feature.binary(s, new FileInputStream(new File(s)));
-			}
-		}
-		feature.end();
-		FileOutputStream fos = new FileOutputStream(name + ".esa");
-		try {
-			feature.writeOut(fos);
-		} finally {
-			Utils.closeQuietly(fos);
-		}
-	}
 	
 	@Before
 	public static void createApplications() throws Exception {

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.java?rev=1358119&r1=1358118&r2=1358119&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.java Fri Jul  6 11:05:47 2012
@@ -197,7 +197,7 @@ public abstract class SubsystemTest exte
 				mavenBundle("org.eclipse.equinox", "org.eclipse.equinox.event").version("3.8.0-SNAPSHOT"),
 				mavenBundle("org.apache.aries.subsystem", "org.apache.aries.subsystem.api"),
 				mavenBundle("org.apache.aries.subsystem", "org.apache.aries.subsystem.core"),
-//				org.ops4j.pax.exam.container.def.PaxRunnerOptions.vmOption("-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
+//				org.ops4j.pax.exam.container.def.PaxRunnerOptions.vmOption("-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=7777"),
 				PaxRunnerOptions.rawPaxRunnerOption("config", "classpath:ss-runner.properties"),
 				equinox().version("3.8.0-SNAPSHOT"));
 		options = updateOptions(options);
@@ -488,7 +488,8 @@ public abstract class SubsystemTest exte
 		createBundle(headers);
 	}
 	
-	protected static void createBundle(Map<String, String> headers) throws IOException {
+	protected static void createBundle(Map<String, String> headers) throws IOException 
+	{
 		String symbolicName = headers.get(Constants.BUNDLE_SYMBOLICNAME);
 		JarFixture bundle = ArchiveFixture.newJar();
 		ManifestFixture manifest = bundle.manifest();
@@ -742,7 +743,8 @@ public abstract class SubsystemTest exte
 		}
 	}
 	
-	protected static void write(String file, ArchiveFixture.AbstractFixture fixture) throws IOException {
+	protected static void write(String file, ArchiveFixture.AbstractFixture fixture) throws IOException 
+	{
 		write(new File(file), fixture);
 	}
 	
@@ -755,4 +757,30 @@ public abstract class SubsystemTest exte
     		fos.close();
     	}
 	}
+	
+	static void createApplication(String name, String[] content) throws Exception 
+	{
+		ZipFixture feature = ArchiveFixture
+				.newZip()
+				.binary("OSGI-INF/SUBSYSTEM.MF",
+						SubsystemTest.class.getClassLoader().getResourceAsStream(
+								name + "/OSGI-INF/SUBSYSTEM.MF"));
+		for (String s : content) {
+			try {
+				feature.binary(s,
+						SubsystemTest.class.getClassLoader().getResourceAsStream(
+								name + '/' + s));
+			}
+			catch (Exception e) {
+				feature.binary(s, new FileInputStream(new File(s)));
+			}
+		}
+		feature.end();
+		FileOutputStream fos = new FileOutputStream(name + ".esa");
+		try {
+			feature.writeOut(fos);
+		} finally {
+			Utils.closeQuietly(fos);
+		}
+	}
 }