X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fconcurrency%2FAbstractLockTestCase.java;h=b6e5b5bfe96907390011690a7f69f9e817389010;hb=5e2a32e2e36575926436dc58cc6fa8682a7cf229;hp=6c9df461813185a892c0fae0093f345f24b999ea;hpb=81fe8784a2182e25f92a7591ec5b0fba00afb828;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..b6e5b5bf 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. @@ -12,30 +12,24 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 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(); }