diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdWebConsoleFeatureTest.java b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdWebConsoleFeatureTest.java index 58e870f65b..044d8b38e3 100644 --- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdWebConsoleFeatureTest.java +++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdWebConsoleFeatureTest.java @@ -22,6 +22,7 @@ import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthScope; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.params.HttpConnectionManagerParams; import org.junit.runner.RunWith; import org.ops4j.pax.exam.CoreOptions; import org.ops4j.pax.exam.Option; @@ -46,28 +47,45 @@ public class ActiveMQBrokerNdWebConsoleFeatureTest extends ActiveMQBrokerFeature @Override protected void produceMessage(String nameAndPayload) throws Exception { HttpClient client = new HttpClient(); + client.getHttpConnectionManager().getParams().setConnectionTimeout(30000); System.err.println(executeCommand("activemq:bstat").trim()); + System.err.println("attempting to access web console.."); + + GetMethod get = new GetMethod(WEB_CONSOLE_URL + "index.jsp"); + + // Give console some time to start + boolean done = false; + int loop = 0; + while (!done && loop < 30) { + loop++; + try { + int code = client.executeMethod(get); + if (code > 399 && code < 500) { + // code 4xx we should retry + System.err.println("web console not accessible yet - status code " + code); + TimeUnit.SECONDS.sleep(1); + } else { + done = true; + } + } catch (Exception ignored) {} + } + assertEquals("get succeeded on " + get, 200, get.getStatusCode()); + System.err.println("attempting publish via web console.."); + // need to first get the secret + get = new GetMethod(WEB_CONSOLE_URL + "send.jsp"); + get.setDoAuthentication(true); + // set credentials client.getState().setCredentials( new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials(USER, PASSWORD) ); - // need to first get the secret - GetMethod get = new GetMethod(WEB_CONSOLE_URL + "send.jsp"); - get.setDoAuthentication(true); - - // Give console some time to start - for (int i=0; i<20; i++) { - TimeUnit.SECONDS.sleep(1); - try { - i = client.executeMethod(get); - } catch (java.net.ConnectException ignored) {} - } - assertEquals("get succeeded on " + get, 200, get.getStatusCode()); + int code = client.executeMethod(get); + assertEquals("get succeeded on " + get, 200, code); String response = get.getResponseBodyAsString(); final String secretMarker = "