Author: rsivaram
Date: Wed Mar 19 04:37:08 2008
New Revision: 638794
URL: http://svn.apache.org/viewvc?rev=638794&view=rev
Log:
Enable bundle caching for osgi-tuscany tests
Modified:
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/FelixTestRuntime.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/OSGiTestRuntime.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/OSGiRuntimeLoader.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
Modified:
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/FelixTestRuntime.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/FelixTestRuntime.java?rev=638794&r1=638793&r2=638794&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/FelixTestRuntime.java
(original)
+++
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/FelixTestRuntime.java
Wed Mar 19 04:37:08 2008
@@ -62,15 +62,15 @@
}
- private void deleteProfile() {
- String profileDirName = System.getProperty("felix.cache.profiledir");
- if (profileDirName == null) profileDirName = ".felix";
- File profileDir = new File(profileDirName);
- if (profileDir.isDirectory())
- deleteDirectory(profileDir);
- else
- profileDir.delete();
- }
+// private void deleteProfile() {
+// String profileDirName = System.getProperty("felix.cache.profiledir");
+// if (profileDirName == null) profileDirName = ".felix";
+// File profileDir = new File(profileDirName);
+// if (profileDir.isDirectory())
+// deleteDirectory(profileDir);
+// else
+// profileDir.delete();
+// }
protected BundleContext startRuntime() throws Exception {
@@ -79,7 +79,7 @@
Properties props = Main.loadConfigProperties();
- deleteProfile();
+ //deleteProfile();
// Create profile directory
String profileDirName = System.getProperty("felix.cache.profiledir");
if (profileDirName == null) profileDirName = ".felix";
Modified:
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/OSGiTestRuntime.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/OSGiTestRuntime.java?rev=638794&r1=638793&r2=638794&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/OSGiTestRuntime.java
(original)
+++
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/OSGiTestRuntime.java
Wed Mar 19 04:37:08 2008
@@ -63,6 +63,7 @@
}
instance = FelixTestRuntime.getInstance();
+ // instance = EquinoxTestRuntime.getInstance();
return instance;
}
Modified:
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/OSGiRuntimeLoader.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/OSGiRuntimeLoader.java?rev=638794&r1=638793&r2=638794&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/OSGiRuntimeLoader.java
(original)
+++
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/OSGiRuntimeLoader.java
Wed Mar 19 04:37:08 2008
@@ -33,7 +33,7 @@
setUpFelixTestRuntime();
- System.setProperty("felix.cache.profiledir", ".felix.test");
+ System.setProperty("felix.cache.profiledir", "target/.felix.test");
OSGiTestRuntime osgiRuntime = OSGiTestRuntime.getRuntime();
Modified:
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java?rev=638794&r1=638793&r2=638794&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java
(original)
+++
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java
Wed Mar 19 04:37:08 2008
@@ -3,9 +3,11 @@
import java.io.File;
import java.io.FilenameFilter;
+import java.lang.reflect.Method;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
/**
* Load Tuscany into an OSGi runtime
@@ -19,8 +21,6 @@
private static final String tuscanyExtensionsDir = "tuscany-extensions";
private static final String thirdPartyDir = "tuscany-3rdparty";
- private static Bundle tuscanyRuntimeBundle;
-
private static String findBundle(String subDirName) throws Exception {
@@ -49,9 +49,6 @@
*/
public static Bundle loadTuscanyIntoOSGi(BundleContext bundleContext)
throws Exception {
- if (tuscanyRuntimeBundle != null)
- return tuscanyRuntimeBundle;
-
long startTime = System.currentTimeMillis();
String thirdPartyBundleName = findBundle(thirdPartyDir);
@@ -83,6 +80,26 @@
return tuscanyRuntimeBundle;
+ }
+
+ public static void startTuscany(Bundle tuscanyRuntimeBundle) throws
BundleException {
+ if (tuscanyRuntimeBundle != null) {
+ tuscanyRuntimeBundle.start();
+
+ // Tuscany runtime is started on a different thread when
previously cached bundle is used.
+ // Set this thread's TCCL to the on used by the runtime.
+ try {
+ Class<?> runtimeClass =
tuscanyRuntimeBundle.loadClass("org.apache.tuscany.sca.osgi.runtime.OSGiRuntime");
+ Method getRuntimeMethod =
runtimeClass.getMethod("findRuntime");
+ Object runtime = getRuntimeMethod.invoke(runtimeClass);
+ Method getTCCLMethod =
runtimeClass.getMethod("getContextClassLoader");
+ ClassLoader runtimeTCCL = (ClassLoader)
getTCCLMethod.invoke(runtime);
+ Thread.currentThread().setContextClassLoader(runtimeTCCL);
+
+
+ } catch (Throwable e) {
+ }
+ }
}
}
Modified:
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java?rev=638794&r1=638793&r2=638794&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java
(original)
+++
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java
Wed Mar 19 04:37:08 2008
@@ -58,19 +58,25 @@
private OSGiTestRuntime osgiRuntime;
private Bundle tuscanyRuntime;
private BundleContext bundleContext;
+ private Bundle testBundle;
public void setUp() throws Exception {
osgiRuntime = OSGiRuntimeLoader.startOSGiTestRuntime();
bundleContext = osgiRuntime.getBundleContext();
+
+ // Uninstall any previously installed test bundles
+ for (Bundle bundle : bundleContext.getBundles()) {
+ if
("org.apache.tuscany.sca.test.samples".equals(bundle.getSymbolicName())) {
+ bundle.uninstall();
+ }
+ }
}
public void tearDown() throws Exception {
-
if (tuscanyRuntime != null) {
tuscanyRuntime.stop();
- tuscanyRuntime.uninstall();
}
OSGiRuntimeLoader.shutdownOSGiRuntime();
}
@@ -100,14 +106,14 @@
String manifestFile = "target/test-classes/META-INF/MANIFEST.MF";
- Bundle testBundle = createAndInstallBundle(
+ testBundle = createAndInstallBundle(
"file:" + mainTestDir + "/target/classes", // Bundle
location: used to get File URLs for DefaultSCADomain
manifestFile, // Test bundle
manifest file
dirs // Directory
entries to be added to bundle
);
- tuscanyRuntime.start();
+ TuscanyLoader.startTuscany(tuscanyRuntime);
testBundle.start();
Modified:
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java?rev=638794&r1=638793&r2=638794&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java
(original)
+++
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java
Wed Mar 19 04:37:08 2008
@@ -31,6 +31,7 @@
import org.junit.Before;
import org.junit.Test;
import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
/*
@@ -46,6 +47,17 @@
public void setUp() throws Exception {
osgiRuntime = OSGiRuntimeLoader.startOSGiTestRuntime();
+ BundleContext bundleContext = osgiRuntime.getBundleContext();
+
+ // Uninstall any previously installed test bundles
+ for (Bundle bundle : bundleContext.getBundles()) {
+ String bundleName = bundle.getSymbolicName();
+ if (bundleName != null &&
+ (bundleName.equals("org.apache.tuscany.sca.test.samples")||
+ bundleName.startsWith("supplychain"))) {
+ bundle.uninstall();
+ }
+ }
}
@@ -54,7 +66,6 @@
if (tuscanyRuntime != null) {
tuscanyRuntime.stop();
- tuscanyRuntime.uninstall();
}
OSGiRuntimeLoader.shutdownOSGiRuntime();
}
@@ -66,7 +77,7 @@
tuscanyRuntime =
TuscanyLoader.loadTuscanyIntoOSGi(osgiRuntime.getBundleContext());
Assert.assertNotNull(tuscanyRuntime);
- tuscanyRuntime.start();
+ TuscanyLoader.startTuscany(tuscanyRuntime);
Class<?> clazz =
tuscanyRuntime.loadClass("org.apache.tuscany.sca.osgi.runtime.OSGiRuntime");
Assert.assertNotNull(clazz);
@@ -86,7 +97,7 @@
private void testOSGiTuscanyUsingOSGiClient(String contributionJarName)
throws Exception {
tuscanyRuntime =
TuscanyLoader.loadTuscanyIntoOSGi(osgiRuntime.getBundleContext());
- tuscanyRuntime.start();
+ TuscanyLoader.startTuscany(tuscanyRuntime);
String folderName = "../test-bundles/target/";
String supplychainJarName = contributionJarName;
@@ -108,6 +119,9 @@
m.invoke(testService, contributionJarName);
System.out.println("OSGi Client test completed successfully.");
+
+ supplyChainBundle.uninstall();
+ clientBundle.uninstall();
}
Modified:
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java?rev=638794&r1=638793&r2=638794&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java
(original)
+++
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiBundleActivator.java
Wed Mar 19 04:37:08 2008
@@ -33,6 +33,7 @@
runtime = OSGiRuntime.findRuntime();
runtime.setBundleContext(bundleContext);
+ runtime.setContextClassLoader(threadContextClassLoader);
runtime.initialize();
}
Modified:
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java?rev=638794&r1=638793&r2=638794&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
(original)
+++
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
Wed Mar 19 04:37:08 2008
@@ -47,6 +47,8 @@
private boolean tuscanyRunningInOSGiContainer;
+ private ClassLoader contextClassLoader =
Thread.currentThread().getContextClassLoader();
+
/**
* System property
org.apache.tuscany.implementation.osgi.runtime.OSGiRuntime can be set to the
* name of the OSGiRuntime class (eg. EquinoxRuntime). If set, start this
runtime and return the
@@ -145,6 +147,16 @@
this.bundleContext = bundleContext;
}
+
+
+ public ClassLoader getContextClassLoader() {
+ return contextClassLoader;
+ }
+
+ protected void setContextClassLoader(ClassLoader contextClassLoader) {
+ this.contextClassLoader = contextClassLoader;
+ }
+
protected void initialize() {
bundleContext = getBundleContext();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]