X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fconcurrency%2FAbstractLockTestCase.java;h=a4143c0b9748739321b8999d421becf68546f505;hb=96c8961955a306314dfe0cf9ca192252de39fc1c;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..a4143c0b 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(); @@ -69,23 +63,29 @@ public abstract class AbstractLockTestCase extends TestCase { Thread t2 = runThread(); TimingUtils.sleep(SLEEP_TIME / 10); // 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(); }