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]

Reply via email to