You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by cs...@apache.org on 2013/12/18 12:14:13 UTC

svn commit: r1551914 - in /cxf/trunk: osgi/itests/pom.xml osgi/itests/src/test/java/org/apache/cxf/osgi/itests/BasicFeatureTest.java osgi/itests/src/test/java/org/apache/cxf/osgi/itests/CXFOSGiTestSupport.java parent/pom.xml

Author: cschneider
Date: Wed Dec 18 11:14:13 2013
New Revision: 1551914

URL: http://svn.apache.org/r1551914
Log:
[CXF-5468] - Upgrade osgi itests to pax exam 3.4.0 and karaf 2.3.3

Modified:
    cxf/trunk/osgi/itests/pom.xml
    cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/BasicFeatureTest.java
    cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/CXFOSGiTestSupport.java
    cxf/trunk/parent/pom.xml

Modified: cxf/trunk/osgi/itests/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/osgi/itests/pom.xml?rev=1551914&r1=1551913&r2=1551914&view=diff
==============================================================================
--- cxf/trunk/osgi/itests/pom.xml (original)
+++ cxf/trunk/osgi/itests/pom.xml Wed Dec 18 11:14:13 2013
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.cxf</groupId>
         <artifactId>cxf-parent</artifactId>
-        <version>2.6.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
         <relativePath>../../parent/pom.xml</relativePath>
     </parent>
     <groupId>org.apache.cxf.osgi.itests</groupId>
@@ -29,50 +29,99 @@
     <name>Apache CXF :: OSGi :: Integration Tests</name>
     <packaging>jar</packaging>
     <properties>
-        <pax.exam.version>2.3.0.M1</pax.exam.version>
-        <pax.exam.karaf.version>0.4.0</pax.exam.karaf.version>
+        <pax.exam.version>3.4.0</pax.exam.version>
         <pax.url.version>1.2.8</pax.url.version>
         <cxf.surefire.fork.mode>once</cxf.surefire.fork.mode>
     </properties>
     <dependencies>
         <dependency>
-            <groupId>org.ops4j.pax.url</groupId>
-            <artifactId>pax-url-mvn</artifactId>
-            <version>${pax.url.version}</version>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-core</artifactId>
+            <version>${project.version}</version>
         </dependency>
+        
         <dependency>
-            <groupId>org.ops4j.pax.url</groupId>
-            <artifactId>pax-url-aether</artifactId>
-            <version>${pax.url.version}</version>
+            <groupId>org.apache.cxf.karaf</groupId>
+            <artifactId>apache-cxf</artifactId>
+            <version>${project.version}</version>
+            <type>xml</type>
+            <classifier>features</classifier>
+        </dependency>
+        
+        <dependency>
+        	<groupId>org.apache.karaf</groupId>
+        	<artifactId>apache-karaf</artifactId>
+        	<version>${cxf.karaf.version}</version>
+        	<type>tar.gz</type>
+        </dependency>
+        <dependency>
+        	<groupId>org.apache.karaf.features</groupId>
+        	<artifactId>org.apache.karaf.features.core</artifactId>
+        	<version>${cxf.karaf.version}</version>
+        </dependency>
+        <dependency>
+        	<groupId>org.apache.karaf.shell</groupId>
+        	<artifactId>org.apache.karaf.shell.console</artifactId>
+        	<version>${cxf.karaf.version}</version>
+        </dependency>
+        <dependency>
+        	<groupId>org.osgi</groupId>
+        	<artifactId>org.osgi.compendium</artifactId>
         </dependency>
+        
         <dependency>
-            <groupId>org.apache.karaf</groupId>
-            <artifactId>apache-karaf</artifactId>
-            <version>${cxf.karaf.version}</version>
-            <type>tar.gz</type>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-atinject_1.0_spec</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.openengsb.labs.paxexam.karaf</groupId>
-            <artifactId>paxexam-karaf-container</artifactId>
-            <version>${pax.exam.karaf.version}</version>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+
+        
         <dependency>
             <groupId>org.ops4j.pax.exam</groupId>
             <artifactId>pax-exam-junit4</artifactId>
             <version>${pax.exam.version}</version>
             <scope>test</scope>
         </dependency>
