Author: cschneider
Date: Tue Sep 25 16:40:44 2012
New Revision: 1389978

URL: http://svn.apache.org/viewvc?rev=1389978&view=rev
Log:
KARAF-1861 Waiting for service to be deployed before  trying to access the url

Modified:
    karaf/trunk/tooling/exam/regression/pom.xml
    
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/KarafWithBundleTest.java
    
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/EchoServlet.java
    
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/ServletActivator.java

Modified: karaf/trunk/tooling/exam/regression/pom.xml
URL: 
http://svn.apache.org/viewvc/karaf/trunk/tooling/exam/regression/pom.xml?rev=1389978&r1=1389977&r2=1389978&view=diff
==============================================================================
--- karaf/trunk/tooling/exam/regression/pom.xml (original)
+++ karaf/trunk/tooling/exam/regression/pom.xml Tue Sep 25 16:40:44 2012
@@ -109,6 +109,11 @@
             <version>${servlet.spec.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.web</groupId>
+            <artifactId>pax-web-spi</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

Modified: 
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/KarafWithBundleTest.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/KarafWithBundleTest.java?rev=1389978&r1=1389977&r2=1389978&view=diff
==============================================================================
--- 
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/KarafWithBundleTest.java
 (original)
+++ 
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/KarafWithBundleTest.java
 Tue Sep 25 16:40:44 2012
@@ -31,10 +31,15 @@ import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.net.URL;
 import java.net.URLConnection;
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import javax.inject.Inject;
 
 import org.apache.karaf.tooling.exam.options.KarafDistributionOption;
 import org.apache.karaf.tooling.exam.regression.supports.EchoServlet;
 import org.apache.karaf.tooling.exam.regression.supports.ServletActivator;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Option;
@@ -42,15 +47,47 @@ import org.ops4j.pax.exam.junit.Configur
 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.web.service.spi.ServletEvent;
+import org.ops4j.pax.web.service.spi.ServletListener;
+import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 
 @RunWith(JUnit4TestRunner.class)
 @ExamReactorStrategy(AllConfinedStagedReactorFactory.class)
 public class KarafWithBundleTest {
+    @Inject
+    protected BundleContext bundleContext;
+
+    private ServletListener webListener;
+
+    @Before
+    public void registerListener() {
+        final Object me = this;
+        webListener = new ServletListener() {
+
+            @Override
+            public void servletEvent(ServletEvent event) {
+                System.out.println(event);
+                if (event.getType() == ServletEvent.DEPLOYED && 
EchoServlet.ALIAS.equals(event.getAlias())) {
+                    synchronized (me) {
+                        me.notify();
+                    }
+                }
+            }
+        };
+        Dictionary<String, ?> properties = new Hashtable<String, String>();
+        bundleContext.registerService(ServletListener.class, webListener, 
properties);
+    }
+
+    private void waitForServlet() throws InterruptedException {
+        synchronized (this) {
+            wait(1000);
+        }
+    }
+
     @Test
     public void testService() throws Exception {
-        // Give Servicetracker some time to install the servlet
-        Thread.sleep(1000);
+        waitForServlet();
         System.out.println("Trying to get url");
         URL url = new URL("http://localhost:9080/test/services";);
         URLConnection conn = url.openConnection();

Modified: 
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/EchoServlet.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/EchoServlet.java?rev=1389978&r1=1389977&r2=1389978&view=diff
==============================================================================
--- 
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/EchoServlet.java
 (original)
+++ 
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/EchoServlet.java
 Tue Sep 25 16:40:44 2012
@@ -29,6 +29,7 @@ import javax.servlet.http.HttpServletRes
 public class EchoServlet extends HttpServlet {
 
     private static final long serialVersionUID = 1068664967007496710L;
+    public static final String ALIAS = "/test/services";
 
     // now we just send a echo response back
     @Override

Modified: 
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/ServletActivator.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/ServletActivator.java?rev=1389978&r1=1389977&r2=1389978&view=diff
==============================================================================
--- 
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/ServletActivator.java
 (original)
+++ 
karaf/trunk/tooling/exam/regression/src/test/java/org/apache/karaf/tooling/exam/regression/supports/ServletActivator.java
 Tue Sep 25 16:40:44 2012
@@ -46,9 +46,7 @@ public class ServletActivator implements
     }
 
     class HttpServiceTracker extends ServiceTracker<HttpService, HttpService> {
-
-        private static final String ALIAS = "/test/services";
-
+        
         public HttpServiceTracker(BundleContext context) {
             super(context, HttpService.class, null);
         }
@@ -60,7 +58,7 @@ public class ServletActivator implements
             final Dictionary<String, String> initParams = new 
Hashtable<String, String>();
             initParams.put("servlet-name", "TestServlet");
             try {
-                httpService.registerServlet(ALIAS, new EchoServlet(), 
initParams, httpContext);
+                httpService.registerServlet(EchoServlet.ALIAS, new 
EchoServlet(), initParams, httpContext);
                 LOG.info("Servlet registered successfully");
             } catch (Exception e) {
                 LOG.error(e.getMessage(), e);
@@ -71,7 +69,7 @@ public class ServletActivator implements
         @Override
         public void removedService(ServiceReference<HttpService> reference, 
HttpService service) {
             HttpService httpService = context.getService(reference);
-            httpService.unregister(ALIAS);
+            httpService.unregister(EchoServlet.ALIAS);
             super.removedService(reference, service);
         }
 


Reply via email to