/*
- * 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.
* 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<String> tracker;
/*
protected void setUp() throws Exception {
tracker = new EventTracker<String>();
}
-
- protected EventTracker<String> getTracker() {
+
+ protected EventTracker<String> 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();
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();
}