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);
}