X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fconcurrency%2FAbstractLockTestCase.java;h=51686e42536ce86b3a0e223a7273639124a966d6;hb=4a575582a5c2999bd816b197d9cf274b4b3ddcd7;hp=6c9df461813185a892c0fae0093f345f24b999ea;hpb=0d8d8f24656e585ee75558cfd6a4c661f8f14985;p=utils diff --git a/support/general/src/test/java/org/wamblee/concurrency/AbstractLockTestCase.java b/support/general/src/test/java/org/wamblee/concurrency/AbstractLockTestCase.java index 6c9df461..51686e42 100644 --- a/support/general/src/test/java/org/wamblee/concurrency/AbstractLockTestCase.java +++ b/support/general/src/test/java/org/wamblee/concurrency/AbstractLockTestCase.java @@ -1,5 +1,5 @@ /* - * Copyright 2005 the original author or authors. + * Copyright 2005-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,29 +13,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.wamblee.concurrency; +import junit.framework.TestCase; + import org.wamblee.test.EventTracker; import org.wamblee.test.TimingUtils; -import junit.framework.TestCase; - /** * Tests for the JVMLock. - * + * * @author Erik Brakkee */ public abstract class AbstractLockTestCase extends TestCase { - protected static final int SLEEP_TIME = 1000; - protected static final String STARTED = "started"; - protected static final String ACQUIRED = "acquired"; - protected static final String RELEASED = "released"; - private EventTracker tracker; /* @@ -47,17 +41,17 @@ public abstract class AbstractLockTestCase extends TestCase { protected void setUp() throws Exception { tracker = new EventTracker(); } - - protected EventTracker getTracker() { + + protected EventTracker getTracker() { return tracker; } /** - * Must be implemented to generate the events - * {@link #STARTED}, {@link #ACQUIRED}, and {@link #RELEASED} in - * that order. The lock should be acquired for - * the time specified by {@link #SLEEP_TIME}. - * @return Thread which does the work. + * Must be implemented to generate the events {@link #STARTED}, + * {@link #ACQUIRED}, and {@link #RELEASED} in that order. The lock should + * be acquired for the time specified by {@link #SLEEP_TIME}. + * + * @return Thread which does the work. */ protected abstract Thread runThread(); @@ -67,25 +61,31 @@ public abstract class AbstractLockTestCase extends TestCase { public void testLock() throws InterruptedException { Thread t1 = runThread(); Thread t2 = runThread(); - TimingUtils.sleep(SLEEP_TIME / 10); // give threads a chance to start + TimingUtils.sleep(SLEEP_TIME / 2); // give threads a chance to start // up. + assertEquals(2, tracker.getEventCount(STARTED)); // both threads // should have // started. + assertEquals(1, tracker.getEventCount(ACQUIRED)); // one thread has - // acquired the - // lock. + // acquired the + // lock. + TimingUtils.sleep(SLEEP_TIME); assertEquals(2, tracker.getEventCount(ACQUIRED)); // now the other - // thread could also - // acquire the lock + // thread could also + // acquire the lock + assertEquals(1, tracker.getEventCount(RELEASED)); // and the first - // thread has - // released it. + // thread has + // released it. + TimingUtils.sleep(SLEEP_TIME); assertEquals(2, tracker.getEventCount(RELEASED)); // both threads - // should be - // finished. + // should be + // finished. + t1.join(); t2.join(); }