Hi yes, if you extend KarafTestSupport, it automatically pick a free port.
So, you have to use getHttpPort() to get the actual port used. Regards JB On 16/11/2019 12:01, Massimo Bono wrote: > just tried with web:list and http:list: the output seems fine but when i > try to actually connect, I'm still experiencing Connection Refused. > > http:list > > ID │ Servlet │ Servlet-Name │ State │ Alias > │ Url > > ────┼───────────────────┼──────────────┼─────────────┼─────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── > 140 │ ResourceServlet │ default │ Deployed │ > /hello-example/ │ [/hello-example/] > 140 │ JspServletWrapper │ jsp │ Deployed │ > │ [/hello-example/*.jsp, /hello-example/*.jspx, > /hello-example/*.jspf, /hello-example/*.xsp, /hello-example/*.JSP, > /hello-example/*.JSPX, /hello-example/*.JSPF, /hello-example/*.XSP] > > > web:list > > ID │ State │ Web-State │ Level │ Web-ContextPath │ Name > > ────┼─────────────┼─────────────┼───────┼─────────────────┼──────────────── > 140 │ Active │ Deployed │ 81 │ /hello-example │ task-ui > (0.0.1) > > > I followed the example shown in > https://github.com/apache/karaf/blob/master/itests/test/src/test/java/org/apache/karaf/itests/WebTest.java: > to test, you call the command "feature:install war" and "web:install" > directly with executeCommand. Then I realized that the port open was not > 8181 (as I was lead to believe from the WAR Deployer manual) but 9080 > (Set from KarafTestSupport HTTP_PORT!). By using this.getHttpPort() > method I was able to make it work! > > Some code: > > this.installAndAssertFeature("war"); > stdout = this.executeCommand("web:install > mvn:com.fibonacci.microsi/task-ui/0.0.1/jar hello-example"); > System.out.println(stdout); > > stdout = this.executeCommand("web:list", 5000L, false); > System.out.println(stdout); > > this.installAndAssertFeature("war"); > this.assertBundleInstalled("task-ui"); > URL url = new URL("http://localhost:" + this.getHttpPort() + > "/hello-example"); > HttpURLConnection connection = (HttpURLConnection) url.openConnection(); > connection.setDoInput(true); > connection.setRequestMethod("GET"); > StringBuilder buffer = new StringBuilder(); > try (BufferedReader reader = new BufferedReader(new > InputStreamReader(connection.getInputStream()))) { > String line = null; > while ((line = reader.readLine()) != null) { > buffer.append(line).append("\n"); > } > } > System.out.println(buffer.toString()); > > Thanks for pointing to the right direction! > > > Il giorno sab 16 nov 2019 alle ore 11:08 <[email protected] > <mailto:[email protected]>> ha scritto: > > Hi > > In the test, you can check with web:list and http:list if the status > is deployed (and not deploying). > Maybe you test the connection before the endpoint is actually started. > You can see how we do it in the karaf examples itests. > > Regards > JB > > Le 16 nov. 2019 11:01, Massimo Bono <[email protected] > <mailto:[email protected]>> a écrit : > > Hi, > > I've generated a wab file containing a simple "hello world" > index.html. Inside this wab there is the standard manifest with > the WebContext-Path manifest entry. > > When I manually start a karaf container, everything goes > smoothly: I install the war feature (by using "feature:install > war") and then I can successfully view the Webapp on a browser > (http:/127.0.0.1:8181/hello-example > <http://127.0.0.1:8181/hello-example>). > > However, things go south when I try to test automatically the > webapp. > I've created a simple test (by extension KaratTestSupport) where > I install the "war" feature using > KarafDistributionOption.features and then start the webapp > bundle (via CoreOptions.mavenBundle()). I'm using > httpcomponents.httpclient (with a OSGi compliant manifest > header) to request the HTTP GET connection; however, albeit > http:list show the endpoint, I always obtain a > "ConnectionRefused" (in the browser I cannot see anything as well). > > Surely I'm doing something wrong. Is this the correct way to > test a webapp? > > Thanks for any kind reply! > > -- > *Ing. Massimo Bono* > > > > > -- > *Ing. Massimo Bono* -- Jean-Baptiste Onofré [email protected] http://blog.nanthrax.net Talend - http://www.talend.com
