+++ /dev/null
-/*
- * Copyright 2005 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * 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 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;
-
- /*
- * (non-Javadoc)
- *
- * @see junit.framework.TestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- _tracker = new EventTracker<String>();
- }
-
- 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.
- */
- protected abstract Thread runThread();
-
- /**
- * Tests the operation of the lock.
- */
- public void testLock() throws InterruptedException {
- Thread t1 = 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.
- TimingUtils.sleep(SLEEP_TIME);
- assertEquals(2, _tracker.getEventCount(ACQUIRED)); // now the other
- // thread could also
- // acquire the lock
- assertEquals(1, _tracker.getEventCount(RELEASED)); // and the first
- // thread has
- // released it.
- TimingUtils.sleep(SLEEP_TIME);
- assertEquals(2, _tracker.getEventCount(RELEASED)); // both threads
- // should be
- // finished.
- t1.join();
- t2.join();
- }
-}