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/01 15:28:37 UTC

svn commit: r1537945 - in /sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest: VanityPathTest.java util/EventsCounterUtil.java

Author: bdelacretaz
Date: Fri Nov  1 14:28:37 2013
New Revision: 1537945

URL: http://svn.apache.org/r1537945
Log:
SLING-2788 - Use more robust event-based sync in VanityPathTest instead of fixed sleep time

Modified:
    sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/VanityPathTest.java
    sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/util/EventsCounterUtil.java

Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/VanityPathTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/VanityPathTest.java?rev=1537945&r1=1537944&r2=1537945&view=diff
==============================================================================
--- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/VanityPathTest.java (original)
+++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/VanityPathTest.java Fri Nov  1 14:28:37 2013
@@ -25,6 +25,7 @@ import java.util.Map;
 import org.apache.commons.httpclient.NameValuePair;
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.sling.commons.testing.integration.HttpTestBase;
+import org.apache.sling.launchpad.webapp.integrationtest.util.EventsCounterUtil;
 import org.apache.sling.servlets.post.SlingPostConstants;
 
 /**
@@ -35,7 +36,9 @@ public class VanityPathTest extends Http
     private String postUrl;
     private String vanityPath;
     private String vanityUrl;
-
+    private int mappingEventCount;
+    public static final String MAPPING_UPDATE_TOPIC = "org/apache/sling/api/resource/ResourceResolverMapping/CHANGED";
+    
     @Override
     protected void setUp() throws Exception {
         super.setUp();
@@ -47,10 +50,10 @@ public class VanityPathTest extends Http
             + SlingPostConstants.DEFAULT_CREATE_SUFFIX;
         vanityPath = "/" + getClass().getSimpleName() + "_" + System.currentTimeMillis() + "/vanity";
         vanityUrl = HTTP_BASE_URL + vanityPath;
-
-
+        
+        mappingEventCount = EventsCounterUtil.getEventsCount(this, MAPPING_UPDATE_TOPIC);
     }
-
+    
     /** test vanity path with internal redirect */
     public void testInternalRedirect() throws IOException {
         // create a node with a vanity path
@@ -190,9 +193,6 @@ public class VanityPathTest extends Http
      * MapEntries to reinitialize.
      */
     private void waitForMapReload() {
-        try {
-            Thread.sleep(750L);
-        } catch (InterruptedException e) {
-        }
+        EventsCounterUtil.waitForEvent(this, MAPPING_UPDATE_TOPIC, 5000, mappingEventCount);
     }
 }

Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/util/EventsCounterUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/util/EventsCounterUtil.java?rev=1537945&r1=1537944&r2=1537945&view=diff
==============================================================================
--- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/util/EventsCounterUtil.java (original)
+++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/util/EventsCounterUtil.java Fri Nov  1 14:28:37 2013
@@ -24,6 +24,8 @@ import org.apache.sling.commons.json.JSO
 import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.commons.testing.integration.HttpTest;
 import org.apache.sling.commons.testing.integration.HttpTestBase;
+import org.apache.sling.testing.tools.retry.RetryLoop;
+import org.apache.sling.testing.tools.retry.RetryLoop.Condition;
 
 /** Give access to info provided by the test-services EventsCounterServlet */
 public class EventsCounterUtil {
@@ -31,4 +33,17 @@ public class EventsCounterUtil {
         final JSONObject json = new JSONObject(b.getContent(HttpTest.HTTP_BASE_URL + "/testing/EventsCounter.json", HttpTest.CONTENT_TYPE_JSON));
         return json.has(topic) ? json.getInt(topic) : 0;
     }
+    
+    public static void waitForEvent(final HttpTestBase b, final String topic, int timeoutMsec, final int previousCount) {
+        final Condition c = new Condition() {
+            public String getDescription() {
+                return "Wait for OSGi event on topic " + topic; 
+            }
+
+            public boolean isTrue() throws Exception {
+                return getEventsCount(b, topic) > previousCount;
+            }
+        };
+        new RetryLoop(c, timeoutMsec, 500);
+    }
 }
\ No newline at end of file