Author: manik.surtani(a)jboss.com
Date: 2007-10-23 13:02:47 -0400 (Tue, 23 Oct 2007)
New Revision: 4673
Modified:
core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyReplicationContentTest.java
Log:
Added some more info on blocks
Modified:
core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyReplicationContentTest.java
===================================================================
---
core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyReplicationContentTest.java 2007-10-23
11:54:46 UTC (rev 4672)
+++
core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyReplicationContentTest.java 2007-10-23
17:02:47 UTC (rev 4673)
@@ -6,24 +6,27 @@
*/
package org.jboss.cache.buddyreplication;
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertFalse;
-import static org.testng.AssertJUnit.assertNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.cache.CacheImpl;
import org.jboss.cache.Fqn;
import org.jboss.cache.misc.TestingUtil;
+import org.jboss.cache.notifications.annotation.CacheBlocked;
+import org.jboss.cache.notifications.annotation.CacheListener;
+import org.jboss.cache.notifications.annotation.CacheUnblocked;
+import org.jboss.cache.notifications.event.Event;
+import static org.testng.AssertJUnit.*;
+import org.testng.annotations.Test;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Teststhe transfer of content under *normal* operation
*
* @author <a href="mailto:manik@jboss.org">Manik Surtani
(manik(a)jboss.org)</a>
*/
+@Test (groups = {"functional"})
public class BuddyReplicationContentTest extends BuddyReplicationTestsBase
{
private String key = "key";
@@ -239,11 +242,19 @@
caches = null;
caches = createCaches(3, false, true);
+ CacheBlockListener blockListener = new CacheBlockListener();
+
+ caches.get(0).addCacheListener(blockListener);
+ caches.get(1).addCacheListener(blockListener);
+ caches.get(2).addCacheListener(blockListener);
+
caches.get(0).put("/0", "key", "value");
caches.get(1).put("/1", "key", "value");
caches.get(2).put("/2", "key", "value");
- TestingUtil.sleepThread(getSleepTimeout());
+// TestingUtil.sleepThread(getSleepTimeout());
+
//TestingUtil.sleepThread(caches.get(0).getConfiguration().getStateRetrievalTimeout() *
3);
+ blockListener.blockUntilAllCachesAreUnblocked(60000);
log.info("stopping 2");
caches.get(2).stop();
@@ -252,7 +263,9 @@
log.info("1 ** " + caches.get(1).printLockInfo());
log.info("2 ** " + caches.get(2).printLockInfo());
- TestingUtil.sleepThread(getSleepTimeout());
+// TestingUtil.sleepThread(getSleepTimeout());
+//
TestingUtil.sleepThread(caches.get(0).getConfiguration().getStateRetrievalTimeout() * 3);
+ blockListener.blockUntilAllCachesAreUnblocked(60000);
assertEquals("value", caches.get(0).get("/2",
"key"));
@@ -260,7 +273,9 @@
log.info("1 ** " + caches.get(1).printLockInfo());
log.info("2 ** " + caches.get(2).printLockInfo());
- TestingUtil.sleepThread(getSleepTimeout());
+// TestingUtil.sleepThread(getSleepTimeout());
+//
TestingUtil.sleepThread(caches.get(0).getConfiguration().getStateRetrievalTimeout() * 3);
+ blockListener.blockUntilAllCachesAreUnblocked(60000);
caches.get(1).stop();
log.info("0 ** " + caches.get(0).printLockInfo());
@@ -285,4 +300,50 @@
assertEquals("value", caches.get(0).get("/1",
"key"));
assertEquals("value", caches.get(0).get("/2",
"key"));
}
+
+ @CacheListener
+ public static class CacheBlockListener
+ {
+ private int blocks = 0;
+ @CacheBlocked
+ public void processBlock(Event e)
+ {
+ if (e.isPre())
+ {
+ System.out.println(">>>>>>>> Got BLOCK on cache
" + e.getCache().getLocalAddress());
+ synchronized (this)
+ {
+ blocks ++;
+ notifyAll();
+ }
+ }
+ }
+
+ @CacheUnblocked
+ public void processUnblock(Event e)
+ {
+ if (e.isPre())
+ {
+ System.out.println(">>>>>>>> Got UNBLOCK on
cache " + e.getCache().getLocalAddress());
+ synchronized (this)
+ {
+ blocks --;
+ notifyAll();
+ }
+ }
+ }
+
+ public void blockUntilAllCachesAreUnblocked(long maxWait) throws
InterruptedException
+ {
+ synchronized (this)
+ {
+ if (blocks != 0)
+ {
+ wait(maxWait);
+ }
+ if (blocks != 0)
+ throw new RuntimeException("Timed out waiting for unblocks. Number
of blocks = " + blocks);
+ }
+ }
+ }
}
Show replies by date