SLING-4061 - fail all following tests upon even timeout, to fail the overall test faster

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1632084 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java b/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java
index 488801b..312b06b 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java
@@ -47,6 +47,7 @@
 import org.apache.sling.launchpad.testservices.exported.FakeSlingHttpServletRequest;
 import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -69,6 +70,7 @@
     private String [] vanity;
     private static List<String> toDelete = new ArrayList<String>();
     private static ResourceResolverFactory cleanupResolverFactory;
+    private static String eventTimeoutTopic;
     
     @TestReference
     private EventsCounter eventsCounter;
@@ -88,6 +90,11 @@
      *  that signals that mappings have been updated.
      */
     private void saveMappings(Session session) throws Exception {
+        if(eventTimeoutTopic != null) {
+            // Avoid wasting a lot of time if events are not detected in timely fashion
+            fail("Event timeout (" + eventTimeoutTopic + ") detected in previous tests, failing saveMappings()");
+        }
+        
         final int oldEventsCount = eventsCounter.getEventsCount(MAPPING_EVENT_TOPIC);
         session.save();
         final long timeout = System.currentTimeMillis() + updateTimeout;
@@ -103,6 +110,7 @@
             } catch(InterruptedException ignore) {
             }
         }
+        eventTimeoutTopic = MAPPING_EVENT_TOPIC;
         fail("Timeout waiting for " + MAPPING_EVENT_TOPIC + " event, after " + updateTimeout + " msec");
     }
     
@@ -161,6 +169,12 @@
     }
 
     @AfterClass
+    @BeforeClass
+    public static void clearTimeouts() {
+        eventTimeoutTopic = null;
+    }
+    
+    @AfterClass
     public static void deleteTestNodes() throws Exception {
         final ResourceResolver resolver = cleanupResolverFactory.getAdministrativeResourceResolver(null);
         final Session session = resolver.adaptTo(Session.class);