ozeigermann 2004/12/18 19:07:23 Modified: transaction/src/test/org/apache/commons/transaction/locking GenericLockTest.java Log: Added test for global timeouts Revision Changes Path 1.7 +74 -7 jakarta-commons/transaction/src/test/org/apache/commons/transaction/locking/GenericLockTest.java Index: GenericLockTest.java =================================================================== RCS file: /home/cvs/jakarta-commons/transaction/src/test/org/apache/commons/transaction/locking/GenericLockTest.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- GenericLockTest.java 18 Dec 2004 23:15:08 -0000 1.6 +++ GenericLockTest.java 19 Dec 2004 03:07:23 -0000 1.7 @@ -49,7 +49,7 @@ private static final int CONCURRENT_TESTS = 25; - protected static final long TIMEOUT = Long.MAX_VALUE; + protected static final long TIMEOUT = 1000000; private static int deadlockCnt = 0; private static String first = null; @@ -168,7 +168,7 @@ for (int i = 0; i < CONCURRENT_TESTS; i++) { -// System.out.print("."); + System.out.print("."); final RendezvousBarrier deadlockBarrier1 = new RendezvousBarrier("deadlock1" + i, TIMEOUT, sLogger); @@ -224,7 +224,7 @@ } } - assertEquals(deadlockCnt, 1); + assertEquals(1, deadlockCnt); deadlockCnt = 0; } } @@ -473,6 +473,73 @@ lock.release(owner1); } cb.count(7); + synchronized (restart) { + restart.meet(); + restart.reset(); + } + + cb.reset(); + } + + } + + public void testGlobalTimeout() throws Throwable { + + sLogger.logInfo("\n\nChecking global timeouts\n\n"); + + final String owner1 = "owner1"; + final String owner2 = "owner2"; + + final String res1 = "res1"; + + final GenericLockManager manager = new GenericLockManager(1, sLogger, TIMEOUT, -1); + + final RendezvousBarrier restart = new RendezvousBarrier("restart", 2, TIMEOUT, sLogger); + + final CounterBarrier cb = new CounterBarrier("cb1", TIMEOUT, sLogger); + + for (int i = 0; i < CONCURRENT_TESTS; i++) { + + System.out.print("."); + + Thread t1 = new Thread(new Runnable() { + public void run() { + try { + cb.count(2); + manager.lock(owner2, res1, 1, true); + cb.count(3); + manager.releaseAll(owner2); + synchronized (restart) { + restart.meet(); + restart.reset(); + } + } catch (InterruptedException ie) { + } + } + }, "Thread #1"); + + t1.start(); + + cb.count(0); + manager.setGlobalTimeout(owner1, 500); + manager.lock(owner1, res1, 1, true); + cb.count(1); + cb.count(4); + boolean failed = false; + try { + manager.tryLock(owner1, res1, 1, true); + } catch (LockException le) { + failed = true; + } + assertTrue(failed); + manager.releaseAll(owner1); + failed = false; + try { + manager.tryLock(owner1, res1, 1, true); + } catch (LockException le) { + failed = true; + } + assertFalse(failed); synchronized (restart) { restart.meet(); restart.reset();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]