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); }