+
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam</artifactId>
+            <version>${pax.exam.version}</version>
             <scope>test</scope>
         </dependency>
+
         <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-core</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-container-karaf</artifactId>
+            <version>${pax.exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-link-mvn</artifactId>
+            <version>${pax.exam.version}</version>
+            <scope>test</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.ops4j.pax.url</groupId>
+            <artifactId>pax-url-aether</artifactId>
+            <version>1.2.8</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+
     </dependencies>
     <build>
         <plugins>
@@ -80,37 +129,12 @@
             <plugin>
                 <groupId>org.apache.servicemix.tooling</groupId>
                 <artifactId>depends-maven-plugin</artifactId>
-                <version>1.2</version>
                 <executions>
                     <execution>
                         <id>generate-depends-file</id>
                         <goals>
                             <goal>generate-depends-file</goal>
                         </goals>
-                        <phase>compile</phase>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>unpack-unix</id>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>unpack</goal>
-                        </goals>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>org.apache.karaf</groupId>
-                                    <artifactId>apache-karaf</artifactId>
-                                    <type>tar.gz</type>
-                                    <outputDirectory>target/karaf-base</outputDirectory>
-                                </artifactItem>
-                            </artifactItems>
-                        </configuration>
                     </execution>
                 </executions>
             </plugin>

Modified: cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/BasicFeatureTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/BasicFeatureTest.java?rev=1551914&r1=1551913&r2=1551914&view=diff
==============================================================================
--- cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/BasicFeatureTest.java (original)
+++ cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/BasicFeatureTest.java Wed Dec 18 11:14:13 2013
@@ -19,55 +19,34 @@
 
 package org.apache.cxf.osgi.itests;
 
-import java.io.File;
-
-import org.junit.After;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.openengsb.labs.paxexam.karaf.options.LogLevelOption;
+import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.Configuration;
-import org.ops4j.pax.exam.junit.ExamReactorStrategy;
-import org.ops4j.pax.exam.junit.JUnit4TestRunner;
-import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
 
-import static org.openengsb.labs.paxexam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
-import static org.openengsb.labs.paxexam.karaf.options.KarafDistributionOption.logLevel;
-import static org.openengsb.labs.paxexam.karaf.options.KarafDistributionOption.replaceConfigurationFile;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
 
-@RunWith(JUnit4TestRunner.class)
-@ExamReactorStrategy(AllConfinedStagedReactorFactory.class)
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
 public class BasicFeatureTest extends CXFOSGiTestSupport {
-    //private static final String UNINSTALLED = "[uninstalled]";
-    //private static final String INSTALLED = "[installed  ]";
-
     @Test
-    public void testCXFFeaturesModule() throws InterruptedException {
-        installCXF();
-        Thread.sleep(DEFAULT_TIMEOUT);
-
-        System.err.println(executeCommand("list"));
-
-
-    }
-
-    @After
-    public void tearDown() {
-        try {
-            unInstallCXF();
-        } catch (Exception ex) {
-            //Ignore
-        }
+    public void testCXFFeaturesModule() throws Exception {
+        assertBundleInstalled("org.apache.cxf.cxf-core");
+        assertBlueprintNameSpacePublished("http://cxf.apache.org/blueprint/core");
+        assertBlueprintNameSpacePublished("http://cxf.apache.org/configuration/beans");
+        assertBlueprintNameSpacePublished("http://cxf.apache.org/configuration/parameterized-types");
     }
 
     @Configuration
     public Option[] config() {
-        File file = new File("target/karaf-base/apache-karaf-2.2.5/etc/jre.properties.cxf")
-            .getAbsoluteFile();
         return new Option[]{
-                cxfDistributionConfiguration(), 
+                cxfBaseConfig(), 
                 keepRuntimeFolder(),
-                replaceConfigurationFile("etc/jre.properties", file),
-                logLevel(LogLevelOption.LogLevel.INFO)};
+                logLevel(LogLevel.INFO)};
     }
 }

Modified: cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/CXFOSGiTestSupport.java
URL: http://svn.apache.org/viewvc/cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/CXFOSGiTestSupport.java?rev=1551914&r1=1551913&r2=1551914&view=diff
==============================================================================
--- cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/CXFOSGiTestSupport.java (original)
+++ cxf/trunk/osgi/itests/src/test/java/org/apache/cxf/osgi/itests/CXFOSGiTestSupport.java Wed Dec 18 11:14:13 2013
@@ -36,14 +36,19 @@ import java.util.concurrent.ExecutorServ
 import java.util.concurrent.Executors;
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.TimeUnit;
+
 import javax.inject.Inject;
 
+import org.apache.aries.blueprint.NamespaceHandler;
 import org.apache.felix.service.command.CommandProcessor;
 import org.apache.felix.service.command.CommandSession;
-import org.ops4j.pax.exam.MavenUtils;
+import org.apache.karaf.features.FeaturesService;
+import org.junit.Assert;
+import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.ProbeBuilder;
 import org.ops4j.pax.exam.TestProbeBuilder;
-import org.ops4j.pax.exam.junit.ProbeBuilder;
+import org.ops4j.pax.exam.options.MavenUrlReference;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
@@ -53,8 +58,9 @@ import org.osgi.framework.InvalidSyntaxE
 import org.osgi.framework.ServiceReference;
 import org.osgi.util.tracker.ServiceTracker;
 
-import static org.openengsb.labs.paxexam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
 import static org.ops4j.pax.exam.CoreOptions.maven;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
 
 /**
  * 
@@ -63,24 +69,13 @@ public class CXFOSGiTestSupport {
     static final Long COMMAND_TIMEOUT = 10000L;
     static final Long DEFAULT_TIMEOUT = 20000L;
     static final Long SERVICE_TIMEOUT = 30000L;
-    static final String GROUP_ID = "org.apache.karaf";
-    static final String ARTIFACT_ID = "apache-karaf";
-
-    static final String INSTANCE_STARTED = "Started";
-    static final String INSTANCE_STARTING = "Starting";
-
-    static final String CXF_FEATURE_URL 
-        = "mvn:org.apache.cxf.karaf/apache-cxf/" 
-          //+ org.apache.cxf.version.Version.getCurrentVersion()
-          + "2.6.0-SNAPSHOT"
-          + "/xml/features";
-
-    static final String DEBUG_OPTS = " --java-opts \"-Xdebug -Xnoagent -Djava.compiler=NONE" 
-        + " -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=%s\"";
 
     @Inject
     protected BundleContext bundleContext;
-
+    
+    @Inject
+    protected FeaturesService featureService;
+    
     ExecutorService executor = Executors.newCachedThreadPool();
 
     /**
@@ -90,35 +85,34 @@ public class CXFOSGiTestSupport {
     @ProbeBuilder
     public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
         probe.setHeader(Constants.DYNAMICIMPORT_PACKAGE, "*,org.apache.felix.service.*;status=provisional");
-
         return probe;
     }
 
-
-    /**
-     * Installs the CXF feature
-     */
-    protected void installCXF() {
-        System.err.println(executeCommand("features:addurl " + CXF_FEATURE_URL));
-        System.err.println(executeCommand("features:install cxf"));
-    }
-
-    protected void unInstallCXF() {
-        System.err.println(executeCommand("features:uninstall cxf"));
-        System.err.println(executeCommand("list"));
-    }
-
     /**
      * Create an {@link org.ops4j.pax.exam.Option} for using a .
      *
      * @return
      */
-    protected Option cxfDistributionConfiguration() {
-        return karafDistributionConfiguration().frameworkUrl(
-                maven().groupId(GROUP_ID).artifactId(ARTIFACT_ID).versionAsInProject().type("tar.gz"))
-                .karafVersion(MavenUtils.getArtifactVersion(GROUP_ID, ARTIFACT_ID))
+    protected Option cxfBaseConfig() {
+        MavenUrlReference karafUrl = maven()
+            .groupId("org.apache.karaf")
+            .artifactId("apache-karaf")
+            .versionAsInProject()
+            .type("tar.gz");
+        MavenUrlReference cxfUrl = maven()
+            .groupId("org.apache.cxf.karaf")
+            .artifactId("apache-cxf")
+            .versionAsInProject()
+            .type("xml")
+            .classifier("features");
+        return CoreOptions.composite(
+             karafDistributionConfiguration()
+                .frameworkUrl(karafUrl)
+                .karafVersion("2.3.3")
                 .name("Apache Karaf")
-                .unpackDirectory(new File("target/paxexam/"));
+                .unpackDirectory(new File("target/paxexam/")),
+             features(cxfUrl, "cxf-core")
+        );
     }
 
     /**
@@ -251,6 +245,9 @@ public class CXFOSGiTestSupport {
         return getOsgiService(type, null, SERVICE_TIMEOUT);
     }
 
+    @SuppressWarnings({
+        "rawtypes", "unchecked"
+    })
     protected <T> T getOsgiService(Class<T> type, String filter, long timeout) {
         ServiceTracker tracker = null;
         try {
@@ -271,7 +268,6 @@ public class CXFOSGiTestSupport {
             // This is buggy, as the service reference may change i think
             Object svc = type.cast(tracker.waitForService(timeout));
             if (svc == null) {
-                @SuppressWarnings("unchecked")
                 Dictionary<String, String> dic = bundleContext.getBundle().getHeaders();
                 System.err.println("Test bundle headers: " + explode(dic));
 
@@ -292,7 +288,7 @@ public class CXFOSGiTestSupport {
             throw new RuntimeException(e);
         }
     }
-
+    
     /**
      * Finds a free port starting from the give port numner.
      *
@@ -342,7 +338,38 @@ public class CXFOSGiTestSupport {
     /**
      * Provides an iterable collection of references, even if the original array is null
      */
+    @SuppressWarnings("rawtypes")
     private static Collection<ServiceReference> asCollection(ServiceReference[] references) {
         return references != null ? Arrays.asList(references) : Collections.<ServiceReference>emptyList();
     }
+    
+    protected void assertBundleInstalled(String name) {
+        Bundle bundle = findBundleByName(name);
+        Assert.assertNotNull("Bundle " + name + " should be installed", bundle);
+        Assert.assertEquals("Bundle " + name + " should be started", Bundle.ACTIVE, bundle.getState());
+    }
+    
+    protected Bundle findBundleByName(String symbolicName) {
+        for (Bundle bundle : bundleContext.getBundles()) {
+            if (bundle.getSymbolicName().equals(symbolicName)) {
+                return bundle;
+            }
+        }
+        return null;
+    }
+    
+    public void assertServicePublished(String filter) {
+        try {
+            Filter serviceFilter = bundleContext.createFilter(filter);
+            ServiceTracker<?, ?> tracker = new ServiceTracker<Object, Object>(bundleContext, serviceFilter, null);
+            tracker.waitForService(SERVICE_TIMEOUT);
+        } catch (Exception e) {
+            throw new RuntimeException("Unexpected exception occured" , e);
+        }
+    }
+    
+    public void assertBlueprintNameSpacePublished(String namespace) {
+        assertServicePublished(String.format("(&(objectClass=%s)(osgi.service.blueprint.namespace='%s'))", 
+                                             NamespaceHandler.class.getName(), namespace));
+    }
 }

Modified: cxf/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/parent/pom.xml?rev=1551914&r1=1551913&r2=1551914&view=diff
==============================================================================
--- cxf/trunk/parent/pom.xml (original)
+++ cxf/trunk/parent/pom.xml Wed Dec 18 11:14:13 2013
@@ -158,7 +158,7 @@
         <cxf.aries.version>1.0.0</cxf.aries.version>
         <cxf.aries.version.range>[1.0,2)</cxf.aries.version.range>
         <cxf.osgi.version>4.2.0</cxf.osgi.version>
-        <cxf.karaf.version>2.2.9</cxf.karaf.version>
+        <cxf.karaf.version>2.3.3</cxf.karaf.version>
         <cxf.pax.logging.version>1.6.0</cxf.pax.logging.version>
         <cxf.felix.framework.version>2.0.5</cxf.felix.framework.version>
         <cxf.felix.configadmin.version>1.2.4</cxf.felix.configadmin.version>