You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2013/11/06 11:33:18 UTC
svn commit: r1539301 -
/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java
Author: bdelacretaz
Date: Wed Nov 6 10:33:18 2013
New Revision: 1539301
URL: http://svn.apache.org/r1539301
Log:
SLING-2788 - make readyness detection more robust
Modified:
sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java
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=1539301&r1=1539300&r2=1539301&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 Wed Nov 6 10:33:18 2013
@@ -24,6 +24,7 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+
import javax.servlet.http.HttpServletResponse;
import junit.framework.TestCase;
@@ -40,11 +41,15 @@ import org.apache.commons.httpclient.aut
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.sling.commons.testing.util.JavascriptEngine;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
/** Base class for HTTP-based Sling Launchpad integration tests */
public class HttpTestBase extends TestCase {
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
/** If this system property is set, the startup check is skipped. */
public static final String PROPERTY_SKIP_STARTUP_CHECK = "launchpad.skip.startupcheck";
@@ -204,17 +209,39 @@ public class HttpTestBase extends TestCa
final List<String> exceptionMessages = new LinkedList<String>();
final long maxMsecToWait = READY_TIMEOUT_SECONDS * 1000L;
final long startupTime = System.currentTimeMillis();
-
+ String lastException = "";
+ int nTimesOk = 0;
+
+ // Wait until slingServerReady returns true this many times,
+ // as in some cases more initializations might take place after
+ // this returns true
+ final int MIN_TIMES_OK = 4;
+
while(!slingStartupOk && (System.currentTimeMillis() < startupTime + maxMsecToWait) ) {
try {
- slingStartupOk = slingServerReady();
+ if(slingServerReady()) {
+ nTimesOk++;
+ if(nTimesOk >= MIN_TIMES_OK) {
+ slingStartupOk = true;
+ break;
+ }
+ } else {
+ nTimesOk = 0;
+ }
} catch(Exception e) {
- exceptionMessages.add(e.toString());
- Thread.sleep(500L);
+ nTimesOk = 0;
+ final String newX = e.toString();
+ if(!lastException.equals(newX)) {
+ exceptionMessages.add(newX);
+ }
+ lastException = newX;
}
+ Thread.sleep(500L);
}
- if(!slingStartupOk) {
+ if(slingStartupOk) {
+ log.info("Sling server found ready after {} msec", System.currentTimeMillis() - startupTime);
+ } else {
StringBuffer msg = new StringBuffer("Server does not seem to be ready, after ");
msg.append(maxMsecToWait).append(" msec, got the following ").append(exceptionMessages.size()).append(" Exceptions:");
for (String e: exceptionMessages) {