You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/08/20 15:55:43 UTC

svn commit: r1375023 - in /camel/branches/camel-2.10.x: ./ components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/ components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/

Author: davsclaus
Date: Mon Aug 20 13:55:43 2012
New Revision: 1375023

URL: http://svn.apache.org/viewvc?rev=1375023&view=rev
Log:
CAMEL-5507: Improved blueprint test on windows by having test-bundle directory for the test bundle that is created for testing that isnt deletable out of the box when the test terminates. This avoids a 5 sec delete attempt that otherwise would fail on windows, making test slower.

Modified:
    camel/branches/camel-2.10.x/   (props changed)
    camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java
    camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
    camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/FilterTest.java

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1375019

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java?rev=1375023&r1=1375022&r2=1375023&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java (original)
+++ camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java Mon Aug 20 13:55:43 2012
@@ -16,21 +16,10 @@
  */
 package org.apache.camel.test.blueprint;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
+import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.jar.JarInputStream;
 
 import de.kalpatec.pojosr.framework.PojoServiceRegistryFactoryImpl;
@@ -46,13 +35,7 @@ import org.apache.camel.util.ObjectHelpe
 import org.apache.camel.util.ResourceHelper;
 import org.ops4j.pax.swissbox.tinybundles.core.TinyBundle;
 import org.ops4j.pax.swissbox.tinybundles.core.TinyBundles;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-import org.osgi.framework.Filter;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceReference;
+import org.osgi.framework.*;
 import org.osgi.util.tracker.ServiceTracker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -91,18 +74,23 @@ public final class CamelBlueprintHelper 
     }
 
     public static BundleContext createBundleContext(String name, String bundleFilter, TinyBundle bundle) throws Exception {
-        deleteDirectory("target/bundles");
-        createDirectory("target/bundles");
-
         // ensure pojosr stores bundles in an unique target directory
-        System.setProperty("org.osgi.framework.storage", "target/bundles/" + System.currentTimeMillis());
+        String uid = "" + System.currentTimeMillis();
+        String tempDir = "target/bundles/" + uid;
+        System.setProperty("org.osgi.framework.storage", tempDir);
+        createDirectory(tempDir);
+
+        // use another directory for the jar of the bundle as it cannot be in the same directory
+        // as it has a file lock during running the tests which will cause the temp dir to not be
+        // fully deleted between tests
+        createDirectory("target/test-bundles");
 
         // get the bundles
         List<BundleDescriptor> bundles = getBundleDescriptors(bundleFilter);
 
         if (bundle != null) {
-            String jarName = name.toLowerCase();
-            bundles.add(getBundleDescriptor("target/bundles/" + jarName + ".jar", bundle));
+            String jarName = name.toLowerCase(Locale.ENGLISH) + "-" + uid + ".jar";
+            bundles.add(getBundleDescriptor("target/test-bundles/" + jarName, bundle));
         }
 
         if (LOG.isDebugEnabled()) {
@@ -124,10 +112,22 @@ public final class CamelBlueprintHelper 
     public static void disposeBundleContext(BundleContext bundleContext) throws BundleException {
         try {
             if (bundleContext != null) {
-                bundleContext.getBundle().stop();
+                List<Bundle> bundles = new ArrayList<Bundle>();
+                bundles.addAll(Arrays.asList(bundleContext.getBundles()));
+                Collections.reverse(bundles);
+                for (Bundle bundle : bundles) {
+                    LOG.debug("Stopping bundle {}", bundle);
+                    bundle.stop();
+                }
             }
+        } catch (Exception e) {
+            LOG.warn("Error during disposing BundleContext. This exception will be ignored.", e);
         } finally {
-            System.clearProperty("org.osgi.framework.storage");
+            String tempDir = System.clearProperty("org.osgi.framework.storage");
+            if (tempDir != null) {
+                LOG.info("Deleting work directory {}", tempDir);
+                deleteDirectory(tempDir);
+            }
         }
     }
 
@@ -296,13 +296,19 @@ public final class CamelBlueprintHelper 
 
     private static BundleDescriptor getBundleDescriptor(String path, TinyBundle bundle) throws Exception {
         File file = new File(path);
-        FileOutputStream fos = new FileOutputStream(file, true);
+        // tell the JVM its okay to delete this file on exit as its a temporary file
+        // the JVM may not successfully delete the file though
+        file.deleteOnExit();
+
+        FileOutputStream fos = new FileOutputStream(file, false);
+        InputStream is = bundle.build();
         try {
-            IOHelper.copyAndCloseInput(bundle.build(), fos);
+            IOHelper.copyAndCloseInput(is, fos);
         } finally {
-            IOHelper.close(fos);
+            IOHelper.close(is, fos);
         }
 
+        BundleDescriptor answer = null;
         FileInputStream fis = null;
         JarInputStream jis = null;
         try {
@@ -313,13 +319,15 @@ public final class CamelBlueprintHelper 
                 headers.put(entry.getKey().toString(), entry.getValue().toString());
             }
 
-            return new BundleDescriptor(
+            answer = new BundleDescriptor(
                     bundle.getClass().getClassLoader(),
                     new URL("jar:" + file.toURI().toString() + "!/"),
                     headers);
         } finally {
-            IOHelper.close(fis, jis);
+            IOHelper.close(jis, fis);
         }
+
+        return answer;
     }
 
 }

Modified: camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java?rev=1375023&r1=1375022&r2=1375023&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java (original)
+++ camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java Mon Aug 20 13:55:43 2012
@@ -63,7 +63,6 @@ public abstract class CamelBlueprintTest
 
     /**
      * Return the system bundle context
-     * @return
      */
     protected BundleContext getBundleContext() {
         return bundleContext;

Modified: camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/FilterTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/FilterTest.java?rev=1375023&r1=1375022&r2=1375023&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/FilterTest.java (original)
+++ camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/FilterTest.java Mon Aug 20 13:55:43 2012
@@ -20,6 +20,7 @@ import org.apache.camel.EndpointInject;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.Ignore;
 import org.junit.Test;
 
 /**