[jboss-cvs] JBossCache/tests/functional/org/jboss/cache/lock ...
Manik Surtani
msurtani at jboss.com
Wed Jan 31 12:28:41 EST 2007
User: msurtani
Date: 07/01/31 12:28:41
Modified: tests/functional/org/jboss/cache/lock
ReadWriteLockTest.java
Log:
Updated to test Java5 util concurrent classes
Revision Changes Path
1.4 +23 -4 JBossCache/tests/functional/org/jboss/cache/lock/ReadWriteLockTest.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ReadWriteLockTest.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/tests/functional/org/jboss/cache/lock/ReadWriteLockTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- ReadWriteLockTest.java 31 Jan 2007 02:40:20 -0000 1.3
+++ ReadWriteLockTest.java 31 Jan 2007 17:28:41 -0000 1.4
@@ -10,7 +10,7 @@
/**
* Tests the various ReadWriteLock implementations
* @author Bela Ban
- * @version $Id: ReadWriteLockTest.java,v 1.3 2007/01/31 02:40:20 msurtani Exp $
+ * @version $Id: ReadWriteLockTest.java,v 1.4 2007/01/31 17:28:41 msurtani Exp $
*/
public class ReadWriteLockTest extends TestCase {
ReadWriteLock lock;
@@ -34,18 +34,28 @@
lock = new ReentrantReadWriteLock();
lock.writeLock().lock();
lock.writeLock().unlock();
+ try
+ {
lock.writeLock().unlock();
+ fail("Should have barfed");
+ }
+ catch (IllegalMonitorStateException imse)
+ {
+ // should barf
+ }
}
public void testMoreReadReleasesThanAcquisitions() throws InterruptedException {
lock = new ReentrantReadWriteLock();
lock.readLock().lock();
lock.readLock().unlock();
- try {
+ try
+ {
lock.readLock().unlock();
fail("read locks cannot be released more than acquired");
}
- catch(IllegalStateException illegalStateEx) {
+ catch(IllegalMonitorStateException illegalStateEx)
+ {
}
}
@@ -53,7 +63,16 @@
public void testSimple() throws InterruptedException {
lock = new ReentrantReadWriteLock();
lock.readLock().lock();
+ // upgrades must be manual; involving giving up the RL first. Sucks.
+ // see http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html
+ lock.readLock().unlock();
+
+ lock.writeLock().lock();
+ lock.writeLock().lock();
lock.readLock().lock();
+ lock.readLock().lock();
+
+ // since the thread currently has a WL and we are reentrant, this works without a manual upgrade.
lock.writeLock().lock();
lock.writeLock().lock();
}
More information about the jboss-cvs-commits
mailing list