You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2015/04/20 14:51:57 UTC

svn commit: r1674834 - in /sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster: TopologyEventTest.java helpers/AssertingTopologyEventListener.java

Author: stefanegli
Date: Mon Apr 20 12:51:57 2015
New Revision: 1674834

URL: http://svn.apache.org/r1674834
Log:
SLING-4638 : tests added for isCurrent

Modified:
    sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/TopologyEventTest.java
    sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/helpers/AssertingTopologyEventListener.java

Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/TopologyEventTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/TopologyEventTest.java?rev=1674834&r1=1674833&r2=1674834&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/TopologyEventTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/TopologyEventTest.java Mon Apr 20 12:51:57 2015
@@ -19,11 +19,13 @@
 package org.apache.sling.discovery.impl.cluster;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 
 import java.util.UUID;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
+import org.apache.sling.discovery.TopologyEvent;
 import org.apache.sling.discovery.TopologyEvent.Type;
 import org.apache.sling.discovery.impl.cluster.helpers.AssertingTopologyEventListener;
 import org.apache.sling.discovery.impl.setup.Instance;
@@ -186,7 +188,18 @@ public class TopologyEventTest {
         instance1 = Instance.newStandaloneInstance("/var/discovery/impl/", 
                 "firstInstanceB", true, 20 /* heartbeat-timeout */, 5 /*min event delay*/,
                 UUID.randomUUID().toString(), false /*delayInitEventUntilVoted*/);
-        AssertingTopologyEventListener l1 = new AssertingTopologyEventListener("instance1.l1");
+        AssertingTopologyEventListener l1 = new AssertingTopologyEventListener("instance1.l1") {
+            private volatile boolean firstEvent = false;
+            @Override
+            public void handleTopologyEvent(TopologyEvent event) {
+                super.handleTopologyEvent(event);
+                if (firstEvent) {
+                    // only handle the first event - that one must be INIT with isCurrent==false
+                    assertFalse(event.getNewView().isCurrent());
+                    firstEvent = false;
+                }
+            }
+        };
         l1.addExpected(Type.TOPOLOGY_INIT);
         instance1.bindTopologyEventListener(l1);
         
@@ -257,6 +270,21 @@ public class TopologyEventTest {
         assertEquals(2, l2.getEvents().size());
         assertEquals(0, l1Two.getUnexpectedCount());
         assertEquals(2, l1Two.getEvents().size());
+        
+        // now meanwhile - for SLING-4638 : register a listener 'late':
+        // this one should get an INIT with a newView that has isCurrent()==false
+        AssertingTopologyEventListener late = new AssertingTopologyEventListener("instance1.late") {
+            @Override
+            public void handleTopologyEvent(TopologyEvent event) {
+                super.handleTopologyEvent(event);
+                // also check if the newView has isCurrent==false
+                assertFalse(event.getNewView().isCurrent());
+                // plus lets now directly ask the discovery service for getTopology and check that
+                assertFalse(instance1.getDiscoveryService().getTopology().isCurrent());
+            }
+        };
+        late.addExpected(Type.TOPOLOGY_INIT);
+        instance1.bindTopologyEventListener(late);
 
         // wait until CHANGED is sent - which is 3 sec after CHANGING
         l1.addExpected(Type.TOPOLOGY_CHANGED);

Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/helpers/AssertingTopologyEventListener.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/helpers/AssertingTopologyEventListener.java?rev=1674834&r1=1674833&r2=1674834&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/helpers/AssertingTopologyEventListener.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/helpers/AssertingTopologyEventListener.java Mon Apr 20 12:51:57 2015
@@ -18,6 +18,11 @@
  */
 package org.apache.sling.discovery.impl.cluster.helpers;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertNotNull;
+
 import java.util.LinkedList;
 import java.util.List;
 
@@ -73,6 +78,43 @@ public class AssertingTopologyEventListe
             }
             throw er;
         }
+        try{
+        switch(event.getType()) {
+        case PROPERTIES_CHANGED: {
+            assertNotNull(event.getOldView());
+            assertNotNull(event.getNewView());
+            assertTrue(event.getNewView().isCurrent());
+            assertFalse(event.getOldView().isCurrent());
+            break;
+        }
+        case TOPOLOGY_CHANGED: {
+            assertNotNull(event.getOldView());
+            assertNotNull(event.getNewView());
+            assertTrue(event.getNewView().isCurrent());
+            assertFalse(event.getOldView().isCurrent());
+            break;
+        }
+        case TOPOLOGY_CHANGING: {
+            assertNotNull(event.getOldView());
+            assertNull(event.getNewView());
+            assertFalse(event.getOldView().isCurrent());
+            break;
+        }
+        case TOPOLOGY_INIT: {
+            assertNull(event.getOldView());
+            assertNotNull(event.getNewView());
+            // cannot make any assertions on event.getNewView().isCurrent()
+            // as that can be true or false
+            break;
+        }
+        }
+        } catch(RuntimeException re) {
+            logger.error("RuntimeException: "+re, re);
+            throw re;
+        } catch(AssertionError e) {
+            logger.error("AssertionError: "+e, e);
+            throw e;
+        }
         events_.add(event);
     }