Author: bdelacretaz
Date: Fri Nov 15 10:53:26 2013
New Revision: 1542223
URL: http://svn.apache.org/r1542223
Log:
SLING-3235 - additional readyness checks to cope with async config install at
startup
Modified:
sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java
sling/trunk/launchpad/testing/pom.xml
Modified:
sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java?rev=1542223&r1=1542222&r2=1542223&view=diff
==============================================================================
---
sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java
(original)
+++
sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java
Fri Nov 15 10:53:26 2013
@@ -24,6 +24,7 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.regex.Pattern;
import javax.servlet.http.HttpServletResponse;
@@ -57,6 +58,9 @@ public class HttpTestBase extends TestCa
public static final String HTTP_BASE_URL = removePath(HTTP_URL);
public static final String WEBDAV_BASE_URL =
removeEndingSlash(System.getProperty("launchpad.webdav.server.url",
HTTP_BASE_URL));
public static final String SERVLET_CONTEXT =
removeEndingSlash(System.getProperty("launchpad.servlet.context",
getPath(HTTP_URL)));
+
+ public static final String READY_URL_PROP_PREFIX = "launchpad.ready.";
+ public static final int MAX_READY_URL_INDEX = 50;
/** base path for test files */
public static final String TEST_PATH = "/launchpad-integration-tests";
@@ -313,7 +317,31 @@ public class HttpTestBase extends TestCa
throw new IOException("Allow header (" + h.getValue() + " does
not contain PROPFIND, at URL=" + webDavUrl);
}
}
-
+
+ // And check optional additional URLs for readyness
+ // Defined by system properties like
+ // launchpad.ready.1 = GET:/tmp/someUrl:200:expectedRegexpInResponse
+ {
+ for(int i=0; i <= MAX_READY_URL_INDEX ; i++) {
+ final String propName = READY_URL_PROP_PREFIX + i;
+ final String readyDef = System.getProperty(propName, "");
+ final String [] parts = readyDef.split(":");
+ if(parts.length == 4) {
+ final String info = propName + "=" + readyDef;
+ final HttpAnyMethod m = new
HttpAnyMethod(parts[0],HTTP_BASE_URL + parts[1]);
+ final int expectedStatus = Integer.valueOf(parts[2]);
+ final int status = httpClient.executeMethod(m);
+ if(expectedStatus != status) {
+ throw new IOException("Status " + status + " does not
match expected value: " + info);
+ }
+ final String content = m.getResponseBodyAsString();
+ final Pattern p = Pattern.compile("(?s).*" + parts[3] +
".*");
+ if(!p.matcher(content).matches()) {
+ throw new IOException("Content does not match expected
regexp:" + info + ", content=" + content);
+ }
+ }
+ }
+ }
return true;
}
@@ -518,4 +546,4 @@ public class HttpTestBase extends TestCa
}
return content.toString();
}
-}
+}
\ No newline at end of file
Modified: sling/trunk/launchpad/testing/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/pom.xml?rev=1542223&r1=1542222&r2=1542223&view=diff
==============================================================================
--- sling/trunk/launchpad/testing/pom.xml (original)
+++ sling/trunk/launchpad/testing/pom.xml Fri Nov 15 10:53:26 2013
@@ -242,6 +242,10 @@
<launchpad.http.server.url>http://${test.host}:${http.port}/</launchpad.http.server.url>
<launchpad.webdav.server.url>http://${test.host}:${http.port}/${webdav.workspace.path}</launchpad.webdav.server.url>
<HttpTestBase.readyTimeoutSeconds>${HttpTestBase.readyTimeoutSeconds}</HttpTestBase.readyTimeoutSeconds>
+
+ <!-- Additional readyness checks, SLING-3235
-->
+
<launchpad.ready.1>GET:/system/console/status-Configurations/configuration-status-20131115-101714.txt:200:config.comment.*setup
the JSP engine for running tests</launchpad.ready.1>
+
<launchpad.ready.2>GET:/.EXPORTED_PACKAGES.txt?package=org.apache.sling.api:200:PACKAGE
FOUND.*org.apache.sling.api</launchpad.ready.2>
</systemPropertyVariables>
</configuration>
</plugin>