You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by da...@apache.org on 2010/01/29 15:04:41 UTC

svn commit: r904501 - in /cxf/dosgi/trunk/systests2: common/ common/src/main/java/org/apache/cxf/dosgi/systests2/common/ common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/ common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/...

Author: davidb
Date: Fri Jan 29 14:04:40 2010
New Revision: 904501

URL: http://svn.apache.org/viewvc?rev=904501&view=rev
Log:
A system test that uses Discovery. There is a single-bundle and multi-bundle version of it.
The test code is there but it's not enabled yet.

Added:
    cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/AbstractTestDiscoveryRoundtrip.java   (with props)
    cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/
    cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/Test2Service.java   (with props)
    cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/
    cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/ClientActivator.java   (with props)
    cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/Test2ServiceTracker.java   (with props)
    cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/
    cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/ServerActivator.java   (with props)
    cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/Test2ServiceImpl.java   (with props)
    cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestDiscoveryRountrip.java   (with props)
    cxf/dosgi/trunk/systests2/single-bundle/src/test/java/org/apache/cxf/dosgi/systests2/single/TestDiscoveryRountrip.java   (with props)
Modified:
    cxf/dosgi/trunk/systests2/common/pom.xml
    cxf/dosgi/trunk/systests2/multi-bundle/pom.xml
    cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/MultiBundleTools.java
    cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestExportService.java
    cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestImportService.java
    cxf/dosgi/trunk/systests2/single-bundle/pom.xml

Modified: cxf/dosgi/trunk/systests2/common/pom.xml
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/common/pom.xml?rev=904501&r1=904500&r2=904501&view=diff
==============================================================================
--- cxf/dosgi/trunk/systests2/common/pom.xml (original)
+++ cxf/dosgi/trunk/systests2/common/pom.xml Fri Jan 29 14:04:40 2010
@@ -82,10 +82,11 @@
                         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                         <Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
                         <!-- The TinyBundles are only used during the 'configure' stage and are therefore not
-                             needed at runtime. -->
+                             needed at runtime.
+                             Other imports marked as optional as not all tests have the same dependencies. -->
                         <Import-Package>
                             !org.ops4j.pax.swissbox.tinybundles.*,
-                            *
+                            *;resolution:=optional
                         </Import-Package>
                         <Export-Package>*</Export-Package>
                     </instructions>

