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/11/09 11:13:58 UTC

svn commit: r1713364 - in /sling/trunk/bundles/extensions/discovery: base/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java

Author: stefanegli
Date: Mon Nov  9 10:13:58 2015
New Revision: 1713364

URL: http://svn.apache.org/viewvc?rev=1713364&view=rev
Log:
SLING-5279 : tests made more stable wrt stopping a VirtualInstance that was likely not done yet and interfered with subsequent test runs

Modified:
    sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java
    sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java

Modified: sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java?rev=1713364&r1=1713363&r2=1713364&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java (original)
+++ sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java Mon Nov  9 10:13:58 2015
@@ -105,21 +105,37 @@ public class VirtualInstance {
 
     	private final int intervalInSeconds;
 
-    	private boolean stopped_ = false;
+    	private boolean stopping_ = false;
 
-		public ViewCheckerRunner(int intervalInSeconds) {
+        private volatile boolean stopped_ = false;
+
+        public ViewCheckerRunner(int intervalInSeconds) {
     		this.intervalInSeconds = intervalInSeconds;
     	}
 
 		public synchronized void stop() {
 			logger.info("Stopping Instance ["+slingId+"]");
-			stopped_ = true;
+			stopping_ = true;
+			this.notifyAll();
+		}
+		
+		public boolean hasStopped() {
+		    return stopped_;
 		}
 
 		public void run() {
+		    try{
+		        doRun();
+		    } finally {
+		        stopped_ = true;
+                logger.info("Instance ["+slingId+"] stopped.");
+		    }
+		}
+		
+		public void doRun() {
 			while(true) {
 				synchronized(this) {
-					if (stopped_) {
+					if (stopping_) {
 						logger.info("Instance ["+slingId+"] stopps.");
 						return;
 					}
@@ -129,11 +145,13 @@ public class VirtualInstance {
 				} catch(Exception e) {
 				    logger.error("run: ping connector for slingId="+slingId+" threw exception: "+e, e);
 				}
-				try {
-					Thread.sleep(intervalInSeconds*1000);
-				} catch (InterruptedException e) {
-					e.printStackTrace();
-					return;
+				synchronized(this) {
+    				try {
+    					this.wait(intervalInSeconds*1000);
+    				} catch (InterruptedException e) {
+    					e.printStackTrace();
+    					return;
+    				}
 				}
 			}
 		}
@@ -318,6 +336,11 @@ public class VirtualInstance {
     public void stopViewChecker() throws Throwable {
     	if (viewCheckerRunner!=null) {
     		viewCheckerRunner.stop();
+    		while(!viewCheckerRunner.hasStopped()) {
+    		    logger.info("stopViewChecker: ["+getDebugName()+"] waiting for viewCheckerRunner to stop");
+    		    Thread.sleep(500);
+    		}
+            logger.info("stopViewChecker: ["+getDebugName()+"] viewCheckerRunner stopped");
     		viewCheckerRunner = null;
     	}
         try{

Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java?rev=1713364&r1=1713363&r2=1713364&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java Mon Nov  9 10:13:58 2015
@@ -126,9 +126,13 @@ public class VotingHandlerTest {
     
     @After
     public void tearDown() throws Exception {
-        resourceResolver.close();
+        if (resourceResolver != null) {
+            resourceResolver.close();
+        }
         
-        threadPool.shutdown();
+        if (threadPool != null) {
+            threadPool.shutdown();
+        }
     }
     
     @Test