Added: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/AbstractTestDiscoveryRoundtrip.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/AbstractTestDiscoveryRoundtrip.java?rev=904501&view=auto
==============================================================================
--- cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/AbstractTestDiscoveryRoundtrip.java (added)
+++ cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/AbstractTestDiscoveryRoundtrip.java Fri Jan 29 14:04:40 2010
@@ -0,0 +1,133 @@
+/** 
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, 
+ * software distributed under the License is distributed on an 
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations 
+ * under the License. 
+ */
+package org.apache.cxf.dosgi.systests2.common;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.ServerSocket;
+import java.util.Hashtable;
+
+import javax.swing.JOptionPane;
+
+import org.apache.cxf.dosgi.systests2.common.test2.Test2Service;
+import org.apache.cxf.dosgi.systests2.common.test2.client.ClientActivator;
+import org.apache.cxf.dosgi.systests2.common.test2.client.Test2ServiceTracker;
+import org.apache.cxf.dosgi.systests2.common.test2.server.ServerActivator;
+import org.apache.cxf.dosgi.systests2.common.test2.server.Test2ServiceImpl;
+import org.junit.Assert;
+import org.ops4j.pax.swissbox.tinybundles.core.TinyBundles;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.util.tracker.ServiceTracker;
+
+public abstract class AbstractTestDiscoveryRoundtrip {
+    protected abstract BundleContext getBundleContext(); 
+
+    protected static InputStream getClientBundle() {
+        return TinyBundles.newBundle()
+            .add(ClientActivator.class)
+            .add(Test2Service.class)
+            .add(Test2ServiceTracker.class)
+            .set(Constants.BUNDLE_SYMBOLICNAME, "test2ClientBundle")
+            .set(Constants.BUNDLE_ACTIVATOR, ClientActivator.class.getName())
+            .build(TinyBundles.withBnd());
+    }
+
+    protected static InputStream getServerBundle() {
+        return TinyBundles.newBundle()
+            .add(ServerActivator.class)
+            .add(Test2Service.class)
+            .add(Test2ServiceImpl.class)
+            .set(Constants.BUNDLE_SYMBOLICNAME, "test2ServerBundle")
+            .set(Constants.BUNDLE_ACTIVATOR, ServerActivator.class.getName())
+            .build(TinyBundles.withBnd());
+    }
+
+    public void baseTestDiscoveryRoundtrip() throws Exception {
+        for( Bundle b : getBundleContext().getBundles() )
+        {
+            System.out.println( "*** Bundle " + b.getBundleId() + " : " + b.getSymbolicName() );
+        }
+        
+        // Find a free port to run the Zookeeper Server on
+        final int zkPort = new ServerSocket(0).getLocalPort();
+        System.out.println("*** Port for Zookeeper Server: " + zkPort);
+
+        ServiceTracker st = null;
+        try {
+            st = new ServiceTracker(getBundleContext(), ConfigurationAdmin.class.getName(), null) {
+                @Override
+                public Object addingService(ServiceReference reference) {
+                    Object svc = super.addingService(reference);
+                    if (svc instanceof ConfigurationAdmin) {
+                        try {
+                            ConfigurationAdmin cadmin = (ConfigurationAdmin) svc;
+                            org.osgi.service.cm.Configuration zkServerCfg = 
+                                cadmin.getConfiguration("org.apache.cxf.dosgi.discovery.zookeeper.server", null);
+                            Hashtable<String, Object> svrProps = new Hashtable<String, Object>();
+                            svrProps.put("clientPort", zkPort);
+                            zkServerCfg.update(svrProps);                            
+                            
+                            org.osgi.service.cm.Configuration zkClientCfg = 
+                                cadmin.getConfiguration("org.apache.cxf.dosgi.discovery.zookeeper", null);
+                            Hashtable<String, Object> cliProps = new Hashtable<String, Object>();
+                            cliProps.put("zookeeper.host", "127.0.0.1");
+                            cliProps.put("zookeeper.port", "" + zkPort);
+                            zkClientCfg.update(cliProps);
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                    return svc;
+                }            
+            };
+            st.open();
+                                
+            ServiceReference ref = waitService(String.class.getName(), "(testResult=test2)");
+            String trace = (String) ref.getProperty("result");
+            Assert.assertFalse("Stack trace must not contain client packages. " +
+                "Invocation should go through the protocol stack. " +
+                "It should not be directly invoked. " + trace,
+                trace.contains("org.apache.cxf.dosgi.systests2.single.test2.client"));
+            
+            // If gone through the protocol stack the following packages should be 
+            // in there:
+            Assert.assertTrue(trace.contains("org.apache.cxf.transport"));
+            Assert.assertTrue(trace.contains("org.apache.cxf.interceptor"));
+        } finally {
+            st.close();
+        }        
+    }
+    
+    private ServiceReference waitService(String cls, String filter) throws Exception {        
+        ServiceReference[] refs = null;
+        for (int i=0; i < 20; i++) {
+            refs = getBundleContext().getServiceReferences(cls, filter);
+            if (refs != null && refs.length > 0) {
+                return refs[0];
+            }
+            System.out.println("Waiting for service: " + cls + filter);
+            Thread.sleep(1000);
+        }
+        throw new Exception("Service not found: " + cls + filter);
+    }    
+}

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/AbstractTestDiscoveryRoundtrip.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/AbstractTestDiscoveryRoundtrip.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/Test2Service.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/Test2Service.java?rev=904501&view=auto
==============================================================================
--- cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/Test2Service.java (added)
+++ cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/Test2Service.java Fri Jan 29 14:04:40 2010
@@ -0,0 +1,23 @@
+/** 
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, 
+ * software distributed under the License is distributed on an 
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations 
+ * under the License. 
+ */
+package org.apache.cxf.dosgi.systests2.common.test2;
+
+public interface Test2Service {
+    public String getRemoteStackTrace();    
+}

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/Test2Service.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/Test2Service.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/ClientActivator.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/ClientActivator.java?rev=904501&view=auto
==============================================================================
--- cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/ClientActivator.java (added)
+++ cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/ClientActivator.java Fri Jan 29 14:04:40 2010
@@ -0,0 +1,36 @@
+/** 
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, 
+ * software distributed under the License is distributed on an 
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations 
+ * under the License. 
+ */
+package org.apache.cxf.dosgi.systests2.common.test2.client;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class ClientActivator implements BundleActivator {
+    private ServiceTracker tracker;
+
+    public void start(final BundleContext bc) throws Exception {
+        tracker = new Test2ServiceTracker(bc);
+        tracker.open();
+    }
+
+    public void stop(BundleContext bc) throws Exception {
+        tracker.close();
+    }
+}

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/ClientActivator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/ClientActivator.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/Test2ServiceTracker.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/Test2ServiceTracker.java?rev=904501&view=auto
==============================================================================
--- cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/Test2ServiceTracker.java (added)
+++ cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/Test2ServiceTracker.java Fri Jan 29 14:04:40 2010
@@ -0,0 +1,71 @@
+/** 
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, 
+ * software distributed under the License is distributed on an 
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations 
+ * under the License. 
+ */
+package org.apache.cxf.dosgi.systests2.common.test2.client;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.apache.cxf.dosgi.systests2.common.test2.Test2Service;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class Test2ServiceTracker extends ServiceTracker {
+    public Test2ServiceTracker(BundleContext context) {
+        super(context, getFilter(context), null);
+    }
+
+    private static Filter getFilter(BundleContext context) {
+        Filter f = null;
+        try {
+            // It's very important that the service.imported condition is there too
+            // otherwise the tracker will make a local 'direct' invocation on the service.
+            // The service.imported forces a proxy lookup.
+            f = context.createFilter("(&(objectClass=" + Test2Service.class.getName() + ")(service.imported=*))");
+        } catch (InvalidSyntaxException e) {
+            e.printStackTrace();
+        }
+        return f;
+    }
+
+    @Override
+    public Object addingService(ServiceReference reference) {
+        Object svc = super.addingService(reference);        
+        if (svc instanceof Test2Service) {
+            System.out.println("*** Ref: " + reference);
+            for(String key : reference.getPropertyKeys()) {
+                System.out.println("  " + key + "-" + reference.getProperty(key));
+            }
+            
+            invokeRemoteTestService(context, (Test2Service) svc);
+        }
+        return svc;
+    }
+
+    private void invokeRemoteTestService(BundleContext bc, Test2Service svc) {
+        String res = svc.getRemoteStackTrace();
+        
+        Dictionary<String, Object> props = new Hashtable<String, Object>();
+        props.put("result", res);
+        props.put("testResult", "test2");
+        bc.registerService(String.class.getName(), "test2", props);
+    }
+}

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/Test2ServiceTracker.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/client/Test2ServiceTracker.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/ServerActivator.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/ServerActivator.java?rev=904501&view=auto
==============================================================================
--- cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/ServerActivator.java (added)
+++ cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/ServerActivator.java Fri Jan 29 14:04:40 2010
@@ -0,0 +1,51 @@
+/** 
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, 
+ * software distributed under the License is distributed on an 
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations 
+ * under the License. 
+ */
+package org.apache.cxf.dosgi.systests2.common.test2.server;
+
+import java.net.ServerSocket;
+import java.util.Hashtable;
+
+import org.apache.cxf.dosgi.systests2.common.test2.Test2Service;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+public class ServerActivator implements BundleActivator {    
+    private ServiceRegistration reg;
+
+    public void start(BundleContext bc) throws Exception {
+        Test2Service svc = new Test2ServiceImpl();
+                
+        // Dynamically assign a free port
+        int freePort = new ServerSocket(0).getLocalPort();
+        String url = "http://localhost:" + freePort + "/test2";
+        System.out.println("*** Server using URL: " + url);
+        
+        Hashtable<String, Object> props = new Hashtable<String, Object>();
+        props.put("service.exported.interfaces", "*");
+        props.put("service.exported.configs", "org.apache.cxf.ws");
+        props.put("endpoint.id", url);
+        
+        reg = bc.registerService(Test2Service.class.getName(), svc, props);
+    }
+
+    public void stop(BundleContext bc) throws Exception {
+        reg.unregister();
+    }
+}

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/ServerActivator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/ServerActivator.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/Test2ServiceImpl.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/Test2ServiceImpl.java?rev=904501&view=auto
==============================================================================
--- cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/Test2ServiceImpl.java (added)
+++ cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/Test2ServiceImpl.java Fri Jan 29 14:04:40 2010
@@ -0,0 +1,35 @@
+/** 
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, 
+ * software distributed under the License is distributed on an 
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations 
+ * under the License. 
+ */
+package org.apache.cxf.dosgi.systests2.common.test2.server;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.apache.cxf.dosgi.systests2.common.test2.Test2Service;
+
+public class Test2ServiceImpl implements Test2Service {
+    public String getRemoteStackTrace() {
+        Throwable th = new Throwable("Throwable created on the server");
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        th.printStackTrace(pw);
+        
+        return sw.toString();
+    }
+}

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/Test2ServiceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/systests2/common/src/main/java/org/apache/cxf/dosgi/systests2/common/test2/server/Test2ServiceImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: cxf/dosgi/trunk/systests2/multi-bundle/pom.xml
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/multi-bundle/pom.xml?rev=904501&r1=904500&r2=904501&view=diff
==============================================================================
--- cxf/dosgi/trunk/systests2/multi-bundle/pom.xml (original)
+++ cxf/dosgi/trunk/systests2/multi-bundle/pom.xml Fri Jan 29 14:04:40 2010
@@ -66,6 +66,23 @@
             <version>${cxf.version}</version>
             <scope>provided</scope>
         </dependency>
+        <dependency> 
+            <groupId>org.apache.log4j</groupId> 
+            <artifactId>com.springsource.org.apache.log4j</artifactId> 
+            <version>${log4j.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf.dosgi</groupId>
+            <artifactId>cxf-dosgi-ri-discovery-distributed-zookeeper-wrapper</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf.dosgi</groupId>
+            <artifactId>cxf-dosgi-ri-discovery-distributed-zookeeper-server</artifactId>
+            <version>${pom.version}</version>
+            <scope>test</scope>           
+        </dependency>
         <dependency>
             <groupId>org.apache.cxf.dosgi.samples</groupId>
             <artifactId>cxf-dosgi-ri-samples-greeter-impl</artifactId>

Modified: cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/MultiBundleTools.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/MultiBundleTools.java?rev=904501&r1=904500&r2=904501&view=diff
==============================================================================
--- cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/MultiBundleTools.java (original)
+++ cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/MultiBundleTools.java Fri Jan 29 14:04:40 2010
@@ -35,18 +35,22 @@
 public class MultiBundleTools {
     private MultiBundleTools() {}
     
-    static int getDistroBundles(Map<Integer, String> bundles) throws Exception {
+    static int getDistroBundles(Map<Integer, String> bundles, boolean discovery) throws Exception {
         File root = getRootDirectory();        
         File mdRoot = new File(root, "distribution/multi-bundle");
         String pomVersion = getPomVersion(mdRoot);
         
-        return getDistroBundles(mdRoot, pomVersion, bundles);        
+        return getDistroBundles(mdRoot, pomVersion, bundles, discovery);
     }
     
-    private static int getDistroBundles(File mdRoot, String pomVersion, Map<Integer, String> bundles) throws Exception {
+    private static int getDistroBundles(File mdRoot, String pomVersion, Map<Integer, String> bundles, boolean discovery) throws Exception {
         File distroDir = new File(mdRoot, "target/cxf-dosgi-ri-multibundle-distribution-" + pomVersion + ".dir");
         Properties p = new Properties();
-        p.load(new FileInputStream(new File(distroDir, "apache-cxf-dosgi-ri-" + pomVersion + "/conf/felix.config.properties.append")));
+        File confDir = new File(distroDir, "apache-cxf-dosgi-ri-" + pomVersion + "/conf");
+        p.load(new FileInputStream(new File(confDir, "felix.config.properties.append")));
+        if (discovery) {
+            p.load(new FileInputStream(new File(confDir, "felix.discovery.config.properties.append")));
+        }
         
         int startLevel = Integer.parseInt(p.getProperty("org.osgi.framework.startlevel.beginning"));
         for (int i = 0; i <= startLevel; i++) {

Added: cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestDiscoveryRountrip.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestDiscoveryRountrip.java?rev=904501&view=auto
==============================================================================
--- cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestDiscoveryRountrip.java (added)
+++ cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestDiscoveryRountrip.java Fri Jan 29 14:04:40 2010
@@ -0,0 +1,75 @@
+/** 
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, 
+ * software distributed under the License is distributed on an 
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations 
+ * under the License. 
+ */
+package org.apache.cxf.dosgi.systests2.multi;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.cxf.dosgi.systests2.common.AbstractTestDiscoveryRoundtrip;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.CoreOptions;
+import org.ops4j.pax.exam.Inject;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.osgi.framework.BundleContext;
+
+@RunWith( JUnit4TestRunner.class )
+public class TestDiscoveryRountrip extends AbstractTestDiscoveryRoundtrip {
+    @Inject
+    BundleContext bundleContext = null;
+
+    @Configuration
+    public static Option[] configure() throws Exception {
+        Map<Integer, String> bundles = new TreeMap<Integer, String>();
+        int startLevel = MultiBundleTools.getDistroBundles(bundles, true);
+        
+        List<Option> opts = new ArrayList<Option>();
+        
+        opts.add(CoreOptions.systemProperty("org.osgi.framework.startlevel.beginning").value("" + startLevel));
+        opts.add(CoreOptions.mavenBundle().groupId("org.osgi").artifactId("org.osgi.compendium").versionAsInProject());
+        for(Map.Entry<Integer, String> entry : bundles.entrySet()) {
+            opts.add(CoreOptions.bundle(entry.getValue()).startLevel(entry.getKey()));
+        }
+      
+        opts.add(CoreOptions.mavenBundle().groupId("org.apache.log4j").artifactId("com.springsource.org.apache.log4j").versionAsInProject());
+        opts.add(CoreOptions.mavenBundle().groupId("org.apache.cxf.dosgi").artifactId("cxf-dosgi-ri-discovery-distributed-zookeeper-server").versionAsInProject());
+
+        // This bundle contains the common system testing code
+        opts.add(CoreOptions.mavenBundle().groupId("org.apache.cxf.dosgi.systests").artifactId("cxf-dosgi-ri-systests2-common").versionAsInProject());
+
+        opts.add(CoreOptions.provision(getClientBundle()));
+        opts.add(CoreOptions.provision(getServerBundle()));
+        
+        return CoreOptions.options(opts.toArray(new Option[opts.size()]));                
+    }
+    
+    protected BundleContext getBundleContext() {
+        return bundleContext;
+    }
+
+    @Test
+    public void testDiscoveryRoundtrip() throws Exception {
+        // enabled soon
+        // baseTestDiscoveryRoundtrip();
+    }
+}

Propchange: cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestDiscoveryRountrip.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestDiscoveryRountrip.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestExportService.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestExportService.java?rev=904501&r1=904500&r2=904501&view=diff
==============================================================================
--- cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestExportService.java (original)
+++ cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestExportService.java Fri Jan 29 14:04:40 2010
@@ -41,7 +41,7 @@
     @Configuration
     public static Option[] configure() throws Exception {
         Map<Integer, String> bundles = new TreeMap<Integer, String>();
-        int startLevel = MultiBundleTools.getDistroBundles(bundles);
+        int startLevel = MultiBundleTools.getDistroBundles(bundles, false);
         
         List<Option> opts = new ArrayList<Option>();
         opts.add(CoreOptions.systemProperty("org.osgi.framework.startlevel.beginning").value("" + startLevel));

Modified: cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestImportService.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestImportService.java?rev=904501&r1=904500&r2=904501&view=diff
==============================================================================
--- cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestImportService.java (original)
+++ cxf/dosgi/trunk/systests2/multi-bundle/src/test/java/org/apache/cxf/dosgi/systests2/multi/TestImportService.java Fri Jan 29 14:04:40 2010
@@ -41,7 +41,7 @@
     @Configuration
     public static Option[] configure() throws Exception {
         Map<Integer, String> bundles = new TreeMap<Integer, String>();
-        int startLevel = MultiBundleTools.getDistroBundles(bundles);
+        int startLevel = MultiBundleTools.getDistroBundles(bundles, false);
         
         List<Option> opts = new ArrayList<Option>();
         opts.add(CoreOptions.systemProperty("org.osgi.framework.startlevel.beginning").value("" + startLevel));

Modified: cxf/dosgi/trunk/systests2/single-bundle/pom.xml
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/single-bundle/pom.xml?rev=904501&r1=904500&r2=904501&view=diff
==============================================================================
--- cxf/dosgi/trunk/systests2/single-bundle/pom.xml (original)
+++ cxf/dosgi/trunk/systests2/single-bundle/pom.xml Fri Jan 29 14:04:40 2010
@@ -72,6 +72,23 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency> 
+            <groupId>org.apache.log4j</groupId> 
+            <artifactId>com.springsource.org.apache.log4j</artifactId> 
+            <version>${log4j.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf.dosgi</groupId>
+            <artifactId>cxf-dosgi-ri-discovery-distributed-zookeeper-wrapper</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf.dosgi</groupId>
+            <artifactId>cxf-dosgi-ri-discovery-distributed-zookeeper-server</artifactId>
+            <version>${pom.version}</version>
+            <scope>test</scope>           
+        </dependency>
         <dependency>
             <groupId>org.apache.cxf.dosgi.samples</groupId>
             <artifactId>cxf-dosgi-ri-samples-greeter-impl</artifactId>

Added: cxf/dosgi/trunk/systests2/single-bundle/src/test/java/org/apache/cxf/dosgi/systests2/single/TestDiscoveryRountrip.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/systests2/single-bundle/src/test/java/org/apache/cxf/dosgi/systests2/single/TestDiscoveryRountrip.java?rev=904501&view=auto
==============================================================================
--- cxf/dosgi/trunk/systests2/single-bundle/src/test/java/org/apache/cxf/dosgi/systests2/single/TestDiscoveryRountrip.java (added)
+++ cxf/dosgi/trunk/systests2/single-bundle/src/test/java/org/apache/cxf/dosgi/systests2/single/TestDiscoveryRountrip.java Fri Jan 29 14:04:40 2010
@@ -0,0 +1,68 @@
+/** 
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, 
+ * software distributed under the License is distributed on an 
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations 
+ * under the License. 
+ */
+package org.apache.cxf.dosgi.systests2.single;
+
+import org.apache.cxf.dosgi.systests2.common.AbstractTestDiscoveryRoundtrip;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.CoreOptions;
+import org.ops4j.pax.exam.Inject;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.osgi.framework.BundleContext;
+
+@RunWith( JUnit4TestRunner.class )
+public class TestDiscoveryRountrip extends AbstractTestDiscoveryRoundtrip {
+    @Inject
+    BundleContext bundleContext = null;
+
+    @Configuration
+    public static Option[] configure() {
+        return CoreOptions.options(
+//                // this just adds all what you write here to java vm argumenents of the (new) osgi process.
+//                vmOption( "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006" ),
+//                // this is necessary to let junit runner not timout the remote process before attaching debugger
+//                // setting timeout to 0 means wait as long as the remote service comes available.
+//                waitForFrameworkStartup(),
+                
+                CoreOptions.mavenBundle().groupId("org.osgi").artifactId("org.osgi.compendium").versionAsInProject(),
+                CoreOptions.mavenBundle().groupId("org.apache.cxf.dosgi").artifactId("cxf-dosgi-ri-singlebundle-distribution").versionAsInProject(),
+                
+                CoreOptions.mavenBundle().groupId("org.apache.log4j").artifactId("com.springsource.org.apache.log4j").versionAsInProject(),
+                CoreOptions.mavenBundle().groupId("org.apache.cxf.dosgi").artifactId("cxf-dosgi-ri-discovery-distributed-zookeeper-server").versionAsInProject(),
+                
+                // This bundle contains the common system testing code
+                CoreOptions.mavenBundle().groupId("org.apache.cxf.dosgi.systests").artifactId("cxf-dosgi-ri-systests2-common").versionAsInProject(),
+
+                CoreOptions.provision(getClientBundle()),
+                CoreOptions.provision(getServerBundle())
+        );
+    }
+    
+    protected BundleContext getBundleContext() {
+        return bundleContext;
+    }
+
+    @Test
+    public void testDiscoveryRoundtrip() throws Exception {
+        // enabled soon
+        // baseTestDiscoveryRoundtrip();
+    }
+}

Propchange: cxf/dosgi/trunk/systests2/single-bundle/src/test/java/org/apache/cxf/dosgi/systests2/single/TestDiscoveryRountrip.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/dosgi/trunk/systests2/single-bundle/src/test/java/org/apache/cxf/dosgi/systests2/single/TestDiscoveryRountrip.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date