summaryrefslogtreecommitdiffstats
path: root/concurrent/src/test/java
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:14 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:14 -0800
commit1c0fed63c71ddb230f3b304aac12caffbedf2f21 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /concurrent/src/test/java
parent2fb02ef3025449e24e756a7f645ea6eab7a1fd4f (diff)
downloadlibcore-1c0fed63c71ddb230f3b304aac12caffbedf2f21.zip
libcore-1c0fed63c71ddb230f3b304aac12caffbedf2f21.tar.gz
libcore-1c0fed63c71ddb230f3b304aac12caffbedf2f21.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'concurrent/src/test/java')
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/AbstractExecutorServiceTest.java808
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/AbstractQueueTest.java187
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/AbstractQueuedSynchronizerTest.java1301
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/ArrayBlockingQueueTest.java1045
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/AtomicBooleanTest.java146
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerArrayTest.java340
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerFieldUpdaterTest.java275
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerTest.java261
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongArrayTest.java336
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongFieldUpdaterTest.java277
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongTest.java248
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/AtomicMarkableReferenceTest.java160
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceArrayTest.java203
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceFieldUpdaterTest.java171
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceTest.java143
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/AtomicStampedReferenceTest.java160
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/ConcurrentHashMapTest.java611
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/ConcurrentLinkedQueueTest.java537
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/CopyOnWriteArrayListTest.java623
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/CopyOnWriteArraySetTest.java296
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/CountDownLatchTest.java206
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/CyclicBarrierTest.java379
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/DelayQueueTest.java985
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/ExchangerTest.java234
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/ExecutorCompletionServiceTest.java162
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/ExecutorsTest.java666
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/FutureTaskTest.java476
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/JSR166TestCase.java565
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/LinkedBlockingQueueTest.java1031
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/LinkedListTest.java453
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/LockSupportTest.java169
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/PriorityBlockingQueueTest.java943
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/PriorityQueueTest.java515
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/ReentrantLockTest.java1080
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/ReentrantReadWriteLockTest.java1321
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/ScheduledExecutorTest.java1149
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/SemaphoreTest.java919
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/SynchronousQueueTest.java895
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/SystemTest.java81
-rw-r--r--concurrent/src/test/java/tests/api/java/util/concurrent/ThreadLocalTest.java108
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/ThreadPoolExecutorTest.java1504
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/ThreadTest.java70
-rwxr-xr-xconcurrent/src/test/java/tests/api/java/util/concurrent/TimeUnitTest.java333
-rw-r--r--concurrent/src/test/java/tests/concurrent/AllTests.java41
44 files changed, 0 insertions, 22413 deletions
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AbstractExecutorServiceTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AbstractExecutorServiceTest.java
deleted file mode 100644
index 99a007a..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AbstractExecutorServiceTest.java
+++ /dev/null
@@ -1,808 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.math.BigInteger;
-import java.security.*;
-
-public class AbstractExecutorServiceTest extends JSR166TestCase{
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AbstractExecutorServiceTest.class);
- }
-
- /**
- * A no-frills implementation of AbstractExecutorService, designed
- * to test the submit methods only.
- */
- static class DirectExecutorService extends AbstractExecutorService {
- public void execute(Runnable r) { r.run(); }
- public void shutdown() { shutdown = true; }
- public List<Runnable> shutdownNow() { shutdown = true; return Collections.EMPTY_LIST; }
- public boolean isShutdown() { return shutdown; }
- public boolean isTerminated() { return isShutdown(); }
- public boolean awaitTermination(long timeout, TimeUnit unit) { return isShutdown(); }
- private volatile boolean shutdown = false;
- }
-
- /**
- * execute(runnable) runs it to completion
- */
- public void testExecuteRunnable() {
- try {
- ExecutorService e = new DirectExecutorService();
- TrackedShortRunnable task = new TrackedShortRunnable();
- assertFalse(task.done);
- Future<?> future = e.submit(task);
- future.get();
- assertTrue(task.done);
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * Completed submit(callable) returns result
- */
- public void testSubmitCallable() {
- try {
- ExecutorService e = new DirectExecutorService();
- Future<String> future = e.submit(new StringTask());
- String result = future.get();
- assertSame(TEST_STRING, result);
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- }
- }
-
- /**
- * Completed submit(runnable) returns successfully
- */
- public void testSubmitRunnable() {
- try {
- ExecutorService e = new DirectExecutorService();
- Future<?> future = e.submit(new NoOpRunnable());
- future.get();
- assertTrue(future.isDone());
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- }
- }
-
- /**
- * Completed submit(runnable, result) returns result
- */
- public void testSubmitRunnable2() {
- try {
- ExecutorService e = new DirectExecutorService();
- Future<String> future = e.submit(new NoOpRunnable(), TEST_STRING);
- String result = future.get();
- assertSame(TEST_STRING, result);
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * A submitted privileged action to completion
- */
- public void testSubmitPrivilegedAction() {
- Policy savedPolicy = null;
- try {
- savedPolicy = Policy.getPolicy();
- AdjustablePolicy policy = new AdjustablePolicy();
- policy.addPermission(new RuntimePermission("getContextClassLoader"));
- policy.addPermission(new RuntimePermission("setContextClassLoader"));
- Policy.setPolicy(policy);
- } catch(AccessControlException ok) {
- return;
- }
- try {
- ExecutorService e = new DirectExecutorService();
- Future future = e.submit(Executors.callable(new PrivilegedAction() {
- public Object run() {
- return TEST_STRING;
- }}));
-
- Object result = future.get();
- assertSame(TEST_STRING, result);
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- }
- finally {
- try {
- Policy.setPolicy(savedPolicy);
- } catch(AccessControlException ok) {
- return;
- }
- }
- }
-
- /**
- * A submitted a privileged exception action runs to completion
- */
- public void testSubmitPrivilegedExceptionAction() {
- Policy savedPolicy = null;
- try {
- savedPolicy = Policy.getPolicy();
- AdjustablePolicy policy = new AdjustablePolicy();
- policy.addPermission(new RuntimePermission("getContextClassLoader"));
- policy.addPermission(new RuntimePermission("setContextClassLoader"));
- Policy.setPolicy(policy);
- } catch(AccessControlException ok) {
- return;
- }
-
- try {
- ExecutorService e = new DirectExecutorService();
- Future future = e.submit(Executors.callable(new PrivilegedExceptionAction() {
- public Object run() {
- return TEST_STRING;
- }}));
-
- Object result = future.get();
- assertSame(TEST_STRING, result);
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- }
- finally {
- Policy.setPolicy(savedPolicy);
- }
- }
-
- /**
- * A submitted failed privileged exception action reports exception
- */
- public void testSubmitFailedPrivilegedExceptionAction() {
- Policy savedPolicy = null;
- try {
- savedPolicy = Policy.getPolicy();
- AdjustablePolicy policy = new AdjustablePolicy();
- policy.addPermission(new RuntimePermission("getContextClassLoader"));
- policy.addPermission(new RuntimePermission("setContextClassLoader"));
- Policy.setPolicy(policy);
- } catch(AccessControlException ok) {
- return;
- }
-
-
- try {
- ExecutorService e = new DirectExecutorService();
- Future future = e.submit(Executors.callable(new PrivilegedExceptionAction() {
- public Object run() throws Exception {
- throw new IndexOutOfBoundsException();
- }}));
-
- Object result = future.get();
- shouldThrow();
- }
- catch (ExecutionException success) {
- }
- catch (InterruptedException ex) {
- unexpectedException();
- }
- finally {
- Policy.setPolicy(savedPolicy);
- }
- }
-
- /**
- * execute(null runnable) throws NPE
- */
- public void testExecuteNullRunnable() {
- try {
- ExecutorService e = new DirectExecutorService();
- TrackedShortRunnable task = null;
- Future<?> future = e.submit(task);
- shouldThrow();
- }
- catch (NullPointerException success) {
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * submit(null callable) throws NPE
- */
- public void testSubmitNullCallable() {
- try {
- ExecutorService e = new DirectExecutorService();
- StringTask t = null;
- Future<String> future = e.submit(t);
- shouldThrow();
- }
- catch (NullPointerException success) {
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * submit(runnable) throws RejectedExecutionException if
- * executor is saturated.
- */
- public void testExecute1() {
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, 60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(1));
- try {
-
- for(int i = 0; i < 5; ++i){
- p.submit(new MediumRunnable());
- }
- shouldThrow();
- } catch(RejectedExecutionException success){}
- joinPool(p);
- }
-
- /**
- * submit(callable) throws RejectedExecutionException
- * if executor is saturated.
- */
- public void testExecute2() {
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, 60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(1));
- try {
- for(int i = 0; i < 5; ++i) {
- p.submit(new SmallCallable());
- }
- shouldThrow();
- } catch(RejectedExecutionException e){}
- joinPool(p);
- }
-
-
- /**
- * Blocking on submit(callable) throws InterruptedException if
- * caller interrupted.
- */
- public void testInterruptedSubmit() {
- final ThreadPoolExecutor p = new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10));
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- p.submit(new Callable<Object>() {
- public Object call() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- shouldThrow();
- } catch(InterruptedException e){
- }
- return null;
- }
- }).get();
- } catch(InterruptedException success){
- } catch(Exception e) {
- unexpectedException();
- }
-
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- } catch(Exception e){
- unexpectedException();
- }
- joinPool(p);
- }
-
- /**
- * get of submitted callable throws Exception if callable
- * interrupted
- */
- public void testSubmitIE() {
- final ThreadPoolExecutor p = new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10));
-
- final Callable c = new Callable() {
- public Object call() {
- try {
- p.submit(new SmallCallable()).get();
- shouldThrow();
- } catch(InterruptedException e){}
- catch(RejectedExecutionException e2){}
- catch(ExecutionException e3){}
- return Boolean.TRUE;
- }
- };
-
-
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- c.call();
- } catch(Exception e){}
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
-
- joinPool(p);
- }
-
- /**
- * get of submit(callable) throws ExecutionException if callable
- * throws exception
- */
- public void testSubmitEE() {
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10));
-
- try {
- Callable c = new Callable() {
- public Object call() {
- int i = 5/0;
- return Boolean.TRUE;
- }
- };
-
- for(int i =0; i < 5; i++){
- p.submit(c).get();
- }
-
- shouldThrow();
- }
- catch(ExecutionException success){
- } catch(Exception e) {
- unexpectedException();
- }
- joinPool(p);
- }
-
- /**
- * invokeAny(null) throws NPE
- */
- public void testInvokeAny1() {
- ExecutorService e = new DirectExecutorService();
- try {
- e.invokeAny(null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(empty collection) throws IAE
- */
- public void testInvokeAny2() {
- ExecutorService e = new DirectExecutorService();
- try {
- e.invokeAny(new ArrayList<Callable<String>>());
- } catch (IllegalArgumentException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(c) throws NPE if c has null elements
- */
- public void testInvokeAny3() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAny(l);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- ex.printStackTrace();
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(c) throws ExecutionException if no task in c completes
- */
- public void testInvokeAny4() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- e.invokeAny(l);
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(c) returns result of some task in c if at least one completes
- */
- public void testInvokeAny5() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- String result = e.invokeAny(l);
- assertSame(TEST_STRING, result);
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(null) throws NPE
- */
- public void testInvokeAll1() {
- ExecutorService e = new DirectExecutorService();
- try {
- e.invokeAll(null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(empty collection) returns empty collection
- */
- public void testInvokeAll2() {
- ExecutorService e = new DirectExecutorService();
- try {
- List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>());
- assertTrue(r.isEmpty());
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(c) throws NPE if c has null elements
- */
- public void testInvokeAll3() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAll(l);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * get of returned element of invokeAll(c) throws exception on failed task
- */
- public void testInvokeAll4() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- List<Future<String>> result = e.invokeAll(l);
- assertEquals(1, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- it.next().get();
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(c) returns results of all completed tasks in c
- */
- public void testInvokeAll5() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- List<Future<String>> result = e.invokeAll(l);
- assertEquals(2, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- assertSame(TEST_STRING, it.next().get());
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
-
- /**
- * timed invokeAny(null) throws NPE
- */
- public void testTimedInvokeAny1() {
- ExecutorService e = new DirectExecutorService();
- try {
- e.invokeAny(null, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(null time unit) throws NPE
- */
- public void testTimedInvokeAnyNullTimeUnit() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- e.invokeAny(l, MEDIUM_DELAY_MS, null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(empty collection) throws IAE
- */
- public void testTimedInvokeAny2() {
- ExecutorService e = new DirectExecutorService();
- try {
- e.invokeAny(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (IllegalArgumentException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(c) throws NPE if c has null elements
- */
- public void testTimedInvokeAny3() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- ex.printStackTrace();
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(c) throws ExecutionException if no task completes
- */
- public void testTimedInvokeAny4() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(c) returns result of some task in c
- */
- public void testTimedInvokeAny5() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- String result = e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertSame(TEST_STRING, result);
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(null) throws NPE
- */
- public void testTimedInvokeAll1() {
- ExecutorService e = new DirectExecutorService();
- try {
- e.invokeAll(null, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(null time unit) throws NPE
- */
- public void testTimedInvokeAllNullTimeUnit() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- e.invokeAll(l, MEDIUM_DELAY_MS, null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(empty collection) returns empty collection
- */
- public void testTimedInvokeAll2() {
- ExecutorService e = new DirectExecutorService();
- try {
- List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertTrue(r.isEmpty());
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(c) throws NPE if c has null elements
- */
- public void testTimedInvokeAll3() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * get of returned element of invokeAll(c) throws exception on failed task
- */
- public void testTimedInvokeAll4() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- List<Future<String>> result = e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertEquals(1, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- it.next().get();
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(c) returns results of all completed tasks in c
- */
- public void testTimedInvokeAll5() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- List<Future<String>> result = e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertEquals(2, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- assertSame(TEST_STRING, it.next().get());
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll cancels tasks not completed by timeout
- */
- public void testTimedInvokeAll6() {
- ExecutorService e = new DirectExecutorService();
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(Executors.callable(new MediumPossiblyInterruptedRunnable(), TEST_STRING));
- l.add(new StringTask());
- List<Future<String>> result = e.invokeAll(l, SMALL_DELAY_MS, TimeUnit.MILLISECONDS);
- assertEquals(3, result.size());
- Iterator<Future<String>> it = result.iterator();
- Future<String> f1 = it.next();
- Future<String> f2 = it.next();
- Future<String> f3 = it.next();
- assertTrue(f1.isDone());
- assertFalse(f1.isCancelled());
- assertTrue(f2.isDone());
- assertTrue(f3.isDone());
- assertTrue(f3.isCancelled());
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AbstractQueueTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AbstractQueueTest.java
deleted file mode 100644
index 0251390..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AbstractQueueTest.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.concurrent.locks.*;
-import java.io.*;
-
-public class AbstractQueueTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AbstractQueueTest.class);
- }
-
- static class Succeed extends AbstractQueue<Integer> {
- public boolean offer(Integer x) {
- if (x == null) throw new NullPointerException();
- return true;
- }
- public Integer peek() { return one; }
- public Integer poll() { return one; }
- public int size() { return 0; }
- public Iterator iterator() { return null; } // not needed
- }
-
- static class Fail extends AbstractQueue<Integer> {
- public boolean offer(Integer x) {
- if (x == null) throw new NullPointerException();
- return false;
- }
- public Integer peek() { return null; }
- public Integer poll() { return null; }
- public int size() { return 0; }
- public Iterator iterator() { return null; } // not needed
- }
-
- /**
- * add returns true if offer succeeds
- */
- public void testAddS() {
- Succeed q = new Succeed();
- assertTrue(q.add(two));
- }
-
- /**
- * add throws ISE true if offer fails
- */
- public void testAddF() {
- Fail q = new Fail();
- try {
- q.add(one);
- shouldThrow();
- } catch (IllegalStateException success) {
- }
- }
-
- /**
- * add throws NPE if offer does
- */
- public void testAddNPE() {
- Succeed q = new Succeed();
- try {
- q.add(null);
- shouldThrow();
- } catch (NullPointerException success) {
- }
- }
-
- /**
- * remove returns normally if poll succeeds
- */
- public void testRemoveS() {
- Succeed q = new Succeed();
- q.remove();
- }
-
- /**
- * remove throws NSEE if poll returns null
- */
- public void testRemoveF() {
- Fail q = new Fail();
- try {
- q.remove();
- shouldThrow();
- } catch (NoSuchElementException success) {
- }
- }
-
-
- /**
- * element returns normally if peek succeeds
- */
- public void testElementS() {
- Succeed q = new Succeed();
- q.element();
- }
-
- /**
- * element throws NSEE if peek returns null
- */
- public void testElementF() {
- Fail q = new Fail();
- try {
- q.element();
- shouldThrow();
- } catch (NoSuchElementException success) {
- }
- }
-
- /**
- * addAll(null) throws NPE
- */
- public void testAddAll1() {
- try {
- Succeed q = new Succeed();
- q.addAll(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * addAll(this) throws IAE
- */
- public void testAddAllSelf() {
- try {
- Succeed q = new Succeed();
- q.addAll(q);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
-
- /**
- * addAll of a collection with null elements throws NPE
- */
- public void testAddAll2() {
- try {
- Succeed q = new Succeed();
- Integer[] ints = new Integer[SIZE];
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll of a collection with any null elements throws NPE after
- * possibly adding some elements
- */
- public void testAddAll3() {
- try {
- Succeed q = new Succeed();
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll throws ISE if an add fails
- */
- public void testAddAll4() {
- try {
- Fail q = new Fail();
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (IllegalStateException success) {}
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AbstractQueuedSynchronizerTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AbstractQueuedSynchronizerTest.java
deleted file mode 100644
index eed8d3a..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AbstractQueuedSynchronizerTest.java
+++ /dev/null
@@ -1,1301 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.concurrent.locks.*;
-import java.io.*;
-
-public class AbstractQueuedSynchronizerTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AbstractQueuedSynchronizerTest.class);
- }
-
- /**
- * A simple mutex class, adapted from the
- * AbstractQueuedSynchronizer javadoc. Exclusive acquire tests
- * exercise this as a sample user extension. Other
- * methods/features of AbstractQueuedSynchronizerTest are tested
- * via other test classes, including those for ReentrantLock,
- * ReentrantReadWriteLock, and Semaphore
- */
- static class Mutex extends AbstractQueuedSynchronizer {
- public boolean isHeldExclusively() { return getState() == 1; }
-
- public boolean tryAcquire(int acquires) {
- assertTrue(acquires == 1);
- return compareAndSetState(0, 1);
- }
-
- public boolean tryRelease(int releases) {
- if (getState() == 0) throw new IllegalMonitorStateException();
- setState(0);
- return true;
- }
-
- public AbstractQueuedSynchronizer.ConditionObject newCondition() { return new AbstractQueuedSynchronizer.ConditionObject(); }
-
- }
-
-
- /**
- * A simple latch class, to test shared mode.
- */
- static class BooleanLatch extends AbstractQueuedSynchronizer {
- public boolean isSignalled() { return getState() != 0; }
-
- public int tryAcquireShared(int ignore) {
- return isSignalled()? 1 : -1;
- }
-
- public boolean tryReleaseShared(int ignore) {
- setState(1);
- return true;
- }
- }
-
- /**
- * A runnable calling acquireInterruptibly
- */
- class InterruptibleSyncRunnable implements Runnable {
- final Mutex sync;
- InterruptibleSyncRunnable(Mutex l) { sync = l; }
- public void run() {
- try {
- sync.acquireInterruptibly(1);
- } catch(InterruptedException success){}
- }
- }
-
-
- /**
- * A runnable calling acquireInterruptibly that expects to be
- * interrupted
- */
- class InterruptedSyncRunnable implements Runnable {
- final Mutex sync;
- InterruptedSyncRunnable(Mutex l) { sync = l; }
- public void run() {
- try {
- sync.acquireInterruptibly(1);
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- }
-
- /**
- * isHeldExclusively is false upon construction
- */
- public void testIsHeldExclusively() {
- Mutex rl = new Mutex();
- assertFalse(rl.isHeldExclusively());
- }
-
- /**
- * acquiring released sync succeeds
- */
- public void testAcquire() {
- Mutex rl = new Mutex();
- rl.acquire(1);
- assertTrue(rl.isHeldExclusively());
- rl.release(1);
- assertFalse(rl.isHeldExclusively());
- }
-
- /**
- * tryAcquire on an released sync succeeds
- */
- public void testTryAcquire() {
- Mutex rl = new Mutex();
- assertTrue(rl.tryAcquire(1));
- assertTrue(rl.isHeldExclusively());
- rl.release(1);
- }
-
- /**
- * hasQueuedThreads reports whether there are waiting threads
- */
- public void testhasQueuedThreads() {
- final Mutex sync = new Mutex();
- Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
- Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
- try {
- assertFalse(sync.hasQueuedThreads());
- sync.acquire(1);
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasQueuedThreads());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasQueuedThreads());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasQueuedThreads());
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.hasQueuedThreads());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * isQueued(null) throws NPE
- */
- public void testIsQueuedNPE() {
- final Mutex sync = new Mutex();
- try {
- sync.isQueued(null);
- shouldThrow();
- } catch (NullPointerException success) {
- }
- }
-
- /**
- * isQueued reports whether a thread is queued.
- */
- public void testIsQueued() {
- final Mutex sync = new Mutex();
- Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
- Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
- try {
- assertFalse(sync.isQueued(t1));
- assertFalse(sync.isQueued(t2));
- sync.acquire(1);
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.isQueued(t1));
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.isQueued(t1));
- assertTrue(sync.isQueued(t2));
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.isQueued(t1));
- assertTrue(sync.isQueued(t2));
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.isQueued(t1));
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.isQueued(t2));
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getFirstQueuedThread returns first waiting thread or null if none
- */
- public void testGetFirstQueuedThread() {
- final Mutex sync = new Mutex();
- Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
- Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
- try {
- assertNull(sync.getFirstQueuedThread());
- sync.acquire(1);
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(t1, sync.getFirstQueuedThread());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(t1, sync.getFirstQueuedThread());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(t2, sync.getFirstQueuedThread());
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- assertNull(sync.getFirstQueuedThread());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * hasContended reports false if no thread has ever blocked, else true
- */
- public void testHasContended() {
- final Mutex sync = new Mutex();
- Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
- Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
- try {
- assertFalse(sync.hasContended());
- sync.acquire(1);
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasContended());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasContended());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasContended());
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasContended());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getQueuedThreads includes waiting threads
- */
- public void testGetQueuedThreads() {
- final Mutex sync = new Mutex();
- Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
- Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
- try {
- assertTrue(sync.getQueuedThreads().isEmpty());
- sync.acquire(1);
- assertTrue(sync.getQueuedThreads().isEmpty());
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getQueuedThreads().contains(t1));
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getQueuedThreads().contains(t1));
- assertTrue(sync.getQueuedThreads().contains(t2));
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.getQueuedThreads().contains(t1));
- assertTrue(sync.getQueuedThreads().contains(t2));
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getQueuedThreads().isEmpty());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getExclusiveQueuedThreads includes waiting threads
- */
- public void testGetExclusiveQueuedThreads() {
- final Mutex sync = new Mutex();
- Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
- Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
- try {
- assertTrue(sync.getExclusiveQueuedThreads().isEmpty());
- sync.acquire(1);
- assertTrue(sync.getExclusiveQueuedThreads().isEmpty());
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getExclusiveQueuedThreads().contains(t1));
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getExclusiveQueuedThreads().contains(t1));
- assertTrue(sync.getExclusiveQueuedThreads().contains(t2));
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.getExclusiveQueuedThreads().contains(t1));
- assertTrue(sync.getExclusiveQueuedThreads().contains(t2));
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getExclusiveQueuedThreads().isEmpty());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getSharedQueuedThreads does not include exclusively waiting threads
- */
- public void testGetSharedQueuedThreads() {
- final Mutex sync = new Mutex();
- Thread t1 = new Thread(new InterruptedSyncRunnable(sync));
- Thread t2 = new Thread(new InterruptibleSyncRunnable(sync));
- try {
- assertTrue(sync.getSharedQueuedThreads().isEmpty());
- sync.acquire(1);
- assertTrue(sync.getSharedQueuedThreads().isEmpty());
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getSharedQueuedThreads().isEmpty());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getSharedQueuedThreads().isEmpty());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getSharedQueuedThreads().isEmpty());
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.getSharedQueuedThreads().isEmpty());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * tryAcquireNanos is interruptible.
- */
- public void testInterruptedException2() {
- final Mutex sync = new Mutex();
- sync.acquire(1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- sync.tryAcquireNanos(1, MEDIUM_DELAY_MS * 1000 * 1000);
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- try {
- t.start();
- t.interrupt();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * TryAcquire on exclusively held sync fails
- */
- public void testTryAcquireWhenSynced() {
- final Mutex sync = new Mutex();
- sync.acquire(1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- threadAssertFalse(sync.tryAcquire(1));
- }
- });
- try {
- t.start();
- t.join();
- sync.release(1);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * tryAcquireNanos on an exclusively held sync times out
- */
- public void testAcquireNanos_Timeout() {
- final Mutex sync = new Mutex();
- sync.acquire(1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertFalse(sync.tryAcquireNanos(1, 1000 * 1000));
- } catch (Exception ex) {
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- t.join();
- sync.release(1);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * getState is true when acquired and false when not
- */
- public void testGetState() {
- final Mutex sync = new Mutex();
- sync.acquire(1);
- assertTrue(sync.isHeldExclusively());
- sync.release(1);
- assertFalse(sync.isHeldExclusively());
- Thread t = new Thread(new Runnable() {
- public void run() {
- sync.acquire(1);
- try {
- Thread.sleep(SMALL_DELAY_MS);
- }
- catch(Exception e) {
- threadUnexpectedException();
- }
- sync.release(1);
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.isHeldExclusively());
- t.join();
- assertFalse(sync.isHeldExclusively());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * acquireInterruptibly is interruptible.
- */
- public void testAcquireInterruptibly1() {
- final Mutex sync = new Mutex();
- sync.acquire(1);
- Thread t = new Thread(new InterruptedSyncRunnable(sync));
- try {
- t.start();
- t.interrupt();
- sync.release(1);
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * acquireInterruptibly succeeds when released, else is interruptible
- */
- public void testAcquireInterruptibly2() {
- final Mutex sync = new Mutex();
- try {
- sync.acquireInterruptibly(1);
- } catch(Exception e) {
- unexpectedException();
- }
- Thread t = new Thread(new InterruptedSyncRunnable(sync));
- try {
- t.start();
- t.interrupt();
- assertTrue(sync.isHeldExclusively());
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * owns is true for a condition created by sync else false
- */
- public void testOwns() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- final Mutex sync2 = new Mutex();
- assertTrue(sync.owns(c));
- assertFalse(sync2.owns(c));
- }
-
- /**
- * Calling await without holding sync throws IllegalMonitorStateException
- */
- public void testAwait_IllegalMonitor() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- try {
- c.await();
- shouldThrow();
- }
- catch (IllegalMonitorStateException success) {
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * Calling signal without holding sync throws IllegalMonitorStateException
- */
- public void testSignal_IllegalMonitor() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- try {
- c.signal();
- shouldThrow();
- }
- catch (IllegalMonitorStateException success) {
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitNanos without a signal times out
- */
- public void testAwaitNanos_Timeout() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- try {
- sync.acquire(1);
- long t = c.awaitNanos(100);
- assertTrue(t <= 0);
- sync.release(1);
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * Timed await without a signal times out
- */
- public void testAwait_Timeout() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- try {
- sync.acquire(1);
- assertFalse(c.await(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- sync.release(1);
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitUntil without a signal times out
- */
- public void testAwaitUntil_Timeout() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- try {
- sync.acquire(1);
- java.util.Date d = new java.util.Date();
- assertFalse(c.awaitUntil(new java.util.Date(d.getTime() + 10)));
- sync.release(1);
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * await returns when signalled
- */
- public void testAwait() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- c.await();
- sync.release(1);
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- sync.acquire(1);
- c.signal();
- sync.release(1);
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
-
- /**
- * hasWaiters throws NPE if null
- */
- public void testHasWaitersNPE() {
- final Mutex sync = new Mutex();
- try {
- sync.hasWaiters(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitQueueLength throws NPE if null
- */
- public void testGetWaitQueueLengthNPE() {
- final Mutex sync = new Mutex();
- try {
- sync.getWaitQueueLength(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitingThreads throws NPE if null
- */
- public void testGetWaitingThreadsNPE() {
- final Mutex sync = new Mutex();
- try {
- sync.getWaitingThreads(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * hasWaiters throws IAE if not owned
- */
- public void testHasWaitersIAE() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = (sync.newCondition());
- final Mutex sync2 = new Mutex();
- try {
- sync2.hasWaiters(c);
- shouldThrow();
- } catch (IllegalArgumentException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * hasWaiters throws IMSE if not synced
- */
- public void testHasWaitersIMSE() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = (sync.newCondition());
- try {
- sync.hasWaiters(c);
- shouldThrow();
- } catch (IllegalMonitorStateException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitQueueLength throws IAE if not owned
- */
- public void testGetWaitQueueLengthIAE() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = (sync.newCondition());
- final Mutex sync2 = new Mutex();
- try {
- sync2.getWaitQueueLength(c);
- shouldThrow();
- } catch (IllegalArgumentException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitQueueLength throws IMSE if not synced
- */
- public void testGetWaitQueueLengthIMSE() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = (sync.newCondition());
- try {
- sync.getWaitQueueLength(c);
- shouldThrow();
- } catch (IllegalMonitorStateException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitingThreads throws IAE if not owned
- */
- public void testGetWaitingThreadsIAE() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = (sync.newCondition());
- final Mutex sync2 = new Mutex();
- try {
- sync2.getWaitingThreads(c);
- shouldThrow();
- } catch (IllegalArgumentException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitingThreads throws IMSE if not synced
- */
- public void testGetWaitingThreadsIMSE() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = (sync.newCondition());
- try {
- sync.getWaitingThreads(c);
- shouldThrow();
- } catch (IllegalMonitorStateException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
-
- /**
- * hasWaiters returns true when a thread is waiting, else false
- */
- public void testHasWaiters() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- threadAssertFalse(sync.hasWaiters(c));
- threadAssertEquals(0, sync.getWaitQueueLength(c));
- c.await();
- sync.release(1);
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- sync.acquire(1);
- assertTrue(sync.hasWaiters(c));
- assertEquals(1, sync.getWaitQueueLength(c));
- c.signal();
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- sync.acquire(1);
- assertFalse(sync.hasWaiters(c));
- assertEquals(0, sync.getWaitQueueLength(c));
- sync.release(1);
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitQueueLength returns number of waiting threads
- */
- public void testGetWaitQueueLength() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- threadAssertFalse(sync.hasWaiters(c));
- threadAssertEquals(0, sync.getWaitQueueLength(c));
- c.await();
- sync.release(1);
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- threadAssertTrue(sync.hasWaiters(c));
- threadAssertEquals(1, sync.getWaitQueueLength(c));
- c.await();
- sync.release(1);
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- sync.acquire(1);
- assertTrue(sync.hasWaiters(c));
- assertEquals(2, sync.getWaitQueueLength(c));
- c.signalAll();
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- sync.acquire(1);
- assertFalse(sync.hasWaiters(c));
- assertEquals(0, sync.getWaitQueueLength(c));
- sync.release(1);
- t1.join(SHORT_DELAY_MS);
- t2.join(SHORT_DELAY_MS);
- assertFalse(t1.isAlive());
- assertFalse(t2.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitingThreads returns only and all waiting threads
- */
- public void testGetWaitingThreads() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- threadAssertTrue(sync.getWaitingThreads(c).isEmpty());
- c.await();
- sync.release(1);
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- threadAssertFalse(sync.getWaitingThreads(c).isEmpty());
- c.await();
- sync.release(1);
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- sync.acquire(1);
- assertTrue(sync.getWaitingThreads(c).isEmpty());
- sync.release(1);
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- sync.acquire(1);
- assertTrue(sync.hasWaiters(c));
- assertTrue(sync.getWaitingThreads(c).contains(t1));
- assertTrue(sync.getWaitingThreads(c).contains(t2));
- c.signalAll();
- sync.release(1);
- Thread.sleep(SHORT_DELAY_MS);
- sync.acquire(1);
- assertFalse(sync.hasWaiters(c));
- assertTrue(sync.getWaitingThreads(c).isEmpty());
- sync.release(1);
- t1.join(SHORT_DELAY_MS);
- t2.join(SHORT_DELAY_MS);
- assertFalse(t1.isAlive());
- assertFalse(t2.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
-
- /**
- * awaitUninterruptibly doesn't abort on interrupt
- */
- public void testAwaitUninterruptibly() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- sync.acquire(1);
- c.awaitUninterruptibly();
- sync.release(1);
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- sync.acquire(1);
- c.signal();
- sync.release(1);
- assert(t.isInterrupted());
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * await is interruptible
- */
- public void testAwait_Interrupt() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- c.await();
- sync.release(1);
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitNanos is interruptible
- */
- public void testAwaitNanos_Interrupt() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- c.awaitNanos(1000 * 1000 * 1000); // 1 sec
- sync.release(1);
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitUntil is interruptible
- */
- public void testAwaitUntil_Interrupt() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- java.util.Date d = new java.util.Date();
- c.awaitUntil(new java.util.Date(d.getTime() + 10000));
- sync.release(1);
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * signalAll wakes up all threads
- */
- public void testSignalAll() {
- final Mutex sync = new Mutex();
- final AbstractQueuedSynchronizer.ConditionObject c = sync.newCondition();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- c.await();
- sync.release(1);
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- sync.acquire(1);
- c.await();
- sync.release(1);
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- sync.acquire(1);
- c.signalAll();
- sync.release(1);
- t1.join(SHORT_DELAY_MS);
- t2.join(SHORT_DELAY_MS);
- assertFalse(t1.isAlive());
- assertFalse(t2.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * toString indicates current state
- */
- public void testToString() {
- Mutex sync = new Mutex();
- String us = sync.toString();
- assertTrue(us.indexOf("State = 0") >= 0);
- sync.acquire(1);
- String ls = sync.toString();
- assertTrue(ls.indexOf("State = 1") >= 0);
- }
-
- /**
- * A serialized AQS deserializes with current state
- */
- public void testSerialization() {
- Mutex l = new Mutex();
- l.acquire(1);
- assertTrue(l.isHeldExclusively());
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- Mutex r = (Mutex) in.readObject();
- assertTrue(r.isHeldExclusively());
- } catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
-
- /**
- * tryReleaseShared setting state changes getState
- */
- public void testGetStateWithReleaseShared() {
- final BooleanLatch l = new BooleanLatch();
- assertFalse(l.isSignalled());
- l.releaseShared(0);
- assertTrue(l.isSignalled());
- }
-
- /**
- * releaseShared has no effect when already signalled
- */
- public void testReleaseShared() {
- final BooleanLatch l = new BooleanLatch();
- assertFalse(l.isSignalled());
- l.releaseShared(0);
- assertTrue(l.isSignalled());
- l.releaseShared(0);
- assertTrue(l.isSignalled());
- }
-
- /**
- * acquireSharedInterruptibly returns after release, but not before
- */
- public void testAcquireSharedInterruptibly() {
- final BooleanLatch l = new BooleanLatch();
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertFalse(l.isSignalled());
- l.acquireSharedInterruptibly(0);
- threadAssertTrue(l.isSignalled());
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- assertFalse(l.isSignalled());
- Thread.sleep(SHORT_DELAY_MS);
- l.releaseShared(0);
- assertTrue(l.isSignalled());
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
-
- /**
- * acquireSharedTimed returns after release
- */
- public void testAsquireSharedTimed() {
- final BooleanLatch l = new BooleanLatch();
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertFalse(l.isSignalled());
- threadAssertTrue(l.tryAcquireSharedNanos(0, MEDIUM_DELAY_MS* 1000 * 1000));
- threadAssertTrue(l.isSignalled());
-
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- assertFalse(l.isSignalled());
- Thread.sleep(SHORT_DELAY_MS);
- l.releaseShared(0);
- assertTrue(l.isSignalled());
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * acquireSharedInterruptibly throws IE if interrupted before released
- */
- public void testAcquireSharedInterruptibly_InterruptedException() {
- final BooleanLatch l = new BooleanLatch();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertFalse(l.isSignalled());
- l.acquireSharedInterruptibly(0);
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- t.start();
- try {
- assertFalse(l.isSignalled());
- t.interrupt();
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * acquireSharedTimed throws IE if interrupted before released
- */
- public void testAcquireSharedNanos_InterruptedException() {
- final BooleanLatch l = new BooleanLatch();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertFalse(l.isSignalled());
- l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000);
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(l.isSignalled());
- t.interrupt();
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * acquireSharedTimed times out if not released before timeout
- */
- public void testAcquireSharedNanos_Timeout() {
- final BooleanLatch l = new BooleanLatch();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertFalse(l.isSignalled());
- threadAssertFalse(l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000));
- } catch(InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(l.isSignalled());
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ArrayBlockingQueueTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ArrayBlockingQueueTest.java
deleted file mode 100755
index da6988f..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ArrayBlockingQueueTest.java
+++ /dev/null
@@ -1,1045 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class ArrayBlockingQueueTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(ArrayBlockingQueueTest.class);
- }
-
- /**
- * Create a queue of given size containing consecutive
- * Integers 0 ... n.
- */
- private ArrayBlockingQueue populatedQueue(int n) {
- ArrayBlockingQueue q = new ArrayBlockingQueue(n);
- assertTrue(q.isEmpty());
- for(int i = 0; i < n; i++)
- assertTrue(q.offer(new Integer(i)));
- assertFalse(q.isEmpty());
- assertEquals(0, q.remainingCapacity());
- assertEquals(n, q.size());
- return q;
- }
-
- /**
- * A new queue has the indicated capacity
- */
- public void testConstructor1() {
- assertEquals(SIZE, new ArrayBlockingQueue(SIZE).remainingCapacity());
- }
-
- /**
- * Constructor throws IAE if capacity argument nonpositive
- */
- public void testConstructor2() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(0);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * Initializing from null Collection throws NPE
- */
- public void testConstructor3() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(1, true, null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection of null elements throws NPE
- */
- public void testConstructor4() {
- try {
- Integer[] ints = new Integer[SIZE];
- ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE, false, Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection with some null elements throws NPE
- */
- public void testConstructor5() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE, false, Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from too large collection throws IAE
- */
- public void testConstructor6() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- ArrayBlockingQueue q = new ArrayBlockingQueue(1, false, Arrays.asList(ints));
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * Queue contains all elements of collection used to initialize
- */
- public void testConstructor7() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE, true, Arrays.asList(ints));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * Queue transitions from empty to full when elements added
- */
- public void testEmptyFull() {
- ArrayBlockingQueue q = new ArrayBlockingQueue(2);
- assertTrue(q.isEmpty());
- assertEquals(2, q.remainingCapacity());
- q.add(one);
- assertFalse(q.isEmpty());
- q.add(two);
- assertFalse(q.isEmpty());
- assertEquals(0, q.remainingCapacity());
- assertFalse(q.offer(three));
- }
-
- /**
- * remainingCapacity decreases on add, increases on remove
- */
- public void testRemainingCapacity() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.remainingCapacity());
- assertEquals(SIZE-i, q.size());
- q.remove();
- }
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(SIZE-i, q.remainingCapacity());
- assertEquals(i, q.size());
- q.add(new Integer(i));
- }
- }
-
- /**
- * offer(null) throws NPE
- */
- public void testOfferNull() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(1);
- q.offer(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * add(null) throws NPE
- */
- public void testAddNull() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(1);
- q.add(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * Offer succeeds if not full; fails if full
- */
- public void testOffer() {
- ArrayBlockingQueue q = new ArrayBlockingQueue(1);
- assertTrue(q.offer(zero));
- assertFalse(q.offer(one));
- }
-
- /**
- * add succeeds if not full; throws ISE if full
- */
- public void testAdd() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.add(new Integer(i)));
- }
- assertEquals(0, q.remainingCapacity());
- q.add(new Integer(SIZE));
- } catch (IllegalStateException success){
- }
- }
-
- /**
- * addAll(null) throws NPE
- */
- public void testAddAll1() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(1);
- q.addAll(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * addAll(this) throws IAE
- */
- public void testAddAllSelf() {
- try {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- q.addAll(q);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
-
- /**
- * addAll of a collection with null elements throws NPE
- */
- public void testAddAll2() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll of a collection with any null elements throws NPE after
- * possibly adding some elements
- */
- public void testAddAll3() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll throws ISE if not enough room
- */
- public void testAddAll4() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(1);
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (IllegalStateException success) {}
- }
- /**
- * Queue contains all elements, in traversal order, of successful addAll
- */
- public void testAddAll5() {
- try {
- Integer[] empty = new Integer[0];
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
- assertFalse(q.addAll(Arrays.asList(empty)));
- assertTrue(q.addAll(Arrays.asList(ints)));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * put(null) throws NPE
- */
- public void testPutNull() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
- q.put(null);
- shouldThrow();
- }
- catch (NullPointerException success){
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * all elements successfully put are contained
- */
- public void testPut() {
- try {
- ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- Integer I = new Integer(i);
- q.put(I);
- assertTrue(q.contains(I));
- }
- assertEquals(0, q.remainingCapacity());
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * put blocks interruptibly if full
- */
- public void testBlockingPut() {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
- Thread t = new Thread(new Runnable() {
- public void run() {
- int added = 0;
- try {
- for (int i = 0; i < SIZE; ++i) {
- q.put(new Integer(i));
- ++added;
- }
- q.put(new Integer(SIZE));
- threadShouldThrow();
- } catch (InterruptedException ie){
- threadAssertEquals(added, SIZE);
- }
- }});
- try {
- t.start();
- Thread.sleep(MEDIUM_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * put blocks waiting for take when full
- */
- public void testPutWithTake() {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- int added = 0;
- try {
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- threadShouldThrow();
- } catch (InterruptedException e){
- threadAssertTrue(added >= 2);
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- q.take();
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * timed offer times out if full and elements not taken
- */
- public void testTimedOffer() {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.put(new Object());
- q.put(new Object());
- threadAssertFalse(q.offer(new Object(), SHORT_DELAY_MS/2, TimeUnit.MILLISECONDS));
- q.offer(new Object(), LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch (InterruptedException success){}
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * take retrieves elements in FIFO order
- */
- public void testTake() {
- try {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.take()).intValue());
- }
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * take blocks interruptibly when empty
- */
- public void testTakeFromEmpty() {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){ }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Take removes existing elements until empty, then blocks interruptibly
- */
- public void testBlockingTake() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- threadAssertEquals(i, ((Integer)q.take()).intValue());
- }
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){
- }
- }});
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
-
- /**
- * poll succeeds unless empty
- */
- public void testPoll() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll()).intValue());
- }
- assertNull(q.poll());
- }
-
- /**
- * timed pool with zero timeout succeeds when non-empty, else times out
- */
- public void testTimedPoll0() {
- try {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll(0, TimeUnit.MILLISECONDS)).intValue());
- }
- assertNull(q.poll(0, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * timed pool with nonzero timeout succeeds when non-empty, else times out
- */
- public void testTimedPoll() {
- try {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)).intValue());
- }
- assertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * Interrupted timed poll throws InterruptedException instead of
- * returning timeout status
- */
- public void testInterruptedTimedPoll() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- threadAssertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)).intValue());
- }
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException success){
- }
- }});
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * timed poll before a delayed offer fails; after offer succeeds;
- * on interruption throws
- */
- public void testTimedPollWithOffer() {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch (InterruptedException success) { }
- }
- });
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- assertTrue(q.offer(zero, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * peek returns next element, or null if empty
- */
- public void testPeek() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.peek()).intValue());
- q.poll();
- assertTrue(q.peek() == null ||
- i != ((Integer)q.peek()).intValue());
- }
- assertNull(q.peek());
- }
-
- /**
- * element returns next element, or throws NSEE if empty
- */
- public void testElement() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.element()).intValue());
- q.poll();
- }
- try {
- q.element();
- shouldThrow();
- }
- catch (NoSuchElementException success) {}
- }
-
- /**
- * remove removes next element, or throws NSEE if empty
- */
- public void testRemove() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.remove()).intValue());
- }
- try {
- q.remove();
- shouldThrow();
- } catch (NoSuchElementException success){
- }
- }
-
- /**
- * remove(x) removes x and returns true if present
- */
- public void testRemoveElement() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 1; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- }
- for (int i = 0; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- assertFalse(q.remove(new Integer(i+1)));
- }
- assertTrue(q.isEmpty());
- }
-
- /**
- * contains(x) reports true when elements added but not yet removed
- */
- public void testContains() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.contains(new Integer(i)));
- q.poll();
- assertFalse(q.contains(new Integer(i)));
- }
- }
-
- /**
- * clear removes all elements
- */
- public void testClear() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- q.clear();
- assertTrue(q.isEmpty());
- assertEquals(0, q.size());
- assertEquals(SIZE, q.remainingCapacity());
- q.add(one);
- assertFalse(q.isEmpty());
- q.clear();
- assertTrue(q.isEmpty());
- }
-
- /**
- * containsAll(c) is true when c contains a subset of elements
- */
- public void testContainsAll() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- ArrayBlockingQueue p = new ArrayBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.containsAll(p));
- assertFalse(p.containsAll(q));
- p.add(new Integer(i));
- }
- assertTrue(p.containsAll(q));
- }
-
- /**
- * retainAll(c) retains only those elements of c and reports true if changed
- */
- public void testRetainAll() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- ArrayBlockingQueue p = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- boolean changed = q.retainAll(p);
- if (i == 0)
- assertFalse(changed);
- else
- assertTrue(changed);
-
- assertTrue(q.containsAll(p));
- assertEquals(SIZE-i, q.size());
- p.remove();
- }
- }
-
- /**
- * removeAll(c) removes only those elements of c and reports true if changed
- */
- public void testRemoveAll() {
- for (int i = 1; i < SIZE; ++i) {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- ArrayBlockingQueue p = populatedQueue(i);
- assertTrue(q.removeAll(p));
- assertEquals(SIZE-i, q.size());
- for (int j = 0; j < i; ++j) {
- Integer I = (Integer)(p.remove());
- assertFalse(q.contains(I));
- }
- }
- }
-
- /**
- * toArray contains all elements
- */
- public void testToArray() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- Object[] o = q.toArray();
- try {
- for(int i = 0; i < o.length; i++)
- assertEquals(o[i], q.take());
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * toArray(a) contains all elements
- */
- public void testToArray2() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- ints = (Integer[])q.toArray(ints);
- try {
- for(int i = 0; i < ints.length; i++)
- assertEquals(ints[i], q.take());
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * toArray(null) throws NPE
- */
- public void testToArray_BadArg() {
- try {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(null);
- shouldThrow();
- } catch(NullPointerException success){}
- }
-
- /**
- * toArray with incompatible array type throws CCE
- */
- public void testToArray1_BadArg() {
- try {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(new String[10] );
- shouldThrow();
- } catch(ArrayStoreException success){}
- }
-
-
- /**
- * iterator iterates through all elements
- */
- public void testIterator() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- Iterator it = q.iterator();
- try {
- while(it.hasNext()){
- assertEquals(it.next(), q.take());
- }
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * iterator.remove removes current element
- */
- public void testIteratorRemove () {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(3);
- q.add(two);
- q.add(one);
- q.add(three);
-
- Iterator it = q.iterator();
- it.next();
- it.remove();
-
- it = q.iterator();
- assertEquals(it.next(), one);
- assertEquals(it.next(), three);
- assertFalse(it.hasNext());
- }
-
- /**
- * iterator ordering is FIFO
- */
- public void testIteratorOrdering() {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(3);
- q.add(one);
- q.add(two);
- q.add(three);
-
- assertEquals("queue should be full", 0, q.remainingCapacity());
-
- int k = 0;
- for (Iterator it = q.iterator(); it.hasNext();) {
- int i = ((Integer)(it.next())).intValue();
- assertEquals(++k, i);
- }
- assertEquals(3, k);
- }
-
- /**
- * Modifications do not cause iterators to fail
- */
- public void testWeaklyConsistentIteration () {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(3);
- q.add(one);
- q.add(two);
- q.add(three);
- try {
- for (Iterator it = q.iterator(); it.hasNext();) {
- q.remove();
- it.next();
- }
- }
- catch (ConcurrentModificationException e) {
- unexpectedException();
- }
- assertEquals(0, q.size());
- }
-
-
- /**
- * toString contains toStrings of elements
- */
- public void testToString() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- String s = q.toString();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(s.indexOf(String.valueOf(i)) >= 0);
- }
- }
-
-
- /**
- * offer transfers elements across Executor tasks
- */
- public void testOfferInExecutor() {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(2);
- q.add(one);
- q.add(two);
- ExecutorService executor = Executors.newFixedThreadPool(2);
- executor.execute(new Runnable() {
- public void run() {
- threadAssertFalse(q.offer(three));
- try {
- threadAssertTrue(q.offer(three, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertEquals(0, q.remainingCapacity());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- executor.execute(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- threadAssertEquals(one, q.take());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- joinPool(executor);
-
- }
-
- /**
- * poll retrieves elements across Executor threads
- */
- public void testPollInExecutor() {
- final ArrayBlockingQueue q = new ArrayBlockingQueue(2);
- ExecutorService executor = Executors.newFixedThreadPool(2);
- executor.execute(new Runnable() {
- public void run() {
- threadAssertNull(q.poll());
- try {
- threadAssertTrue(null != q.poll(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(q.isEmpty());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- executor.execute(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- q.put(one);
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- joinPool(executor);
- }
-
- /**
- * A deserialized serialized queue has same elements in same order
- */
- public void testSerialization() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- ArrayBlockingQueue r = (ArrayBlockingQueue)in.readObject();
- assertEquals(q.size(), r.size());
- while (!q.isEmpty())
- assertEquals(q.remove(), r.remove());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainTo(null) throws NPE
- */
- public void testDrainToNull() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(null);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this) throws IAE
- */
- public void testDrainToSelf() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(q);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c) empties queue into another collection c
- */
- public void testDrainTo() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- ArrayList l = new ArrayList();
- q.drainTo(l);
- assertEquals(q.size(), 0);
- assertEquals(l.size(), SIZE);
- for (int i = 0; i < SIZE; ++i)
- assertEquals(l.get(i), new Integer(i));
- }
-
- /**
- * drainTo empties full queue, unblocking a waiting put.
- */
- public void testDrainToWithActivePut() {
- final ArrayBlockingQueue q = populatedQueue(SIZE);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.put(new Integer(SIZE+1));
- } catch (InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- ArrayList l = new ArrayList();
- q.drainTo(l);
- assertTrue(l.size() >= SIZE);
- for (int i = 0; i < SIZE; ++i)
- assertEquals(l.get(i), new Integer(i));
- t.join();
- assertTrue(q.size() + l.size() >= SIZE);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainTo(null, n) throws NPE
- */
- public void testDrainToNullN() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(null, 0);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this, n) throws IAE
- */
- public void testDrainToSelfN() {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(q, 0);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c, n) empties first max {n, size} elements of queue into c
- */
- public void testDrainToN() {
- for (int i = 0; i < SIZE + 2; ++i) {
- ArrayBlockingQueue q = populatedQueue(SIZE);
- ArrayList l = new ArrayList();
- q.drainTo(l, i);
- int k = (i < SIZE)? i : SIZE;
- assertEquals(q.size(), SIZE-k);
- assertEquals(l.size(), k);
- for (int j = 0; j < k; ++j)
- assertEquals(l.get(j), new Integer(j));
- }
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicBooleanTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicBooleanTest.java
deleted file mode 100755
index 230357a..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicBooleanTest.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.atomic.*;
-import java.io.*;
-
-public class AtomicBooleanTest extends JSR166TestCase {
- public static void main (String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicBooleanTest.class);
- }
-
- /**
- * constructor initializes to given value
- */
- public void testConstructor() {
- AtomicBoolean ai = new AtomicBoolean(true);
- assertEquals(true,ai.get());
- }
-
- /**
- * default constructed initializes to false
- */
- public void testConstructor2() {
- AtomicBoolean ai = new AtomicBoolean();
- assertEquals(false,ai.get());
- }
-
- /**
- * get returns the last value set
- */
- public void testGetSet() {
- AtomicBoolean ai = new AtomicBoolean(true);
- assertEquals(true,ai.get());
- ai.set(false);
- assertEquals(false,ai.get());
- ai.set(true);
- assertEquals(true,ai.get());
-
- }
-
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet() {
- AtomicBoolean ai = new AtomicBoolean(true);
- assertTrue(ai.compareAndSet(true,false));
- assertEquals(false,ai.get());
- assertTrue(ai.compareAndSet(false,false));
- assertEquals(false,ai.get());
- assertFalse(ai.compareAndSet(true,false));
- assertFalse((ai.get()));
- assertTrue(ai.compareAndSet(false,true));
- assertEquals(true,ai.get());
- }
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- final AtomicBoolean ai = new AtomicBoolean(true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!ai.compareAndSet(false, true)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(ai.compareAndSet(true, false));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet() {
- AtomicBoolean ai = new AtomicBoolean(true);
- while(!ai.weakCompareAndSet(true,false));
- assertEquals(false,ai.get());
- while(!ai.weakCompareAndSet(false,false));
- assertEquals(false,ai.get());
- while(!ai.weakCompareAndSet(false,true));
- assertEquals(true,ai.get());
- }
-
- /**
- * getAndSet returns previous value and sets to given value
- */
- public void testGetAndSet() {
- AtomicBoolean ai = new AtomicBoolean(true);
- assertEquals(true,ai.getAndSet(false));
- assertEquals(false,ai.getAndSet(false));
- assertEquals(false,ai.getAndSet(true));
- assertEquals(true,ai.get());
- }
-
- /**
- * a deserialized serialized atomic holds same value
- */
- public void testSerialization() {
- AtomicBoolean l = new AtomicBoolean();
-
- try {
- l.set(true);
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- AtomicBoolean r = (AtomicBoolean) in.readObject();
- assertEquals(l.get(), r.get());
- } catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
- /**
- * toString returns current value.
- */
- public void testToString() {
- AtomicBoolean ai = new AtomicBoolean();
- assertEquals(ai.toString(), Boolean.toString(false));
- ai.set(true);
- assertEquals(ai.toString(), Boolean.toString(true));
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerArrayTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerArrayTest.java
deleted file mode 100644
index cd13fcf..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerArrayTest.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.atomic.*;
-import java.io.*;
-import java.util.*;
-
-public class AtomicIntegerArrayTest extends JSR166TestCase {
-
- public static void main (String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicIntegerArrayTest.class);
- }
-
-
- /**
- * constructor creates array of given size with all elements zero
- */
- public void testConstructor() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i)
- assertEquals(0,ai.get(i));
- }
-
- /**
- * constructor with null array throws NPE
- */
- public void testConstructor2NPE() {
- try {
- int[] a = null;
- AtomicIntegerArray ai = new AtomicIntegerArray(a);
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * constructor with array is of same size and has all elements
- */
- public void testConstructor2() {
- int[] a = { 17, 3, -42, 99, -7};
- AtomicIntegerArray ai = new AtomicIntegerArray(a);
- assertEquals(a.length, ai.length());
- for (int i = 0; i < a.length; ++i)
- assertEquals(a[i], ai.get(i));
- }
-
- /**
- * get and set for out of bound indices throw IndexOutOfBoundsException
- */
- public void testIndexing(){
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- try {
- ai.get(SIZE);
- } catch(IndexOutOfBoundsException success){
- }
- try {
- ai.get(-1);
- } catch(IndexOutOfBoundsException success){
- }
- try {
- ai.set(SIZE, 0);
- } catch(IndexOutOfBoundsException success){
- }
- try {
- ai.set(-1, 0);
- } catch(IndexOutOfBoundsException success){
- }
- }
-
- /**
- * get returns the last value set at index
- */
- public void testGetSet() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.get(i));
- ai.set(i, 2);
- assertEquals(2,ai.get(i));
- ai.set(i, -3);
- assertEquals(-3,ai.get(i));
- }
- }
-
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertTrue(ai.compareAndSet(i, 1,2));
- assertTrue(ai.compareAndSet(i, 2,-4));
- assertEquals(-4,ai.get(i));
- assertFalse(ai.compareAndSet(i, -5,7));
- assertFalse((7 == ai.get(i)));
- assertTrue(ai.compareAndSet(i, -4,7));
- assertEquals(7,ai.get(i));
- }
- }
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- final AtomicIntegerArray a = new AtomicIntegerArray(1);
- a.set(0, 1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!a.compareAndSet(0, 2, 3)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(a.compareAndSet(0, 1, 2));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(a.get(0), 3);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- while(!ai.weakCompareAndSet(i, 1,2));
- while(!ai.weakCompareAndSet(i, 2,-4));
- assertEquals(-4,ai.get(i));
- while(!ai.weakCompareAndSet(i, -4,7));
- assertEquals(7,ai.get(i));
- }
- }
-
- /**
- * getAndSet returns previous value and sets to given value at given index
- */
- public void testGetAndSet() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.getAndSet(i,0));
- assertEquals(0,ai.getAndSet(i,-10));
- assertEquals(-10,ai.getAndSet(i,1));
- }
- }
-
- /**
- * getAndAdd returns previous value and adds given value
- */
- public void testGetAndAdd() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.getAndAdd(i,2));
- assertEquals(3,ai.get(i));
- assertEquals(3,ai.getAndAdd(i,-4));
- assertEquals(-1,ai.get(i));
- }
- }
-
- /**
- * getAndDecrement returns previous value and decrements
- */
- public void testGetAndDecrement() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.getAndDecrement(i));
- assertEquals(0,ai.getAndDecrement(i));
- assertEquals(-1,ai.getAndDecrement(i));
- }
- }
-
- /**
- * getAndIncrement returns previous value and increments
- */
- public void testGetAndIncrement() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.getAndIncrement(i));
- assertEquals(2,ai.get(i));
- ai.set(i,-2);
- assertEquals(-2,ai.getAndIncrement(i));
- assertEquals(-1,ai.getAndIncrement(i));
- assertEquals(0,ai.getAndIncrement(i));
- assertEquals(1,ai.get(i));
- }
- }
-
- /**
- * addAndGet adds given value to current, and returns current value
- */
- public void testAddAndGet() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(3,ai.addAndGet(i,2));
- assertEquals(3,ai.get(i));
- assertEquals(-1,ai.addAndGet(i,-4));
- assertEquals(-1,ai.get(i));
- }
- }
-
- /**
- * decrementAndGet decrements and returns current value
- */
- public void testDecrementAndGet() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(0,ai.decrementAndGet(i));
- assertEquals(-1,ai.decrementAndGet(i));
- assertEquals(-2,ai.decrementAndGet(i));
- assertEquals(-2,ai.get(i));
- }
- }
-
- /**
- * incrementAndGet increments and returns current value
- */
- public void testIncrementAndGet() {
- AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(2,ai.incrementAndGet(i));
- assertEquals(2,ai.get(i));
- ai.set(i, -2);
- assertEquals(-1,ai.incrementAndGet(i));
- assertEquals(0,ai.incrementAndGet(i));
- assertEquals(1,ai.incrementAndGet(i));
- assertEquals(1,ai.get(i));
- }
- }
-
- static final int COUNTDOWN = 100000;
-
- class Counter implements Runnable {
- final AtomicIntegerArray ai;
- volatile int counts;
- Counter(AtomicIntegerArray a) { ai = a; }
- public void run() {
- for (;;) {
- boolean done = true;
- for (int i = 0; i < ai.length(); ++i) {
- int v = ai.get(i);
- threadAssertTrue(v >= 0);
- if (v != 0) {
- done = false;
- if (ai.compareAndSet(i, v, v-1))
- ++counts;
- }
- }
- if (done)
- break;
- }
- }
- }
-
- /**
- * Multiple threads using same array of counters successfully
- * update a number of times equal to total count
- */
- public void testCountingInMultipleThreads() {
- try {
- final AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i)
- ai.set(i, COUNTDOWN);
- Counter c1 = new Counter(ai);
- Counter c2 = new Counter(ai);
- Thread t1 = new Thread(c1);
- Thread t2 = new Thread(c2);
- t1.start();
- t2.start();
- t1.join();
- t2.join();
- assertEquals(c1.counts+c2.counts, SIZE * COUNTDOWN);
- }
- catch(InterruptedException ie) {
- unexpectedException();
- }
- }
-
-
- /**
- * a deserialized serialized array holds same values
- */
- public void testSerialization() {
- AtomicIntegerArray l = new AtomicIntegerArray(SIZE);
- for (int i = 0; i < SIZE; ++i)
- l.set(i, -i);
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- AtomicIntegerArray r = (AtomicIntegerArray) in.readObject();
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(l.get(i), r.get(i));
- }
- } catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
-
- /**
- * toString returns current value.
- */
- public void testToString() {
- int[] a = { 17, 3, -42, 99, -7};
- AtomicIntegerArray ai = new AtomicIntegerArray(a);
- assertEquals(Arrays.toString(a), ai.toString());
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerFieldUpdaterTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerFieldUpdaterTest.java
deleted file mode 100755
index 03fd2c8..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerFieldUpdaterTest.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import java.util.concurrent.atomic.*;
-import junit.framework.*;
-import java.util.*;
-
-public class AtomicIntegerFieldUpdaterTest extends JSR166TestCase {
- volatile int x = 0;
- int w;
- long z;
- public static void main(String[] args){
- junit.textui.TestRunner.run(suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicIntegerFieldUpdaterTest.class);
- }
-
- /**
- * Construction with non-existent field throws RuntimeException
- */
- public void testConstructor() {
- try{
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest>
- a = AtomicIntegerFieldUpdater.newUpdater
- (AtomicIntegerFieldUpdaterTest.class, "y");
- shouldThrow();
- }
- catch (RuntimeException rt) {}
- }
-
- /**
- * construction with field not of given type throws RuntimeException
- */
- public void testConstructor2() {
- try{
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest>
- a = AtomicIntegerFieldUpdater.newUpdater
- (AtomicIntegerFieldUpdaterTest.class, "z");
- shouldThrow();
- }
- catch (RuntimeException rt) {}
- }
-
- /**
- * construction with non-volatile field throws RuntimeException
- */
- public void testConstructor3() {
- try{
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest>
- a = AtomicIntegerFieldUpdater.newUpdater
- (AtomicIntegerFieldUpdaterTest.class, "w");
- shouldThrow();
- }
- catch (RuntimeException rt) {}
- }
-
- /**
- * get returns the last value set or assigned
- */
- public void testGetSet() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.get(this));
- a.set(this,2);
- assertEquals(2,a.get(this));
- a.set(this,-3);
- assertEquals(-3,a.get(this));
-
- }
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertTrue(a.compareAndSet(this,1,2));
- assertTrue(a.compareAndSet(this,2,-4));
- assertEquals(-4,a.get(this));
- assertFalse(a.compareAndSet(this,-5,7));
- assertFalse((7 == a.get(this)));
- assertTrue(a.compareAndSet(this,-4,7));
- assertEquals(7,a.get(this));
- }
-
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- x = 1;
- final AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest>a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!a.compareAndSet(AtomicIntegerFieldUpdaterTest.this, 2, 3)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(a.compareAndSet(this, 1, 2));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(a.get(this), 3);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- while(!a.weakCompareAndSet(this,1,2));
- while(!a.weakCompareAndSet(this,2,-4));
- assertEquals(-4,a.get(this));
- while(!a.weakCompareAndSet(this,-4,7));
- assertEquals(7,a.get(this));
- }
-
- /**
- * getAndSet returns previous value and sets to given value
- */
- public void testGetAndSet() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.getAndSet(this, 0));
- assertEquals(0,a.getAndSet(this,-10));
- assertEquals(-10,a.getAndSet(this,1));
- }
-
- /**
- * getAndAdd returns previous value and adds given value
- */
- public void testGetAndAdd() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.getAndAdd(this,2));
- assertEquals(3,a.get(this));
- assertEquals(3,a.getAndAdd(this,-4));
- assertEquals(-1,a.get(this));
- }
-
- /**
- * getAndDecrement returns previous value and decrements
- */
- public void testGetAndDecrement() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.getAndDecrement(this));
- assertEquals(0,a.getAndDecrement(this));
- assertEquals(-1,a.getAndDecrement(this));
- }
-
- /**
- * getAndIncrement returns previous value and increments
- */
- public void testGetAndIncrement() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.getAndIncrement(this));
- assertEquals(2,a.get(this));
- a.set(this,-2);
- assertEquals(-2,a.getAndIncrement(this));
- assertEquals(-1,a.getAndIncrement(this));
- assertEquals(0,a.getAndIncrement(this));
- assertEquals(1,a.get(this));
- }
-
- /**
- * addAndGet adds given value to current, and returns current value
- */
- public void testAddAndGet() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(3,a.addAndGet(this,2));
- assertEquals(3,a.get(this));
- assertEquals(-1,a.addAndGet(this,-4));
- assertEquals(-1,a.get(this));
- }
-
- /**
- * decrementAndGet decrements and returns current value
- */
- public void testDecrementAndGet() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(0,a.decrementAndGet(this));
- assertEquals(-1,a.decrementAndGet(this));
- assertEquals(-2,a.decrementAndGet(this));
- assertEquals(-2,a.get(this));
- }
-
- /**
- * incrementAndGet increments and returns current value
- */
- public void testIncrementAndGet() {
- AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a;
- try {
- a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(2,a.incrementAndGet(this));
- assertEquals(2,a.get(this));
- a.set(this,-2);
- assertEquals(-1,a.incrementAndGet(this));
- assertEquals(0,a.incrementAndGet(this));
- assertEquals(1,a.incrementAndGet(this));
- assertEquals(1,a.get(this));
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerTest.java
deleted file mode 100755
index 1771d80..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicIntegerTest.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.atomic.*;
-import java.io.*;
-
-public class AtomicIntegerTest extends JSR166TestCase {
- public static void main (String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicIntegerTest.class);
- }
-
- /**
- * constructor initializes to given value
- */
- public void testConstructor(){
- AtomicInteger ai = new AtomicInteger(1);
- assertEquals(1,ai.get());
- }
-
- /**
- * default constructed initializes to zero
- */
- public void testConstructor2(){
- AtomicInteger ai = new AtomicInteger();
- assertEquals(0,ai.get());
- }
-
- /**
- * get returns the last value set
- */
- public void testGetSet(){
- AtomicInteger ai = new AtomicInteger(1);
- assertEquals(1,ai.get());
- ai.set(2);
- assertEquals(2,ai.get());
- ai.set(-3);
- assertEquals(-3,ai.get());
-
- }
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet(){
- AtomicInteger ai = new AtomicInteger(1);
- assertTrue(ai.compareAndSet(1,2));
- assertTrue(ai.compareAndSet(2,-4));
- assertEquals(-4,ai.get());
- assertFalse(ai.compareAndSet(-5,7));
- assertFalse((7 == ai.get()));
- assertTrue(ai.compareAndSet(-4,7));
- assertEquals(7,ai.get());
- }
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- final AtomicInteger ai = new AtomicInteger(1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!ai.compareAndSet(2, 3)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(ai.compareAndSet(1, 2));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(ai.get(), 3);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet(){
- AtomicInteger ai = new AtomicInteger(1);
- while(!ai.weakCompareAndSet(1,2));
- while(!ai.weakCompareAndSet(2,-4));
- assertEquals(-4,ai.get());
- while(!ai.weakCompareAndSet(-4,7));
- assertEquals(7,ai.get());
- }
-
- /**
- * getAndSet returns previous value and sets to given value
- */
- public void testGetAndSet(){
- AtomicInteger ai = new AtomicInteger(1);
- assertEquals(1,ai.getAndSet(0));
- assertEquals(0,ai.getAndSet(-10));
- assertEquals(-10,ai.getAndSet(1));
- }
-
- /**
- * getAndAdd returns previous value and adds given value
- */
- public void testGetAndAdd(){
- AtomicInteger ai = new AtomicInteger(1);
- assertEquals(1,ai.getAndAdd(2));
- assertEquals(3,ai.get());
- assertEquals(3,ai.getAndAdd(-4));
- assertEquals(-1,ai.get());
- }
-
- /**
- * getAndDecrement returns previous value and decrements
- */
- public void testGetAndDecrement(){
- AtomicInteger ai = new AtomicInteger(1);
- assertEquals(1,ai.getAndDecrement());
- assertEquals(0,ai.getAndDecrement());
- assertEquals(-1,ai.getAndDecrement());
- }
-
- /**
- * getAndIncrement returns previous value and increments
- */
- public void testGetAndIncrement(){
- AtomicInteger ai = new AtomicInteger(1);
- assertEquals(1,ai.getAndIncrement());
- assertEquals(2,ai.get());
- ai.set(-2);
- assertEquals(-2,ai.getAndIncrement());
- assertEquals(-1,ai.getAndIncrement());
- assertEquals(0,ai.getAndIncrement());
- assertEquals(1,ai.get());
- }
-
- /**
- * addAndGet adds given value to current, and returns current value
- */
- public void testAddAndGet(){
- AtomicInteger ai = new AtomicInteger(1);
- assertEquals(3,ai.addAndGet(2));
- assertEquals(3,ai.get());
- assertEquals(-1,ai.addAndGet(-4));
- assertEquals(-1,ai.get());
- }
-
- /**
- * decrementAndGet decrements and returns current value
- */
- public void testDecrementAndGet(){
- AtomicInteger ai = new AtomicInteger(1);
- assertEquals(0,ai.decrementAndGet());
- assertEquals(-1,ai.decrementAndGet());
- assertEquals(-2,ai.decrementAndGet());
- assertEquals(-2,ai.get());
- }
-
- /**
- * incrementAndGet increments and returns current value
- */
- public void testIncrementAndGet(){
- AtomicInteger ai = new AtomicInteger(1);
- assertEquals(2,ai.incrementAndGet());
- assertEquals(2,ai.get());
- ai.set(-2);
- assertEquals(-1,ai.incrementAndGet());
- assertEquals(0,ai.incrementAndGet());
- assertEquals(1,ai.incrementAndGet());
- assertEquals(1,ai.get());
- }
-
- /**
- * a deserialized serialized atomic holds same value
- */
- public void testSerialization() {
- AtomicInteger l = new AtomicInteger();
-
- try {
- l.set(22);
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- AtomicInteger r = (AtomicInteger) in.readObject();
- assertEquals(l.get(), r.get());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * toString returns current value.
- */
- public void testToString() {
- AtomicInteger ai = new AtomicInteger();
- for (int i = -12; i < 6; ++i) {
- ai.set(i);
- assertEquals(ai.toString(), Integer.toString(i));
- }
- }
-
- /**
- * intValue returns current value.
- */
- public void testIntValue() {
- AtomicInteger ai = new AtomicInteger();
- for (int i = -12; i < 6; ++i) {
- ai.set(i);
- assertEquals(i, ai.intValue());
- }
- }
-
-
- /**
- * longValue returns current value.
- */
- public void testLongValue() {
- AtomicInteger ai = new AtomicInteger();
- for (int i = -12; i < 6; ++i) {
- ai.set(i);
- assertEquals((long)i, ai.longValue());
- }
- }
-
- /**
- * floatValue returns current value.
- */
- public void testFloatValue() {
- AtomicInteger ai = new AtomicInteger();
- for (int i = -12; i < 6; ++i) {
- ai.set(i);
- assertEquals((float)i, ai.floatValue());
- }
- }
-
- /**
- * doubleValue returns current value.
- */
- public void testDoubleValue() {
- AtomicInteger ai = new AtomicInteger();
- for (int i = -12; i < 6; ++i) {
- ai.set(i);
- assertEquals((double)i, ai.doubleValue());
- }
- }
-
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongArrayTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongArrayTest.java
deleted file mode 100644
index 99ce204..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongArrayTest.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.atomic.*;
-import java.io.*;
-import java.util.*;
-
-public class AtomicLongArrayTest extends JSR166TestCase {
- public static void main (String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicLongArrayTest.class);
- }
-
- /**
- * constructor creates array of given size with all elements zero
- */
- public void testConstructor(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i)
- assertEquals(0,ai.get(i));
- }
-
- /**
- * constructor with null array throws NPE
- */
- public void testConstructor2NPE() {
- try {
- long[] a = null;
- AtomicLongArray ai = new AtomicLongArray(a);
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * constructor with array is of same size and has all elements
- */
- public void testConstructor2() {
- long[] a = { 17L, 3L, -42L, 99L, -7L};
- AtomicLongArray ai = new AtomicLongArray(a);
- assertEquals(a.length, ai.length());
- for (int i = 0; i < a.length; ++i)
- assertEquals(a[i], ai.get(i));
- }
-
- /**
- * get and set for out of bound indices throw IndexOutOfBoundsException
- */
- public void testIndexing(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- try {
- ai.get(SIZE);
- } catch(IndexOutOfBoundsException success){
- }
- try {
- ai.get(-1);
- } catch(IndexOutOfBoundsException success){
- }
- try {
- ai.set(SIZE, 0);
- } catch(IndexOutOfBoundsException success){
- }
- try {
- ai.set(-1, 0);
- } catch(IndexOutOfBoundsException success){
- }
- }
-
- /**
- * get returns the last value set at index
- */
- public void testGetSet(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.get(i));
- ai.set(i, 2);
- assertEquals(2,ai.get(i));
- ai.set(i, -3);
- assertEquals(-3,ai.get(i));
- }
- }
-
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertTrue(ai.compareAndSet(i, 1,2));
- assertTrue(ai.compareAndSet(i, 2,-4));
- assertEquals(-4,ai.get(i));
- assertFalse(ai.compareAndSet(i, -5,7));
- assertFalse((7 == ai.get(i)));
- assertTrue(ai.compareAndSet(i, -4,7));
- assertEquals(7,ai.get(i));
- }
- }
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- final AtomicLongArray a = new AtomicLongArray(1);
- a.set(0, 1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!a.compareAndSet(0, 2, 3)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(a.compareAndSet(0, 1, 2));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(a.get(0), 3);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- while(!ai.weakCompareAndSet(i, 1,2));
- while(!ai.weakCompareAndSet(i, 2,-4));
- assertEquals(-4,ai.get(i));
- while(!ai.weakCompareAndSet(i, -4,7));
- assertEquals(7,ai.get(i));
- }
- }
-
- /**
- * getAndSet returns previous value and sets to given value at given index
- */
- public void testGetAndSet(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.getAndSet(i,0));
- assertEquals(0,ai.getAndSet(i,-10));
- assertEquals(-10,ai.getAndSet(i,1));
- }
- }
-
- /**
- * getAndAdd returns previous value and adds given value
- */
- public void testGetAndAdd(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.getAndAdd(i,2));
- assertEquals(3,ai.get(i));
- assertEquals(3,ai.getAndAdd(i,-4));
- assertEquals(-1,ai.get(i));
- }
- }
-
- /**
- * getAndDecrement returns previous value and decrements
- */
- public void testGetAndDecrement(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.getAndDecrement(i));
- assertEquals(0,ai.getAndDecrement(i));
- assertEquals(-1,ai.getAndDecrement(i));
- }
- }
-
- /**
- * getAndIncrement returns previous value and increments
- */
- public void testGetAndIncrement(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(1,ai.getAndIncrement(i));
- assertEquals(2,ai.get(i));
- ai.set(i,-2);
- assertEquals(-2,ai.getAndIncrement(i));
- assertEquals(-1,ai.getAndIncrement(i));
- assertEquals(0,ai.getAndIncrement(i));
- assertEquals(1,ai.get(i));
- }
- }
-
- /**
- * addAndGet adds given value to current, and returns current value
- */
- public void testAddAndGet() {
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(3,ai.addAndGet(i,2));
- assertEquals(3,ai.get(i));
- assertEquals(-1,ai.addAndGet(i,-4));
- assertEquals(-1,ai.get(i));
- }
- }
-
- /**
- * decrementAndGet decrements and returns current value
- */
- public void testDecrementAndGet(){
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(0,ai.decrementAndGet(i));
- assertEquals(-1,ai.decrementAndGet(i));
- assertEquals(-2,ai.decrementAndGet(i));
- assertEquals(-2,ai.get(i));
- }
- }
-
- /**
- * incrementAndGet increments and returns current value
- */
- public void testIncrementAndGet() {
- AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, 1);
- assertEquals(2,ai.incrementAndGet(i));
- assertEquals(2,ai.get(i));
- ai.set(i, -2);
- assertEquals(-1,ai.incrementAndGet(i));
- assertEquals(0,ai.incrementAndGet(i));
- assertEquals(1,ai.incrementAndGet(i));
- assertEquals(1,ai.get(i));
- }
- }
-
- static final long COUNTDOWN = 100000;
-
- class Counter implements Runnable {
- final AtomicLongArray ai;
- volatile long counts;
- Counter(AtomicLongArray a) { ai = a; }
- public void run() {
- for (;;) {
- boolean done = true;
- for (int i = 0; i < ai.length(); ++i) {
- long v = ai.get(i);
- threadAssertTrue(v >= 0);
- if (v != 0) {
- done = false;
- if (ai.compareAndSet(i, v, v-1))
- ++counts;
- }
- }
- if (done)
- break;
- }
- }
- }
-
- /**
- * Multiple threads using same array of counters successfully
- * update a number of times equal to total count
- */
- public void testCountingInMultipleThreads() {
- try {
- final AtomicLongArray ai = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i)
- ai.set(i, COUNTDOWN);
- Counter c1 = new Counter(ai);
- Counter c2 = new Counter(ai);
- Thread t1 = new Thread(c1);
- Thread t2 = new Thread(c2);
- t1.start();
- t2.start();
- t1.join();
- t2.join();
- assertEquals(c1.counts+c2.counts, SIZE * COUNTDOWN);
- }
- catch(InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * a deserialized serialized array holds same values
- */
- public void testSerialization() {
- AtomicLongArray l = new AtomicLongArray(SIZE);
- for (int i = 0; i < SIZE; ++i)
- l.set(i, -i);
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- AtomicLongArray r = (AtomicLongArray) in.readObject();
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(l.get(i), r.get(i));
- }
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * toString returns current value.
- */
- public void testToString() {
- long[] a = { 17, 3, -42, 99, -7};
- AtomicLongArray ai = new AtomicLongArray(a);
- assertEquals(Arrays.toString(a), ai.toString());
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongFieldUpdaterTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongFieldUpdaterTest.java
deleted file mode 100755
index 8076f7b..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongFieldUpdaterTest.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import java.util.concurrent.atomic.*;
-import junit.framework.*;
-import java.util.*;
-
-public class AtomicLongFieldUpdaterTest extends JSR166TestCase {
- volatile long x = 0;
- int z;
- long w;
-
- public static void main(String[] args){
- junit.textui.TestRunner.run(suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicLongFieldUpdaterTest.class);
- }
-
- /**
- * Construction with non-existent field throws RuntimeException
- */
- public void testConstructor(){
- try{
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest>
- a = AtomicLongFieldUpdater.newUpdater
- (AtomicLongFieldUpdaterTest.class, "y");
- shouldThrow();
- }
- catch (RuntimeException rt) {}
- }
-
- /**
- * construction with field not of given type throws RuntimeException
- */
- public void testConstructor2(){
- try{
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest>
- a = AtomicLongFieldUpdater.newUpdater
- (AtomicLongFieldUpdaterTest.class, "z");
- shouldThrow();
- }
- catch (RuntimeException rt) {}
- }
-
- /**
- * construction with non-volatile field throws RuntimeException
- */
- public void testConstructor3(){
- try{
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest>
- a = AtomicLongFieldUpdater.newUpdater
- (AtomicLongFieldUpdaterTest.class, "w");
- shouldThrow();
- }
-
- catch (RuntimeException rt) {}
- }
-
- /**
- * get returns the last value set or assigned
- */
- public void testGetSet(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.get(this));
- a.set(this,2);
- assertEquals(2,a.get(this));
- a.set(this,-3);
- assertEquals(-3,a.get(this));
-
- }
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertTrue(a.compareAndSet(this,1,2));
- assertTrue(a.compareAndSet(this,2,-4));
- assertEquals(-4,a.get(this));
- assertFalse(a.compareAndSet(this,-5,7));
- assertFalse((7 == a.get(this)));
- assertTrue(a.compareAndSet(this,-4,7));
- assertEquals(7,a.get(this));
- }
-
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- x = 1;
- final AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest>a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!a.compareAndSet(AtomicLongFieldUpdaterTest.this, 2, 3)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(a.compareAndSet(this, 1, 2));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(a.get(this), 3);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- while(!a.weakCompareAndSet(this,1,2));
- while(!a.weakCompareAndSet(this,2,-4));
- assertEquals(-4,a.get(this));
- while(!a.weakCompareAndSet(this,-4,7));
- assertEquals(7,a.get(this));
- }
-
- /**
- * getAndSet returns previous value and sets to given value
- */
- public void testGetAndSet(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.getAndSet(this, 0));
- assertEquals(0,a.getAndSet(this,-10));
- assertEquals(-10,a.getAndSet(this,1));
- }
-
- /**
- * getAndAdd returns previous value and adds given value
- */
- public void testGetAndAdd(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.getAndAdd(this,2));
- assertEquals(3,a.get(this));
- assertEquals(3,a.getAndAdd(this,-4));
- assertEquals(-1,a.get(this));
- }
-
- /**
- * getAndDecrement returns previous value and decrements
- */
- public void testGetAndDecrement(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.getAndDecrement(this));
- assertEquals(0,a.getAndDecrement(this));
- assertEquals(-1,a.getAndDecrement(this));
- }
-
- /**
- * getAndIncrement returns previous value and increments
- */
- public void testGetAndIncrement(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(1,a.getAndIncrement(this));
- assertEquals(2,a.get(this));
- a.set(this,-2);
- assertEquals(-2,a.getAndIncrement(this));
- assertEquals(-1,a.getAndIncrement(this));
- assertEquals(0,a.getAndIncrement(this));
- assertEquals(1,a.get(this));
- }
-
- /**
- * addAndGet adds given value to current, and returns current value
- */
- public void testAddAndGet(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(3,a.addAndGet(this,2));
- assertEquals(3,a.get(this));
- assertEquals(-1,a.addAndGet(this,-4));
- assertEquals(-1,a.get(this));
- }
-
- /**
- * decrementAndGet decrements and returns current value
- */
- public void testDecrementAndGet(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(0,a.decrementAndGet(this));
- assertEquals(-1,a.decrementAndGet(this));
- assertEquals(-2,a.decrementAndGet(this));
- assertEquals(-2,a.get(this));
- }
-
- /**
- * incrementAndGet increments and returns current value
- */
- public void testIncrementAndGet(){
- AtomicLongFieldUpdater<AtomicLongFieldUpdaterTest> a;
- try {
- a = AtomicLongFieldUpdater.newUpdater(AtomicLongFieldUpdaterTest.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = 1;
- assertEquals(2,a.incrementAndGet(this));
- assertEquals(2,a.get(this));
- a.set(this,-2);
- assertEquals(-1,a.incrementAndGet(this));
- assertEquals(0,a.incrementAndGet(this));
- assertEquals(1,a.incrementAndGet(this));
- assertEquals(1,a.get(this));
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongTest.java
deleted file mode 100755
index 55b8a49..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicLongTest.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.atomic.*;
-import java.io.*;
-
-public class AtomicLongTest extends JSR166TestCase {
- public static void main (String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicLongTest.class);
- }
-
- /**
- * constructor initializes to given value
- */
- public void testConstructor(){
- AtomicLong ai = new AtomicLong(1);
- assertEquals(1,ai.get());
- }
-
- /**
- * default constructed initializes to zero
- */
- public void testConstructor2(){
- AtomicLong ai = new AtomicLong();
- assertEquals(0,ai.get());
- }
-
- /**
- * get returns the last value set
- */
- public void testGetSet(){
- AtomicLong ai = new AtomicLong(1);
- assertEquals(1,ai.get());
- ai.set(2);
- assertEquals(2,ai.get());
- ai.set(-3);
- assertEquals(-3,ai.get());
-
- }
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet(){
- AtomicLong ai = new AtomicLong(1);
- assertTrue(ai.compareAndSet(1,2));
- assertTrue(ai.compareAndSet(2,-4));
- assertEquals(-4,ai.get());
- assertFalse(ai.compareAndSet(-5,7));
- assertFalse((7 == ai.get()));
- assertTrue(ai.compareAndSet(-4,7));
- assertEquals(7,ai.get());
- }
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- final AtomicLong ai = new AtomicLong(1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!ai.compareAndSet(2, 3)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(ai.compareAndSet(1, 2));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(ai.get(), 3);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet(){
- AtomicLong ai = new AtomicLong(1);
- while(!ai.weakCompareAndSet(1,2));
- while(!ai.weakCompareAndSet(2,-4));
- assertEquals(-4,ai.get());
- while(!ai.weakCompareAndSet(-4,7));
- assertEquals(7,ai.get());
- }
-
- /**
- * getAndSet returns previous value and sets to given value
- */
- public void testGetAndSet(){
- AtomicLong ai = new AtomicLong(1);
- assertEquals(1,ai.getAndSet(0));
- assertEquals(0,ai.getAndSet(-10));
- assertEquals(-10,ai.getAndSet(1));
- }
-
- /**
- * getAndAdd returns previous value and adds given value
- */
- public void testGetAndAdd(){
- AtomicLong ai = new AtomicLong(1);
- assertEquals(1,ai.getAndAdd(2));
- assertEquals(3,ai.get());
- assertEquals(3,ai.getAndAdd(-4));
- assertEquals(-1,ai.get());
- }
-
- /**
- * getAndDecrement returns previous value and decrements
- */
- public void testGetAndDecrement(){
- AtomicLong ai = new AtomicLong(1);
- assertEquals(1,ai.getAndDecrement());
- assertEquals(0,ai.getAndDecrement());
- assertEquals(-1,ai.getAndDecrement());
- }
-
- /**
- * getAndIncrement returns previous value and increments
- */
- public void testGetAndIncrement(){
- AtomicLong ai = new AtomicLong(1);
- assertEquals(1,ai.getAndIncrement());
- assertEquals(2,ai.get());
- ai.set(-2);
- assertEquals(-2,ai.getAndIncrement());
- assertEquals(-1,ai.getAndIncrement());
- assertEquals(0,ai.getAndIncrement());
- assertEquals(1,ai.get());
- }
-
- /**
- * addAndGet adds given value to current, and returns current value
- */
- public void testAddAndGet(){
- AtomicLong ai = new AtomicLong(1);
- assertEquals(3,ai.addAndGet(2));
- assertEquals(3,ai.get());
- assertEquals(-1,ai.addAndGet(-4));
- assertEquals(-1,ai.get());
- }
-
- /**
- * decrementAndGet decrements and returns current value
- */
- public void testDecrementAndGet(){
- AtomicLong ai = new AtomicLong(1);
- assertEquals(0,ai.decrementAndGet());
- assertEquals(-1,ai.decrementAndGet());
- assertEquals(-2,ai.decrementAndGet());
- assertEquals(-2,ai.get());
- }
-
- /**
- * incrementAndGet increments and returns current value
- */
- public void testIncrementAndGet(){
- AtomicLong ai = new AtomicLong(1);
- assertEquals(2,ai.incrementAndGet());
- assertEquals(2,ai.get());
- ai.set(-2);
- assertEquals(-1,ai.incrementAndGet());
- assertEquals(0,ai.incrementAndGet());
- assertEquals(1,ai.incrementAndGet());
- assertEquals(1,ai.get());
- }
-
- /**
- * a deserialized serialized atomic holds same value
- */
- public void testSerialization() {
- AtomicLong l = new AtomicLong();
-
- try {
- l.set(-22);
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- AtomicLong r = (AtomicLong) in.readObject();
- assertEquals(l.get(), r.get());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * toString returns current value.
- */
- public void testToString() {
- AtomicLong ai = new AtomicLong();
- for (long i = -12; i < 6; ++i) {
- ai.set(i);
- assertEquals(ai.toString(), Long.toString(i));
- }
- }
-
- /**
- * longValue returns current value.
- */
- public void testLongValue() {
- AtomicLong ai = new AtomicLong();
- for (int i = -12; i < 6; ++i) {
- ai.set(i);
- assertEquals((long)i, ai.longValue());
- }
- }
-
- /**
- * floatValue returns current value.
- */
- public void testFloatValue() {
- AtomicLong ai = new AtomicLong();
- for (int i = -12; i < 6; ++i) {
- ai.set(i);
- assertEquals((float)i, ai.floatValue());
- }
- }
-
- /**
- * doubleValue returns current value.
- */
- public void testDoubleValue() {
- AtomicLong ai = new AtomicLong();
- for (int i = -12; i < 6; ++i) {
- ai.set(i);
- assertEquals((double)i, ai.doubleValue());
- }
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicMarkableReferenceTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicMarkableReferenceTest.java
deleted file mode 100755
index 7b3dcb1..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicMarkableReferenceTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.atomic.*;
-
-public class AtomicMarkableReferenceTest extends JSR166TestCase{
- public static void main (String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicMarkableReferenceTest.class);
- }
-
- /**
- * constructor initializes to given reference and mark
- */
- public void testConstructor(){
- AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
- assertEquals(one,ai.getReference());
- assertFalse(ai.isMarked());
- AtomicMarkableReference a2 = new AtomicMarkableReference(null, true);
- assertNull(a2.getReference());
- assertTrue(a2.isMarked());
-
- }
-
- /**
- * get returns the last values of reference and mark set
- */
- public void testGetSet(){
- boolean[] mark = new boolean[1];
- AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
- assertEquals(one,ai.getReference());
- assertFalse(ai.isMarked());
- assertEquals(one, ai.get(mark));
- assertFalse(mark[0]);
- ai.set(two, false);
- assertEquals(two,ai.getReference());
- assertFalse(ai.isMarked());
- assertEquals(two, ai.get(mark));
- assertFalse(mark[0]);
- ai.set(one, true);
- assertEquals(one,ai.getReference());
- assertTrue(ai.isMarked());
- assertEquals(one, ai.get(mark));
- assertTrue(mark[0]);
- }
-
- /**
- * attemptMark succeeds in single thread
- */
- public void testAttemptMark(){
- boolean[] mark = new boolean[1];
- AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
- assertFalse(ai.isMarked());
- assertTrue(ai.attemptMark(one, true));
- assertTrue(ai.isMarked());
- assertEquals(one, ai.get(mark));
- assertTrue(mark[0]);
- }
-
- /**
- * compareAndSet succeeds in changing values if equal to expected reference
- * and mark else fails
- */
- public void testCompareAndSet(){
- boolean[] mark = new boolean[1];
- AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
- assertEquals(one, ai.get(mark));
- assertFalse(ai.isMarked());
- assertFalse(mark[0]);
-
- assertTrue(ai.compareAndSet(one, two, false, false));
- assertEquals(two, ai.get(mark));
- assertFalse(mark[0]);
-
- assertTrue(ai.compareAndSet(two, m3, false, true));
- assertEquals(m3, ai.get(mark));
- assertTrue(mark[0]);
-
- assertFalse(ai.compareAndSet(two, m3, true, true));
- assertEquals(m3, ai.get(mark));
- assertTrue(mark[0]);
- }
-
- /**
- * compareAndSet in one thread enables another waiting for reference value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- final AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!ai.compareAndSet(two, three, false, false)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(ai.compareAndSet(one, two, false, false));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(ai.getReference(), three);
- assertFalse(ai.isMarked());
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * compareAndSet in one thread enables another waiting for mark value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads2() {
- final AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!ai.compareAndSet(one, one, true, false)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(ai.compareAndSet(one, one, false, true));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(ai.getReference(), one);
- assertFalse(ai.isMarked());
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing values when equal
- * to expected
- */
- public void testWeakCompareAndSet(){
- boolean[] mark = new boolean[1];
- AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
- assertEquals(one, ai.get(mark));
- assertFalse(ai.isMarked());
- assertFalse(mark[0]);
-
- while(!ai.weakCompareAndSet(one, two, false, false));
- assertEquals(two, ai.get(mark));
- assertFalse(mark[0]);
-
- while(!ai.weakCompareAndSet(two, m3, false, true));
- assertEquals(m3, ai.get(mark));
- assertTrue(mark[0]);
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceArrayTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceArrayTest.java
deleted file mode 100644
index 9330d39..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceArrayTest.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.atomic.*;
-import java.io.*;
-import java.util.*;
-
-public class AtomicReferenceArrayTest extends JSR166TestCase
-{
- public static void main (String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicReferenceArrayTest.class);
- }
-
- /**
- * constructor creates array of given size with all elements null
- */
- public void testConstructor(){
- AtomicReferenceArray<Integer> ai = new AtomicReferenceArray<Integer>(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertNull(ai.get(i));
- }
- }
-
- /**
- * constructor with null array throws NPE
- */
- public void testConstructor2NPE() {
- try {
- Integer[] a = null;
- AtomicReferenceArray<Integer> ai = new AtomicReferenceArray<Integer>(a);
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * constructor with array is of same size and has all elements
- */
- public void testConstructor2() {
- Integer[] a = { two, one, three, four, seven};
- AtomicReferenceArray<Integer> ai = new AtomicReferenceArray<Integer>(a);
- assertEquals(a.length, ai.length());
- for (int i = 0; i < a.length; ++i)
- assertEquals(a[i], ai.get(i));
- }
-
-
- /**
- * get and set for out of bound indices throw IndexOutOfBoundsException
- */
- public void testIndexing(){
- AtomicReferenceArray<Integer> ai = new AtomicReferenceArray<Integer>(SIZE);
- try {
- ai.get(SIZE);
- } catch(IndexOutOfBoundsException success){
- }
- try {
- ai.get(-1);
- } catch(IndexOutOfBoundsException success){
- }
- try {
- ai.set(SIZE, null);
- } catch(IndexOutOfBoundsException success){
- }
- try {
- ai.set(-1, null);
- } catch(IndexOutOfBoundsException success){
- }
- }
-
- /**
- * get returns the last value set at index
- */
- public void testGetSet(){
- AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, one);
- assertEquals(one,ai.get(i));
- ai.set(i, two);
- assertEquals(two,ai.get(i));
- ai.set(i, m3);
- assertEquals(m3,ai.get(i));
- }
- }
-
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet(){
- AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, one);
- assertTrue(ai.compareAndSet(i, one,two));
- assertTrue(ai.compareAndSet(i, two,m4));
- assertEquals(m4,ai.get(i));
- assertFalse(ai.compareAndSet(i, m5,seven));
- assertFalse((seven.equals(ai.get(i))));
- assertTrue(ai.compareAndSet(i, m4,seven));
- assertEquals(seven,ai.get(i));
- }
- }
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- final AtomicReferenceArray a = new AtomicReferenceArray(1);
- a.set(0, one);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!a.compareAndSet(0, two, three)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(a.compareAndSet(0, one, two));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(a.get(0), three);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet(){
- AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, one);
- while(!ai.weakCompareAndSet(i, one,two));
- while(!ai.weakCompareAndSet(i, two,m4));
- assertEquals(m4,ai.get(i));
- while(!ai.weakCompareAndSet(i, m4,seven));
- assertEquals(seven,ai.get(i));
- }
- }
-
- /**
- * getAndSet returns previous value and sets to given value at given index
- */
- public void testGetAndSet(){
- AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- ai.set(i, one);
- assertEquals(one,ai.getAndSet(i,zero));
- assertEquals(0,ai.getAndSet(i,m10));
- assertEquals(m10,ai.getAndSet(i,one));
- }
- }
-
- /**
- * a deserialized serialized array holds same values
- */
- public void testSerialization() {
- AtomicReferenceArray l = new AtomicReferenceArray(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- l.set(i, new Integer(-i));
- }
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- AtomicReferenceArray r = (AtomicReferenceArray) in.readObject();
- assertEquals(l.length(), r.length());
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(r.get(i), l.get(i));
- }
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * toString returns current value.
- */
- public void testToString() {
- Integer[] a = { two, one, three, four, seven};
- AtomicReferenceArray<Integer> ai = new AtomicReferenceArray<Integer>(a);
- assertEquals(Arrays.toString(a), ai.toString());
- }
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceFieldUpdaterTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceFieldUpdaterTest.java
deleted file mode 100755
index 183ca21..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceFieldUpdaterTest.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import java.util.concurrent.atomic.*;
-import junit.framework.*;
-import java.util.*;
-
-public class AtomicReferenceFieldUpdaterTest extends JSR166TestCase{
- volatile Integer x = null;
- Object z;
- Integer w;
-
- public static void main(String[] args){
- junit.textui.TestRunner.run(suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicReferenceFieldUpdaterTest.class);
- }
-
- /**
- * Construction with non-existent field throws RuntimeException
- */
- public void testConstructor(){
- try{
- AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer>
- a = AtomicReferenceFieldUpdater.newUpdater
- (AtomicReferenceFieldUpdaterTest.class, Integer.class, "y");
- shouldThrow();
- }
- catch (RuntimeException rt) {}
- }
-
-
- /**
- * construction with field not of given type throws RuntimeException
- */
- public void testConstructor2(){
- try{
- AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer>
- a = AtomicReferenceFieldUpdater.newUpdater
- (AtomicReferenceFieldUpdaterTest.class, Integer.class, "z");
- shouldThrow();
- }
- catch (RuntimeException rt) {}
- }
-
- /**
- * Constructor with non-volatile field throws exception
- */
- public void testConstructor3(){
- try{
- AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer>
- a = AtomicReferenceFieldUpdater.newUpdater
- (AtomicReferenceFieldUpdaterTest.class, Integer.class, "w");
- shouldThrow();
- }
- catch (RuntimeException rt) {}
- }
-
- /**
- * get returns the last value set or assigned
- */
- public void testGetSet(){
- AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer>a;
- try {
- a = AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdaterTest.class, Integer.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = one;
- assertEquals(one,a.get(this));
- a.set(this,two);
- assertEquals(two,a.get(this));
- a.set(this,-3);
- // BEGIN android-changed
- assertEquals(new Integer(-3),a.get(this));
- // END android-changed
-
- }
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet(){
- AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer>a;
- try {
- a = AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdaterTest.class, Integer.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = one;
- assertTrue(a.compareAndSet(this,one,two));
- assertTrue(a.compareAndSet(this,two,m4));
- assertEquals(m4,a.get(this));
- assertFalse(a.compareAndSet(this,m5,seven));
- assertFalse((seven == a.get(this)));
- assertTrue(a.compareAndSet(this,m4,seven));
- assertEquals(seven,a.get(this));
- }
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- x = one;
- final AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer>a;
- try {
- a = AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdaterTest.class, Integer.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!a.compareAndSet(AtomicReferenceFieldUpdaterTest.this, two, three)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(a.compareAndSet(this, one, two));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(a.get(this), three);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet(){
- AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer>a;
- try {
- a = AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdaterTest.class, Integer.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = one;
- while(!a.weakCompareAndSet(this,one,two));
- while(!a.weakCompareAndSet(this,two,m4));
- assertEquals(m4,a.get(this));
- while(!a.weakCompareAndSet(this,m4,seven));
- assertEquals(seven,a.get(this));
- }
-
- /**
- * getAndSet returns previous value and sets to given value
- */
- public void testGetAndSet(){
- AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer>a;
- try {
- a = AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdaterTest.class, Integer.class, "x");
- } catch (RuntimeException ok) {
- return;
- }
- x = one;
- assertEquals(one,a.getAndSet(this, zero));
- assertEquals(zero,a.getAndSet(this,m10));
- assertEquals(m10,a.getAndSet(this,1));
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceTest.java
deleted file mode 100755
index 0aa48cd..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicReferenceTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.atomic.*;
-import java.io.*;
-
-public class AtomicReferenceTest extends JSR166TestCase {
- public static void main (String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicReferenceTest.class);
- }
-
- /**
- * constructor initializes to given value
- */
- public void testConstructor(){
- AtomicReference ai = new AtomicReference(one);
- assertEquals(one,ai.get());
- }
-
- /**
- * default constructed initializes to null
- */
- public void testConstructor2(){
- AtomicReference ai = new AtomicReference();
- assertNull(ai.get());
- }
-
- /**
- * get returns the last value set
- */
- public void testGetSet(){
- AtomicReference ai = new AtomicReference(one);
- assertEquals(one,ai.get());
- ai.set(two);
- assertEquals(two,ai.get());
- ai.set(m3);
- assertEquals(m3,ai.get());
-
- }
- /**
- * compareAndSet succeeds in changing value if equal to expected else fails
- */
- public void testCompareAndSet(){
- AtomicReference ai = new AtomicReference(one);
- assertTrue(ai.compareAndSet(one,two));
- assertTrue(ai.compareAndSet(two,m4));
- assertEquals(m4,ai.get());
- assertFalse(ai.compareAndSet(m5,seven));
- assertFalse((seven.equals(ai.get())));
- assertTrue(ai.compareAndSet(m4,seven));
- assertEquals(seven,ai.get());
- }
-
- /**
- * compareAndSet in one thread enables another waiting for value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- final AtomicReference ai = new AtomicReference(one);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!ai.compareAndSet(two, three)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(ai.compareAndSet(one, two));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(ai.get(), three);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing value when equal
- * to expected
- */
- public void testWeakCompareAndSet(){
- AtomicReference ai = new AtomicReference(one);
- while(!ai.weakCompareAndSet(one,two));
- while(!ai.weakCompareAndSet(two,m4));
- assertEquals(m4,ai.get());
- while(!ai.weakCompareAndSet(m4,seven));
- assertEquals(seven,ai.get());
- }
-
- /**
- * getAndSet returns previous value and sets to given value
- */
- public void testGetAndSet(){
- AtomicReference ai = new AtomicReference(one);
- assertEquals(one,ai.getAndSet(zero));
- assertEquals(zero,ai.getAndSet(m10));
- assertEquals(m10,ai.getAndSet(one));
- }
-
- /**
- * a deserialized serialized atomic holds same value
- */
- public void testSerialization() {
- AtomicReference l = new AtomicReference();
-
- try {
- l.set(one);
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- AtomicReference r = (AtomicReference) in.readObject();
- assertEquals(l.get(), r.get());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * toString returns current value.
- */
- public void testToString() {
- AtomicReference<Integer> ai = new AtomicReference<Integer>(one);
- assertEquals(ai.toString(), one.toString());
- ai.set(two);
- assertEquals(ai.toString(), two.toString());
- }
-
-}
-
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicStampedReferenceTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicStampedReferenceTest.java
deleted file mode 100755
index 3ffc0a7..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/AtomicStampedReferenceTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.atomic.*;
-
-public class AtomicStampedReferenceTest extends JSR166TestCase{
- public static void main (String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(AtomicStampedReferenceTest.class);
- }
-
- /**
- * constructor initializes to given reference and stamp
- */
- public void testConstructor(){
- AtomicStampedReference ai = new AtomicStampedReference(one, 0);
- assertEquals(one,ai.getReference());
- assertEquals(0, ai.getStamp());
- AtomicStampedReference a2 = new AtomicStampedReference(null, 1);
- assertNull(a2.getReference());
- assertEquals(1, a2.getStamp());
-
- }
-
- /**
- * get returns the last values of reference and stamp set
- */
- public void testGetSet(){
- int[] mark = new int[1];
- AtomicStampedReference ai = new AtomicStampedReference(one, 0);
- assertEquals(one,ai.getReference());
- assertEquals(0, ai.getStamp());
- assertEquals(one, ai.get(mark));
- assertEquals(0, mark[0]);
- ai.set(two, 0);
- assertEquals(two,ai.getReference());
- assertEquals(0, ai.getStamp());
- assertEquals(two, ai.get(mark));
- assertEquals(0, mark[0]);
- ai.set(one, 1);
- assertEquals(one,ai.getReference());
- assertEquals(1, ai.getStamp());
- assertEquals(one, ai.get(mark));
- assertEquals(1,mark[0]);
- }
-
- /**
- * attemptStamp succeeds in single thread
- */
- public void testAttemptStamp(){
- int[] mark = new int[1];
- AtomicStampedReference ai = new AtomicStampedReference(one, 0);
- assertEquals(0, ai.getStamp());
- assertTrue(ai.attemptStamp(one, 1));
- assertEquals(1, ai.getStamp());
- assertEquals(one, ai.get(mark));
- assertEquals(1, mark[0]);
- }
-
- /**
- * compareAndSet succeeds in changing values if equal to expected reference
- * and stamp else fails
- */
- public void testCompareAndSet(){
- int[] mark = new int[1];
- AtomicStampedReference ai = new AtomicStampedReference(one, 0);
- assertEquals(one, ai.get(mark));
- assertEquals(0, ai.getStamp());
- assertEquals(0, mark[0]);
-
- assertTrue(ai.compareAndSet(one, two, 0, 0));
- assertEquals(two, ai.get(mark));
- assertEquals(0, mark[0]);
-
- assertTrue(ai.compareAndSet(two, m3, 0, 1));
- assertEquals(m3, ai.get(mark));
- assertEquals(1, mark[0]);
-
- assertFalse(ai.compareAndSet(two, m3, 1, 1));
- assertEquals(m3, ai.get(mark));
- assertEquals(1, mark[0]);
- }
-
- /**
- * compareAndSet in one thread enables another waiting for reference value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads() {
- final AtomicStampedReference ai = new AtomicStampedReference(one, 0);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!ai.compareAndSet(two, three, 0, 0)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(ai.compareAndSet(one, two, 0, 0));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(ai.getReference(), three);
- assertEquals(ai.getStamp(), 0);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * compareAndSet in one thread enables another waiting for stamp value
- * to succeed
- */
- public void testCompareAndSetInMultipleThreads2() {
- final AtomicStampedReference ai = new AtomicStampedReference(one, 0);
- Thread t = new Thread(new Runnable() {
- public void run() {
- while(!ai.compareAndSet(one, one, 1, 2)) Thread.yield();
- }});
- try {
- t.start();
- assertTrue(ai.compareAndSet(one, one, 0, 1));
- t.join(LONG_DELAY_MS);
- assertFalse(t.isAlive());
- assertEquals(ai.getReference(), one);
- assertEquals(ai.getStamp(), 2);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * repeated weakCompareAndSet succeeds in changing values when equal
- * to expected
- */
- public void testWeakCompareAndSet(){
- int[] mark = new int[1];
- AtomicStampedReference ai = new AtomicStampedReference(one, 0);
- assertEquals(one, ai.get(mark));
- assertEquals(0, ai.getStamp ());
- assertEquals(0, mark[0]);
-
- while(!ai.weakCompareAndSet(one, two, 0, 0));
- assertEquals(two, ai.get(mark));
- assertEquals(0, mark[0]);
-
- while(!ai.weakCompareAndSet(two, m3, 0, 1));
- assertEquals(m3, ai.get(mark));
- assertEquals(1, mark[0]);
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ConcurrentHashMapTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ConcurrentHashMapTest.java
deleted file mode 100755
index 9b3ec52..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ConcurrentHashMapTest.java
+++ /dev/null
@@ -1,611 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.Enumeration;
-import java.io.*;
-
-public class ConcurrentHashMapTest extends JSR166TestCase{
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(ConcurrentHashMapTest.class);
- }
- // BEGIN android-added
- static class MyConcurrentHashMap<V, K> extends ConcurrentHashMap<K, V>
- implements Cloneable {
-
- public MyConcurrentHashMap() {
- super();
- }
-
- public MyConcurrentHashMap(int initialCapacity, float loadFactor,
- int concurrencyLevel) {
- super(initialCapacity, loadFactor, concurrencyLevel);
- }
-
- public MyConcurrentHashMap(int initialCapacity) {
- super(initialCapacity);
- }
-
- public MyConcurrentHashMap(Map<? extends K, ? extends V> t) {
- super(t);
- }
-
- @Override
- protected Object clone() throws CloneNotSupportedException {
- return super.clone();
- }
-
- }
-
- /**
- * Create a map from Integers 1-5 to Strings "A"-"E".
- */
- private static MyConcurrentHashMap myMap5() {
- MyConcurrentHashMap map = new MyConcurrentHashMap(5);
- assertTrue(map.isEmpty());
- map.put(one, "A");
- map.put(two, "B");
- map.put(three, "C");
- map.put(four, "D");
- map.put(five, "E");
- assertFalse(map.isEmpty());
- assertEquals(5, map.size());
- return map;
- }
- // END android-added
- /**
- * Create a map from Integers 1-5 to Strings "A"-"E".
- */
- private static ConcurrentHashMap map5() {
- ConcurrentHashMap map = new ConcurrentHashMap(5);
- assertTrue(map.isEmpty());
- map.put(one, "A");
- map.put(two, "B");
- map.put(three, "C");
- map.put(four, "D");
- map.put(five, "E");
- assertFalse(map.isEmpty());
- assertEquals(5, map.size());
- return map;
- }
-
- /**
- * clear removes all pairs
- */
- public void testClear() {
- ConcurrentHashMap map = map5();
- map.clear();
- assertEquals(map.size(), 0);
- }
-
- /**
- * Maps with same contents are equal
- */
- public void testEquals() {
- ConcurrentHashMap map1 = map5();
- ConcurrentHashMap map2 = map5();
- assertEquals(map1, map2);
- assertEquals(map2, map1);
- map1.clear();
- assertFalse(map1.equals(map2));
- assertFalse(map2.equals(map1));
- }
-
- /**
- * contains returns true for contained value
- */
- public void testContains() {
- ConcurrentHashMap map = map5();
- assertTrue(map.contains("A"));
- assertFalse(map.contains("Z"));
- }
-
- /**
- * containsKey returns true for contained key
- */
- public void testContainsKey() {
- ConcurrentHashMap map = map5();
- assertTrue(map.containsKey(one));
- assertFalse(map.containsKey(zero));
- }
-
- /**
- * containsValue returns true for held values
- */
- public void testContainsValue() {
- ConcurrentHashMap map = map5();
- assertTrue(map.contains("A"));
- assertFalse(map.contains("Z"));
- }
-
- /**
- * enumeration returns an enumeration containing the correct
- * elements
- */
- public void testEnumeration() {
- ConcurrentHashMap map = map5();
- Enumeration e = map.elements();
- int count = 0;
- while(e.hasMoreElements()){
- count++;
- e.nextElement();
- }
- assertEquals(5, count);
- }
-
- /**
- * Clone creates an equal map
- */
- public void testClone() {
- // BEGIN android-changed
- MyConcurrentHashMap map =myMap5();
- try {
- MyConcurrentHashMap m2 = (MyConcurrentHashMap)(map.clone());
- assertEquals(map, m2);
- } catch (CloneNotSupportedException e) {
- fail("clone not supported");
- }
- // END android-changed
- }
-
- /**
- * get returns the correct element at the given key,
- * or null if not present
- */
- public void testGet() {
- ConcurrentHashMap map = map5();
- assertEquals("A", (String)map.get(one));
- ConcurrentHashMap empty = new ConcurrentHashMap();
- assertNull(map.get("anything"));
- }
-
- /**
- * isEmpty is true of empty map and false for non-empty
- */
- public void testIsEmpty() {
- ConcurrentHashMap empty = new ConcurrentHashMap();
- ConcurrentHashMap map = map5();
- assertTrue(empty.isEmpty());
- assertFalse(map.isEmpty());
- }
-
- /**
- * keys returns an enumeration containing all the keys from the map
- */
- public void testKeys() {
- ConcurrentHashMap map = map5();
- Enumeration e = map.keys();
- int count = 0;
- while(e.hasMoreElements()){
- count++;
- e.nextElement();
- }
- assertEquals(5, count);
- }
-
- /**
- * keySet returns a Set containing all the keys
- */
- public void testKeySet() {
- ConcurrentHashMap map = map5();
- Set s = map.keySet();
- assertEquals(5, s.size());
- assertTrue(s.contains(one));
- assertTrue(s.contains(two));
- assertTrue(s.contains(three));
- assertTrue(s.contains(four));
- assertTrue(s.contains(five));
- }
-
- /**
- * values collection contains all values
- */
- public void testValues() {
- ConcurrentHashMap map = map5();
- Collection s = map.values();
- assertEquals(5, s.size());
- assertTrue(s.contains("A"));
- assertTrue(s.contains("B"));
- assertTrue(s.contains("C"));
- assertTrue(s.contains("D"));
- assertTrue(s.contains("E"));
- }
-
- /**
- * entrySet contains all pairs
- */
- public void testEntrySet() {
- ConcurrentHashMap map = map5();
- Set s = map.entrySet();
- assertEquals(5, s.size());
- Iterator it = s.iterator();
- while (it.hasNext()) {
- Map.Entry e = (Map.Entry) it.next();
- assertTrue(
- (e.getKey().equals(one) && e.getValue().equals("A")) ||
- (e.getKey().equals(two) && e.getValue().equals("B")) ||
- (e.getKey().equals(three) && e.getValue().equals("C")) ||
- (e.getKey().equals(four) && e.getValue().equals("D")) ||
- (e.getKey().equals(five) && e.getValue().equals("E")));
- }
- }
-
- /**
- * putAll adds all key-value pairs from the given map
- */
- public void testPutAll() {
- ConcurrentHashMap empty = new ConcurrentHashMap();
- ConcurrentHashMap map = map5();
- empty.putAll(map);
- assertEquals(5, empty.size());
- assertTrue(empty.containsKey(one));
- assertTrue(empty.containsKey(two));
- assertTrue(empty.containsKey(three));
- assertTrue(empty.containsKey(four));
- assertTrue(empty.containsKey(five));
- }
-
- /**
- * putIfAbsent works when the given key is not present
- */
- public void testPutIfAbsent() {
- ConcurrentHashMap map = map5();
- map.putIfAbsent(six, "Z");
- assertTrue(map.containsKey(six));
- }
-
- /**
- * putIfAbsent does not add the pair if the key is already present
- */
- public void testPutIfAbsent2() {
- ConcurrentHashMap map = map5();
- assertEquals("A", map.putIfAbsent(one, "Z"));
- }
-
- /**
- * replace fails when the given key is not present
- */
- public void testReplace() {
- ConcurrentHashMap map = map5();
- assertNull(map.replace(six, "Z"));
- assertFalse(map.containsKey(six));
- }
-
- /**
- * replace succeeds if the key is already present
- */
- public void testReplace2() {
- ConcurrentHashMap map = map5();
- assertNotNull(map.replace(one, "Z"));
- assertEquals("Z", map.get(one));
- }
-
-
- /**
- * replace value fails when the given key not mapped to expected value
- */
- public void testReplaceValue() {
- ConcurrentHashMap map = map5();
- assertEquals("A", map.get(one));
- assertFalse(map.replace(one, "Z", "Z"));
- assertEquals("A", map.get(one));
- }
-
- /**
- * replace value succeeds when the given key mapped to expected value
- */
- public void testReplaceValue2() {
- ConcurrentHashMap map = map5();
- assertEquals("A", map.get(one));
- assertTrue(map.replace(one, "A", "Z"));
- assertEquals("Z", map.get(one));
- }
-
-
- /**
- * remove removes the correct key-value pair from the map
- */
- public void testRemove() {
- ConcurrentHashMap map = map5();
- map.remove(five);
- assertEquals(4, map.size());
- assertFalse(map.containsKey(five));
- }
-
- /**
- * remove(key,value) removes only if pair present
- */
- public void testRemove2() {
- ConcurrentHashMap map = map5();
- map.remove(five, "E");
- assertEquals(4, map.size());
- assertFalse(map.containsKey(five));
- map.remove(four, "A");
- assertEquals(4, map.size());
- assertTrue(map.containsKey(four));
-
- }
-
- /**
- * size returns the correct values
- */
- public void testSize() {
- ConcurrentHashMap map = map5();
- ConcurrentHashMap empty = new ConcurrentHashMap();
- assertEquals(0, empty.size());
- assertEquals(5, map.size());
- }
-
- /**
- * toString contains toString of elements
- */
- public void testToString() {
- ConcurrentHashMap map = map5();
- String s = map.toString();
- for (int i = 1; i <= 5; ++i) {
- assertTrue(s.indexOf(String.valueOf(i)) >= 0);
- }
- }
-
- // Exception tests
-
- /**
- * Cannot create with negative capacity
- */
- public void testConstructor1() {
- try {
- new ConcurrentHashMap(-1,0,1);
- shouldThrow();
- } catch(IllegalArgumentException e){}
- }
-
- /**
- * Cannot create with negative concurrency level
- */
- public void testConstructor2() {
- try {
- new ConcurrentHashMap(1,0,-1);
- shouldThrow();
- } catch(IllegalArgumentException e){}
- }
-
- /**
- * Cannot create with only negative capacity
- */
- public void testConstructor3() {
- try {
- new ConcurrentHashMap(-1);
- shouldThrow();
- } catch(IllegalArgumentException e){}
- }
-
- /**
- * get(null) throws NPE
- */
- public void testGet_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.get(null);
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * containsKey(null) throws NPE
- */
- public void testContainsKey_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.containsKey(null);
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * containsValue(null) throws NPE
- */
- public void testContainsValue_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.containsValue(null);
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * contains(null) throws NPE
- */
- public void testContains_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.contains(null);
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * put(null,x) throws NPE
- */
- public void testPut1_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.put(null, "whatever");
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * put(x, null) throws NPE
- */
- public void testPut2_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.put("whatever", null);
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * putIfAbsent(null, x) throws NPE
- */
- public void testPutIfAbsent1_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.putIfAbsent(null, "whatever");
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * replace(null, x) throws NPE
- */
- public void testReplace_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.replace(null, "whatever");
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * replace(null, x, y) throws NPE
- */
- public void testReplaceValue_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.replace(null, one, "whatever");
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * putIfAbsent(x, null) throws NPE
- */
- public void testPutIfAbsent2_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.putIfAbsent("whatever", null);
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
-
- /**
- * replace(x, null) throws NPE
- */
- public void testReplace2_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.replace("whatever", null);
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * replace(x, null, y) throws NPE
- */
- public void testReplaceValue2_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.replace("whatever", null, "A");
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * replace(x, y, null) throws NPE
- */
- public void testReplaceValue3_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.replace("whatever", one, null);
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
-
- /**
- * remove(null) throws NPE
- */
- public void testRemove1_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.put("sadsdf", "asdads");
- c.remove(null);
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * remove(null, x) throws NPE
- */
- public void testRemove2_NullPointerException() {
- try {
- ConcurrentHashMap c = new ConcurrentHashMap(5);
- c.put("sadsdf", "asdads");
- c.remove(null, "whatever");
- shouldThrow();
- } catch(NullPointerException e){}
- }
-
- /**
- * A deserialized map equals original
- */
- public void testSerialization() {
- ConcurrentHashMap q = map5();
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- ConcurrentHashMap r = (ConcurrentHashMap)in.readObject();
- assertEquals(q.size(), r.size());
- assertTrue(q.equals(r));
- assertTrue(r.equals(q));
- } catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
-
- /**
- * SetValue of an EntrySet entry sets value in the map.
- */
- public void testSetValueWriteThrough() {
- // Adapted from a bug report by Eric Zoerner
- ConcurrentHashMap map = new ConcurrentHashMap(2, 5.0f, 1);
- assertTrue(map.isEmpty());
- for (int i = 0; i < 20; i++)
- map.put(new Integer(i), new Integer(i));
- assertFalse(map.isEmpty());
- Map.Entry entry1 = (Map.Entry)map.entrySet().iterator().next();
-
- // assert that entry1 is not 16
- assertTrue("entry is 16, test not valid",
- !entry1.getKey().equals(new Integer(16)));
-
- // remove 16 (a different key) from map
- // which just happens to cause entry1 to be cloned in map
- map.remove(new Integer(16));
- entry1.setValue("XYZ");
- assertTrue(map.containsValue("XYZ")); // fails
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ConcurrentLinkedQueueTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ConcurrentLinkedQueueTest.java
deleted file mode 100755
index 8d8e13b..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ConcurrentLinkedQueueTest.java
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class ConcurrentLinkedQueueTest extends JSR166TestCase {
-
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
-
- public static Test suite() {
- return new TestSuite(ConcurrentLinkedQueueTest.class);
- }
-
- /**
- * Create a queue of given size containing consecutive
- * Integers 0 ... n.
- */
- private ConcurrentLinkedQueue populatedQueue(int n) {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- assertTrue(q.isEmpty());
- for(int i = 0; i < n; ++i)
- assertTrue(q.offer(new Integer(i)));
- assertFalse(q.isEmpty());
- assertEquals(n, q.size());
- return q;
- }
-
- /**
- * new queue is empty
- */
- public void testConstructor1() {
- assertEquals(0, new ConcurrentLinkedQueue().size());
- }
-
- /**
- * Initializing from null Collection throws NPE
- */
- public void testConstructor3() {
- try {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue((Collection)null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection of null elements throws NPE
- */
- public void testConstructor4() {
- try {
- Integer[] ints = new Integer[SIZE];
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection with some null elements throws NPE
- */
- public void testConstructor5() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements of collection used to initialize
- */
- public void testConstructor6() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue(Arrays.asList(ints));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * isEmpty is true before add, false after
- */
- public void testEmpty() {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- assertTrue(q.isEmpty());
- q.add(one);
- assertFalse(q.isEmpty());
- q.add(two);
- q.remove();
- q.remove();
- assertTrue(q.isEmpty());
- }
-
- /**
- * size changes when elements added and removed
- */
- public void testSize() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(SIZE-i, q.size());
- q.remove();
- }
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.size());
- q.add(new Integer(i));
- }
- }
-
- /**
- * offer(null) throws NPE
- */
- public void testOfferNull() {
- try {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- q.offer(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * add(null) throws NPE
- */
- public void testAddNull() {
- try {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- q.add(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
-
- /**
- * Offer returns true
- */
- public void testOffer() {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- assertTrue(q.offer(zero));
- assertTrue(q.offer(one));
- }
-
- /**
- * add returns true
- */
- public void testAdd() {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.size());
- assertTrue(q.add(new Integer(i)));
- }
- }
-
- /**
- * addAll(null) throws NPE
- */
- public void testAddAll1() {
- try {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- q.addAll(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * addAll(this) throws IAE
- */
- public void testAddAllSelf() {
- try {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- q.addAll(q);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * addAll of a collection with null elements throws NPE
- */
- public void testAddAll2() {
- try {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- Integer[] ints = new Integer[SIZE];
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll of a collection with any null elements throws NPE after
- * possibly adding some elements
- */
- public void testAddAll3() {
- try {
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements, in traversal order, of successful addAll
- */
- public void testAddAll5() {
- try {
- Integer[] empty = new Integer[0];
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- assertFalse(q.addAll(Arrays.asList(empty)));
- assertTrue(q.addAll(Arrays.asList(ints)));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * poll succeeds unless empty
- */
- public void testPoll() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll()).intValue());
- }
- assertNull(q.poll());
- }
-
- /**
- * peek returns next element, or null if empty
- */
- public void testPeek() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.peek()).intValue());
- q.poll();
- assertTrue(q.peek() == null ||
- i != ((Integer)q.peek()).intValue());
- }
- assertNull(q.peek());
- }
-
- /**
- * element returns next element, or throws NSEE if empty
- */
- public void testElement() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.element()).intValue());
- q.poll();
- }
- try {
- q.element();
- shouldThrow();
- }
- catch (NoSuchElementException success) {}
- }
-
- /**
- * remove removes next element, or throws NSEE if empty
- */
- public void testRemove() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.remove()).intValue());
- }
- try {
- q.remove();
- shouldThrow();
- } catch (NoSuchElementException success){
- }
- }
-
- /**
- * remove(x) removes x and returns true if present
- */
- public void testRemoveElement() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- for (int i = 1; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- }
- for (int i = 0; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- assertFalse(q.remove(new Integer(i+1)));
- }
- assertTrue(q.isEmpty());
- }
-
- /**
- * contains(x) reports true when elements added but not yet removed
- */
- public void testContains() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.contains(new Integer(i)));
- q.poll();
- assertFalse(q.contains(new Integer(i)));
- }
- }
-
- /**
- * clear removes all elements
- */
- public void testClear() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- q.clear();
- assertTrue(q.isEmpty());
- assertEquals(0, q.size());
- q.add(one);
- assertFalse(q.isEmpty());
- q.clear();
- assertTrue(q.isEmpty());
- }
-
- /**
- * containsAll(c) is true when c contains a subset of elements
- */
- public void testContainsAll() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- ConcurrentLinkedQueue p = new ConcurrentLinkedQueue();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.containsAll(p));
- assertFalse(p.containsAll(q));
- p.add(new Integer(i));
- }
- assertTrue(p.containsAll(q));
- }
-
- /**
- * retainAll(c) retains only those elements of c and reports true if change
- */
- public void testRetainAll() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- ConcurrentLinkedQueue p = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- boolean changed = q.retainAll(p);
- if (i == 0)
- assertFalse(changed);
- else
- assertTrue(changed);
-
- assertTrue(q.containsAll(p));
- assertEquals(SIZE-i, q.size());
- p.remove();
- }
- }
-
- /**
- * removeAll(c) removes only those elements of c and reports true if changed
- */
- public void testRemoveAll() {
- for (int i = 1; i < SIZE; ++i) {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- ConcurrentLinkedQueue p = populatedQueue(i);
- assertTrue(q.removeAll(p));
- assertEquals(SIZE-i, q.size());
- for (int j = 0; j < i; ++j) {
- Integer I = (Integer)(p.remove());
- assertFalse(q.contains(I));
- }
- }
- }
-
- /**
- * toArray contains all elements
- */
- public void testToArray() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- Object[] o = q.toArray();
- Arrays.sort(o);
- for(int i = 0; i < o.length; i++)
- assertEquals(o[i], q.poll());
- }
-
- /**
- * toArray(a) contains all elements
- */
- public void testToArray2() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- ints = (Integer[])q.toArray(ints);
- Arrays.sort(ints);
- for(int i = 0; i < ints.length; i++)
- assertEquals(ints[i], q.poll());
- }
-
- /**
- * toArray(null) throws NPE
- */
- public void testToArray_BadArg() {
- try {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(null);
- shouldThrow();
- } catch(NullPointerException success){}
- }
-
- /**
- * toArray with incompatible array type throws CCE
- */
- public void testToArray1_BadArg() {
- try {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(new String[10] );
- shouldThrow();
- } catch(ArrayStoreException success){}
- }
-
- /**
- * iterator iterates through all elements
- */
- public void testIterator() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- int i = 0;
- Iterator it = q.iterator();
- while(it.hasNext()) {
- assertTrue(q.contains(it.next()));
- ++i;
- }
- assertEquals(i, SIZE);
- }
-
- /**
- * iterator ordering is FIFO
- */
- public void testIteratorOrdering() {
- final ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- q.add(one);
- q.add(two);
- q.add(three);
-
- int k = 0;
- for (Iterator it = q.iterator(); it.hasNext();) {
- int i = ((Integer)(it.next())).intValue();
- assertEquals(++k, i);
- }
-
- assertEquals(3, k);
- }
-
- /**
- * Modifications do not cause iterators to fail
- */
- public void testWeaklyConsistentIteration () {
- final ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- q.add(one);
- q.add(two);
- q.add(three);
-
- try {
- for (Iterator it = q.iterator(); it.hasNext();) {
- q.remove();
- it.next();
- }
- }
- catch (ConcurrentModificationException e) {
- shouldThrow();
- }
-
- assertEquals("queue should be empty again", 0, q.size());
- }
-
- /**
- * iterator.remove removes current element
- */
- public void testIteratorRemove () {
- final ConcurrentLinkedQueue q = new ConcurrentLinkedQueue();
- q.add(one);
- q.add(two);
- q.add(three);
- Iterator it = q.iterator();
- it.next();
- it.remove();
- it = q.iterator();
- assertEquals(it.next(), two);
- assertEquals(it.next(), three);
- assertFalse(it.hasNext());
- }
-
-
- /**
- * toString contains toStrings of elements
- */
- public void testToString() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- String s = q.toString();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(s.indexOf(String.valueOf(i)) >= 0);
- }
- }
-
- /**
- * A deserialized serialized queue has same elements in same order
- */
- public void testSerialization() {
- ConcurrentLinkedQueue q = populatedQueue(SIZE);
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- ConcurrentLinkedQueue r = (ConcurrentLinkedQueue)in.readObject();
- assertEquals(q.size(), r.size());
- while (!q.isEmpty())
- assertEquals(q.remove(), r.remove());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/CopyOnWriteArrayListTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/CopyOnWriteArrayListTest.java
deleted file mode 100755
index d208039..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/CopyOnWriteArrayListTest.java
+++ /dev/null
@@ -1,623 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class CopyOnWriteArrayListTest extends JSR166TestCase{
-
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
-
- public static Test suite() {
- return new TestSuite(CopyOnWriteArrayListTest.class);
- }
-
- static CopyOnWriteArrayList populatedArray(int n){
- CopyOnWriteArrayList a = new CopyOnWriteArrayList();
- assertTrue(a.isEmpty());
- for (int i = 0; i < n; ++i)
- a.add(new Integer(i));
- assertFalse(a.isEmpty());
- assertEquals(n, a.size());
- return a;
- }
-
-
- /**
- * a new list is empty
- */
- public void testConstructor() {
- CopyOnWriteArrayList a = new CopyOnWriteArrayList();
- assertTrue(a.isEmpty());
- }
-
- /**
- * new list contains all elements of initializing array
- */
- public void testConstructor2() {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- CopyOnWriteArrayList a = new CopyOnWriteArrayList(ints);
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], a.get(i));
- }
-
- /**
- * new list contains all elements of initializing collection
- */
- public void testConstructor3() {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- CopyOnWriteArrayList a = new CopyOnWriteArrayList(Arrays.asList(ints));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], a.get(i));
- }
-
-
- /**
- * addAll adds each element from the given collection
- */
- public void testAddAll() {
- CopyOnWriteArrayList full = populatedArray(3);
- Vector v = new Vector();
- v.add(three);
- v.add(four);
- v.add(five);
- full.addAll(v);
- assertEquals(6, full.size());
- }
-
- /**
- * addAllAbsent adds each element from the given collection that did not
- * already exist in the List
- */
- public void testAddAllAbsent() {
- CopyOnWriteArrayList full = populatedArray(3);
- Vector v = new Vector();
- v.add(three);
- v.add(four);
- v.add(one); // will not add this element
- full.addAllAbsent(v);
- assertEquals(5, full.size());
- }
-
- /**
- * addIfAbsent will not add the element if it already exists in the list
- */
- public void testAddIfAbsent() {
- CopyOnWriteArrayList full = populatedArray(SIZE);
- full.addIfAbsent(one);
- assertEquals(SIZE, full.size());
- }
-
- /**
- * addIfAbsent adds the element when it does not exist in the list
- */
- public void testAddIfAbsent2() {
- CopyOnWriteArrayList full = populatedArray(SIZE);
- full.addIfAbsent(three);
- assertTrue(full.contains(three));
- }
-
- /**
- * clear removes all elements from the list
- */
- public void testClear() {
- CopyOnWriteArrayList full = populatedArray(SIZE);
- full.clear();
- assertEquals(0, full.size());
- }
-
-
- /**
- * Cloned list is equal
- */
- public void testClone() {
- CopyOnWriteArrayList l1 = populatedArray(SIZE);
- CopyOnWriteArrayList l2 = (CopyOnWriteArrayList)(l1.clone());
- assertEquals(l1, l2);
- l1.clear();
- assertFalse(l1.equals(l2));
- }
-
- /**
- * contains is true for added elements
- */
- public void testContains() {
- CopyOnWriteArrayList full = populatedArray(3);
- assertTrue(full.contains(one));
- assertFalse(full.contains(five));
- }
-
- /**
- * adding at an index places it in the indicated index
- */
- public void testAddIndex() {
- CopyOnWriteArrayList full = populatedArray(3);
- full.add(0, m1);
- assertEquals(4, full.size());
- assertEquals(m1, full.get(0));
- assertEquals(zero, full.get(1));
-
- full.add(2, m2);
- assertEquals(5, full.size());
- assertEquals(m2, full.get(2));
- assertEquals(two, full.get(4));
- }
-
- /**
- * lists with same elements are equal and have same hashCode
- */
- public void testEquals() {
- CopyOnWriteArrayList a = populatedArray(3);
- CopyOnWriteArrayList b = populatedArray(3);
- assertTrue(a.equals(b));
- assertTrue(b.equals(a));
- assertEquals(a.hashCode(), b.hashCode());
- a.add(m1);
- assertFalse(a.equals(b));
- assertFalse(b.equals(a));
- b.add(m1);
- assertTrue(a.equals(b));
- assertTrue(b.equals(a));
- assertEquals(a.hashCode(), b.hashCode());
- }
-
-
- /**
- * containsAll returns true for collection with subset of elements
- */
- public void testContainsAll() {
- CopyOnWriteArrayList full = populatedArray(3);
- Vector v = new Vector();
- v.add(one);
- v.add(two);
- assertTrue(full.containsAll(v));
- v.add(six);
- assertFalse(full.containsAll(v));
- }
-
- /**
- * get returns the value at the given index
- */
- public void testGet() {
- CopyOnWriteArrayList full = populatedArray(3);
- assertEquals(0, ((Integer)full.get(0)).intValue());
- }
-
- /**
- * indexOf gives the index for the given object
- */
- public void testIndexOf() {
- CopyOnWriteArrayList full = populatedArray(3);
- assertEquals(1, full.indexOf(one));
- assertEquals(-1, full.indexOf("puppies"));
- }
-
- /**
- * indexOf gives the index based on the given index
- * at which to start searching
- */
- public void testIndexOf2() {
- CopyOnWriteArrayList full = populatedArray(3);
- assertEquals(1, full.indexOf(one, 0));
- assertEquals(-1, full.indexOf(one, 2));
- }
-
- /**
- * isEmpty returns true when empty, else false
- */
- public void testIsEmpty() {
- CopyOnWriteArrayList empty = new CopyOnWriteArrayList();
- CopyOnWriteArrayList full = populatedArray(SIZE);
- assertTrue(empty.isEmpty());
- assertFalse(full.isEmpty());
- }
-
- /**
- * iterator() returns an iterator containing the elements of the list
- */
- public void testIterator() {
- CopyOnWriteArrayList full = populatedArray(SIZE);
- Iterator i = full.iterator();
- int j;
- for(j = 0; i.hasNext(); j++)
- assertEquals(j, ((Integer)i.next()).intValue());
- assertEquals(SIZE, j);
- }
-
- /**
- * iterator.remove throws UnsupportedOperationException
- */
- public void testIteratorRemove () {
- CopyOnWriteArrayList full = populatedArray(SIZE);
- Iterator it = full.iterator();
- it.next();
- try {
- it.remove();
- shouldThrow();
- }
- catch (UnsupportedOperationException success) {}
- }
-
- /**
- * toString contains toString of elements
- */
- public void testToString() {
- CopyOnWriteArrayList full = populatedArray(3);
- String s = full.toString();
- for (int i = 0; i < 3; ++i) {
- assertTrue(s.indexOf(String.valueOf(i)) >= 0);
- }
- }
-
- /**
- * lastIndexOf returns the index for the given object
- */
- public void testLastIndexOf1() {
- CopyOnWriteArrayList full = populatedArray(3);
- full.add(one);
- full.add(three);
- assertEquals(3, full.lastIndexOf(one));
- assertEquals(-1, full.lastIndexOf(six));
- }
-
- /**
- * lastIndexOf returns the index from the given starting point
- */
- public void testlastIndexOf2() {
- CopyOnWriteArrayList full = populatedArray(3);
- full.add(one);
- full.add(three);
- assertEquals(3, full.lastIndexOf(one, 4));
- assertEquals(-1, full.lastIndexOf(three, 3));
- }
-
- /**
- * listIterator traverses all elements
- */
- public void testListIterator1() {
- CopyOnWriteArrayList full = populatedArray(SIZE);
- ListIterator i = full.listIterator();
- int j;
- for(j = 0; i.hasNext(); j++)
- assertEquals(j, ((Integer)i.next()).intValue());
- assertEquals(SIZE, j);
- }
-
- /**
- * listIterator only returns those elements after the given index
- */
- public void testListIterator2() {
- CopyOnWriteArrayList full = populatedArray(3);
- ListIterator i = full.listIterator(1);
- int j;
- for(j = 0; i.hasNext(); j++)
- assertEquals(j+1, ((Integer)i.next()).intValue());
- assertEquals(2, j);
- }
-
- /**
- * remove removes and returns the object at the given index
- */
- public void testRemove() {
- CopyOnWriteArrayList full = populatedArray(3);
- assertEquals(two, full.remove(2));
- assertEquals(2, full.size());
- }
-
- /**
- * removeAll removes all elements from the given collection
- */
- public void testRemoveAll() {
- CopyOnWriteArrayList full = populatedArray(3);
- Vector v = new Vector();
- v.add(one);
- v.add(two);
- full.removeAll(v);
- assertEquals(1, full.size());
- }
-
- /**
- * set changes the element at the given index
- */
- public void testSet() {
- CopyOnWriteArrayList full = populatedArray(3);
- assertEquals(two, full.set(2, four));
- assertEquals(4, ((Integer)full.get(2)).intValue());
- }
-
- /**
- * size returns the number of elements
- */
- public void testSize() {
- CopyOnWriteArrayList empty = new CopyOnWriteArrayList();
- CopyOnWriteArrayList full = populatedArray(SIZE);
- assertEquals(SIZE, full.size());
- assertEquals(0, empty.size());
- }
-
- /**
- * toArray returns an Object array containing all elements from the list
- */
- public void testToArray() {
- CopyOnWriteArrayList full = populatedArray(3);
- Object[] o = full.toArray();
- assertEquals(3, o.length);
- assertEquals(0, ((Integer)o[0]).intValue());
- assertEquals(1, ((Integer)o[1]).intValue());
- assertEquals(2, ((Integer)o[2]).intValue());
- }
-
- /**
- * toArray returns an Integer array containing all elements from
- * the list
- */
- public void testToArray2() {
- CopyOnWriteArrayList full = populatedArray(3);
- Integer[] i = new Integer[3];
- i = (Integer[])full.toArray(i);
- assertEquals(3, i.length);
- assertEquals(0, i[0].intValue());
- assertEquals(1, i[1].intValue());
- assertEquals(2, i[2].intValue());
- }
-
-
- /**
- * sublists contains elements at indexes offset from their base
- */
- public void testSubList() {
- CopyOnWriteArrayList a = populatedArray(10);
- assertTrue(a.subList(1,1).isEmpty());
- for(int j = 0; j < 9; ++j) {
- for(int i = j ; i < 10; ++i) {
- List b = a.subList(j,i);
- for(int k = j; k < i; ++k) {
- assertEquals(new Integer(k), b.get(k-j));
- }
- }
- }
-
- List s = a.subList(2, 5);
- assertEquals(s.size(), 3);
- s.set(2, m1);
- assertEquals(a.get(4), m1);
- s.clear();
- assertEquals(a.size(), 7);
- }
-
- // Exception tests
-
- /**
- * toArray throws an ArrayStoreException when the given array
- * can not store the objects inside the list
- */
- public void testToArray_ArrayStoreException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.add("zfasdfsdf");
- c.add("asdadasd");
- c.toArray(new Long[5]);
- shouldThrow();
- } catch(ArrayStoreException e){}
- }
-
- /**
- * get throws an IndexOutOfBoundsException on a negative index
- */
- public void testGet1_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.get(-1);
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * get throws an IndexOutOfBoundsException on a too high index
- */
- public void testGet2_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.add("asdasd");
- c.add("asdad");
- c.get(100);
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * set throws an IndexOutOfBoundsException on a negative index
- */
- public void testSet1_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.set(-1,"qwerty");
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * set throws an IndexOutOfBoundsException on a too high index
- */
- public void testSet2() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.add("asdasd");
- c.add("asdad");
- c.set(100, "qwerty");
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * add throws an IndexOutOfBoundsException on a negative index
- */
- public void testAdd1_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.add(-1,"qwerty");
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * add throws an IndexOutOfBoundsException on a too high index
- */
- public void testAdd2_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.add("asdasd");
- c.add("asdasdasd");
- c.add(100, "qwerty");
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * remove throws an IndexOutOfBoundsException on a negative index
- */
- public void testRemove1_IndexOutOfBounds() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.remove(-1);
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * remove throws an IndexOutOfBoundsException on a too high index
- */
- public void testRemove2_IndexOutOfBounds() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.add("asdasd");
- c.add("adasdasd");
- c.remove(100);
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * addAll throws an IndexOutOfBoundsException on a negative index
- */
- public void testAddAll1_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.addAll(-1,new LinkedList());
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * addAll throws an IndexOutOfBoundsException on a too high index
- */
- public void testAddAll2_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.add("asdasd");
- c.add("asdasdasd");
- c.addAll(100, new LinkedList());
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * listIterator throws an IndexOutOfBoundsException on a negative index
- */
- public void testListIterator1_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.listIterator(-1);
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * listIterator throws an IndexOutOfBoundsException on a too high index
- */
- public void testListIterator2_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.add("adasd");
- c.add("asdasdas");
- c.listIterator(100);
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * subList throws an IndexOutOfBoundsException on a negative index
- */
- public void testSubList1_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.subList(-1,100);
-
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * subList throws an IndexOutOfBoundsException on a too high index
- */
- public void testSubList2_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.add("asdasd");
- c.subList(1,100);
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * subList throws IndexOutOfBoundsException when the second index
- * is lower then the first
- */
- public void testSubList3_IndexOutOfBoundsException() {
- try {
- CopyOnWriteArrayList c = new CopyOnWriteArrayList();
- c.subList(3,1);
-
- shouldThrow();
- } catch(IndexOutOfBoundsException e){}
- }
-
- /**
- * a deserialized serialiszed list is equal
- */
- public void testSerialization() {
- CopyOnWriteArrayList q = populatedArray(SIZE);
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- CopyOnWriteArrayList r = (CopyOnWriteArrayList)in.readObject();
- assertEquals(q.size(), r.size());
- assertTrue(q.equals(r));
- assertTrue(r.equals(q));
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/CopyOnWriteArraySetTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/CopyOnWriteArraySetTest.java
deleted file mode 100755
index 809fc59..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/CopyOnWriteArraySetTest.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class CopyOnWriteArraySetTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(CopyOnWriteArraySetTest.class);
- }
-
- static CopyOnWriteArraySet populatedSet(int n){
- CopyOnWriteArraySet a = new CopyOnWriteArraySet();
- assertTrue(a.isEmpty());
- for (int i = 0; i < n; ++i)
- a.add(new Integer(i));
- assertFalse(a.isEmpty());
- assertEquals(n, a.size());
- return a;
- }
-
- /**
- * Default-constructed set is empty
- */
- public void testConstructor() {
- CopyOnWriteArraySet a = new CopyOnWriteArraySet();
- assertTrue(a.isEmpty());
- }
-
- /**
- * Collection-constructed set holds all of its elements
- */
- public void testConstructor3() {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- CopyOnWriteArraySet a = new CopyOnWriteArraySet(Arrays.asList(ints));
- for (int i = 0; i < SIZE; ++i)
- assertTrue(a.contains(ints[i]));
- }
-
-
- /**
- * addAll adds each element from the given collection
- */
- public void testAddAll() {
- CopyOnWriteArraySet full = populatedSet(3);
- Vector v = new Vector();
- v.add(three);
- v.add(four);
- v.add(five);
- full.addAll(v);
- assertEquals(6, full.size());
- }
-
- /**
- * addAll adds each element from the given collection that did not
- * already exist in the set
- */
- public void testAddAll2() {
- CopyOnWriteArraySet full = populatedSet(3);
- Vector v = new Vector();
- v.add(three);
- v.add(four);
- v.add(one); // will not add this element
- full.addAll(v);
- assertEquals(5, full.size());
- }
-
- /**
- * add will not add the element if it already exists in the set
- */
- public void testAdd2() {
- CopyOnWriteArraySet full = populatedSet(3);
- full.add(one);
- assertEquals(3, full.size());
- }
-
- /**
- * add adds the element when it does not exist
- * in the set
- */
- public void testAdd3() {
- CopyOnWriteArraySet full = populatedSet(3);
- full.add(three);
- assertTrue(full.contains(three));
- }
-
- /**
- * clear removes all elements from the set
- */
- public void testClear() {
- CopyOnWriteArraySet full = populatedSet(3);
- full.clear();
- assertEquals(0, full.size());
- }
-
- /**
- * contains returns true for added elements
- */
- public void testContains() {
- CopyOnWriteArraySet full = populatedSet(3);
- assertTrue(full.contains(one));
- assertFalse(full.contains(five));
- }
-
- /**
- * Sets with equal elements are equal
- */
- public void testEquals() {
- CopyOnWriteArraySet a = populatedSet(3);
- CopyOnWriteArraySet b = populatedSet(3);
- assertTrue(a.equals(b));
- assertTrue(b.equals(a));
- assertEquals(a.hashCode(), b.hashCode());
- a.add(m1);
- assertFalse(a.equals(b));
- assertFalse(b.equals(a));
- b.add(m1);
- assertTrue(a.equals(b));
- assertTrue(b.equals(a));
- assertEquals(a.hashCode(), b.hashCode());
- }
-
-
- /**
- * containsAll returns true for collections with subset of elements
- */
- public void testContainsAll() {
- CopyOnWriteArraySet full = populatedSet(3);
- Vector v = new Vector();
- v.add(one);
- v.add(two);
- assertTrue(full.containsAll(v));
- v.add(six);
- assertFalse(full.containsAll(v));
- }
-
- /**
- * isEmpty is true when empty, else false
- */
- public void testIsEmpty() {
- CopyOnWriteArraySet empty = new CopyOnWriteArraySet();
- CopyOnWriteArraySet full = populatedSet(3);
- assertTrue(empty.isEmpty());
- assertFalse(full.isEmpty());
- }
-
- /**
- * iterator() returns an iterator containing the elements of the set
- */
- public void testIterator() {
- CopyOnWriteArraySet full = populatedSet(3);
- Iterator i = full.iterator();
- int j;
- for(j = 0; i.hasNext(); j++)
- assertEquals(j, ((Integer)i.next()).intValue());
- assertEquals(3, j);
- }
-
- /**
- * iterator remove is unsupported
- */
- public void testIteratorRemove () {
- CopyOnWriteArraySet full = populatedSet(3);
- Iterator it = full.iterator();
- it.next();
- try {
- it.remove();
- shouldThrow();
- }
- catch (UnsupportedOperationException success) {}
- }
-
- /**
- * toString holds toString of elements
- */
- public void testToString() {
- CopyOnWriteArraySet full = populatedSet(3);
- String s = full.toString();
- for (int i = 0; i < 3; ++i) {
- assertTrue(s.indexOf(String.valueOf(i)) >= 0);
- }
- }
-
-
- /**
- * removeAll removes all elements from the given collection
- */
- public void testRemoveAll() {
- CopyOnWriteArraySet full = populatedSet(3);
- Vector v = new Vector();
- v.add(one);
- v.add(two);
- full.removeAll(v);
- assertEquals(1, full.size());
- }
-
-
- /**
- * remove removes an element
- */
- public void testRemove() {
- CopyOnWriteArraySet full = populatedSet(3);
- full.remove(one);
- assertFalse(full.contains(one));
- assertEquals(2, full.size());
- }
-
- /**
- * size returns the number of elements
- */
- public void testSize() {
- CopyOnWriteArraySet empty = new CopyOnWriteArraySet();
- CopyOnWriteArraySet full = populatedSet(3);
- assertEquals(3, full.size());
- assertEquals(0, empty.size());
- }
-
- /**
- * toArray returns an Object array containing all elements from the set
- */
- public void testToArray() {
- CopyOnWriteArraySet full = populatedSet(3);
- Object[] o = full.toArray();
- assertEquals(3, o.length);
- assertEquals(0, ((Integer)o[0]).intValue());
- assertEquals(1, ((Integer)o[1]).intValue());
- assertEquals(2, ((Integer)o[2]).intValue());
- }
-
- /**
- * toArray returns an Integer array containing all elements from
- * the set
- */
- public void testToArray2() {
- CopyOnWriteArraySet full = populatedSet(3);
- Integer[] i = new Integer[3];
- i = (Integer[])full.toArray(i);
- assertEquals(3, i.length);
- assertEquals(0, i[0].intValue());
- assertEquals(1, i[1].intValue());
- assertEquals(2, i[2].intValue());
- }
-
-
- /**
- * toArray throws an ArrayStoreException when the given array can
- * not store the objects inside the set
- */
- public void testToArray_ArrayStoreException() {
- try {
- CopyOnWriteArraySet c = new CopyOnWriteArraySet();
- c.add("zfasdfsdf");
- c.add("asdadasd");
- c.toArray(new Long[5]);
- shouldThrow();
- } catch(ArrayStoreException e){}
- }
-
- /**
- * A deserialized serialized set is equal
- */
- public void testSerialization() {
- CopyOnWriteArraySet q = populatedSet(SIZE);
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- CopyOnWriteArraySet r = (CopyOnWriteArraySet)in.readObject();
- assertEquals(q.size(), r.size());
- assertTrue(q.equals(r));
- assertTrue(r.equals(q));
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/CountDownLatchTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/CountDownLatchTest.java
deleted file mode 100755
index 0d69889..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/CountDownLatchTest.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-
-public class CountDownLatchTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(CountDownLatchTest.class);
- }
-
- /**
- * negative constructor argument throws IAE
- */
- public void testConstructor() {
- try {
- new CountDownLatch(-1);
- shouldThrow();
- } catch(IllegalArgumentException success){}
- }
-
- /**
- * getCount returns initial count and decreases after countDown
- */
- public void testGetCount() {
- final CountDownLatch l = new CountDownLatch(2);
- assertEquals(2, l.getCount());
- l.countDown();
- assertEquals(1, l.getCount());
- }
-
- /**
- * countDown decrements count when positive and has no effect when zero
- */
- public void testCountDown() {
- final CountDownLatch l = new CountDownLatch(1);
- assertEquals(1, l.getCount());
- l.countDown();
- assertEquals(0, l.getCount());
- l.countDown();
- assertEquals(0, l.getCount());
- }
-
- /**
- * await returns after countDown to zero, but not before
- */
- public void testAwait() {
- final CountDownLatch l = new CountDownLatch(2);
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertTrue(l.getCount() > 0);
- l.await();
- threadAssertTrue(l.getCount() == 0);
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- }
- });
- t.start();
- try {
- assertEquals(l.getCount(), 2);
- Thread.sleep(SHORT_DELAY_MS);
- l.countDown();
- assertEquals(l.getCount(), 1);
- l.countDown();
- assertEquals(l.getCount(), 0);
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
-
- /**
- * timed await returns after countDown to zero
- */
- public void testTimedAwait() {
- final CountDownLatch l = new CountDownLatch(2);
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertTrue(l.getCount() > 0);
- threadAssertTrue(l.await(SMALL_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- }
- });
- t.start();
- try {
- assertEquals(l.getCount(), 2);
- Thread.sleep(SHORT_DELAY_MS);
- l.countDown();
- assertEquals(l.getCount(), 1);
- l.countDown();
- assertEquals(l.getCount(), 0);
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * await throws IE if interrupted before counted down
- */
- public void testAwait_InterruptedException() {
- final CountDownLatch l = new CountDownLatch(1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertTrue(l.getCount() > 0);
- l.await();
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- t.start();
- try {
- assertEquals(l.getCount(), 1);
- t.interrupt();
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * timed await throws IE if interrupted before counted down
- */
- public void testTimedAwait_InterruptedException() {
- final CountDownLatch l = new CountDownLatch(1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertTrue(l.getCount() > 0);
- l.await(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(l.getCount(), 1);
- t.interrupt();
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * timed await times out if not counted down before timeout
- */
- public void testAwaitTimeout() {
- final CountDownLatch l = new CountDownLatch(1);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertTrue(l.getCount() > 0);
- threadAssertFalse(l.await(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(l.getCount() > 0);
- } catch(InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- t.start();
- try {
- assertEquals(l.getCount(), 1);
- t.join();
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * toString indicates current count
- */
- public void testToString() {
- CountDownLatch s = new CountDownLatch(2);
- String us = s.toString();
- assertTrue(us.indexOf("Count = 2") >= 0);
- s.countDown();
- String s1 = s.toString();
- assertTrue(s1.indexOf("Count = 1") >= 0);
- s.countDown();
- String s2 = s.toString();
- assertTrue(s2.indexOf("Count = 0") >= 0);
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/CyclicBarrierTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/CyclicBarrierTest.java
deleted file mode 100755
index 9eac1a7..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/CyclicBarrierTest.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-
-public class CyclicBarrierTest extends JSR166TestCase{
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(CyclicBarrierTest.class);
- }
-
- private volatile int countAction;
- private class MyAction implements Runnable {
- public void run() { ++countAction; }
- }
-
- /**
- * Creating with negative parties throws IAE
- */
- public void testConstructor1() {
- try {
- new CyclicBarrier(-1, (Runnable)null);
- shouldThrow();
- } catch(IllegalArgumentException e){}
- }
-
- /**
- * Creating with negative parties and no action throws IAE
- */
- public void testConstructor2() {
- try {
- new CyclicBarrier(-1);
- shouldThrow();
- } catch(IllegalArgumentException e){}
- }
-
- /**
- * getParties returns the number of parties given in constructor
- */
- public void testGetParties() {
- CyclicBarrier b = new CyclicBarrier(2);
- assertEquals(2, b.getParties());
- assertEquals(0, b.getNumberWaiting());
- }
-
- /**
- * A 1-party barrier triggers after single await
- */
- public void testSingleParty() {
- try {
- CyclicBarrier b = new CyclicBarrier(1);
- assertEquals(1, b.getParties());
- assertEquals(0, b.getNumberWaiting());
- b.await();
- b.await();
- assertEquals(0, b.getNumberWaiting());
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * The supplied barrier action is run at barrier
- */
- public void testBarrierAction() {
- try {
- countAction = 0;
- CyclicBarrier b = new CyclicBarrier(1, new MyAction());
- assertEquals(1, b.getParties());
- assertEquals(0, b.getNumberWaiting());
- b.await();
- b.await();
- assertEquals(0, b.getNumberWaiting());
- assertEquals(countAction, 2);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * A 2-party/thread barrier triggers after both threads invoke await
- */
- public void testTwoParties() {
- final CyclicBarrier b = new CyclicBarrier(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- b.await();
- b.await();
- b.await();
- b.await();
- } catch(Exception e){
- threadUnexpectedException();
- }}});
-
- try {
- t.start();
- b.await();
- b.await();
- b.await();
- b.await();
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * An interruption in one party causes others waiting in await to
- * throw BrokenBarrierException
- */
- public void testAwait1_Interrupted_BrokenBarrier() {
- final CyclicBarrier c = new CyclicBarrier(3);
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await();
- threadShouldThrow();
- } catch(InterruptedException success){}
- catch(Exception b){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await();
- threadShouldThrow();
- } catch(BrokenBarrierException success){
- } catch(Exception i){
- threadUnexpectedException();
- }
- }
- });
- try {
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- t1.interrupt();
- t1.join();
- t2.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * An interruption in one party causes others waiting in timed await to
- * throw BrokenBarrierException
- */
- public void testAwait2_Interrupted_BrokenBarrier() {
- final CyclicBarrier c = new CyclicBarrier(3);
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(InterruptedException success){
- } catch(Exception b){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(BrokenBarrierException success){
- } catch(Exception i){
- threadUnexpectedException();
- }
- }
- });
- try {
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- t1.interrupt();
- t1.join();
- t2.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A timeout in timed await throws TimeoutException
- */
- public void testAwait3_TimeOutException() {
- final CyclicBarrier c = new CyclicBarrier(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- c.await(SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(TimeoutException success){
- } catch(Exception b){
- threadUnexpectedException();
-
- }
- }
- });
- try {
- t.start();
- t.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A timeout in one party causes others waiting in timed await to
- * throw BrokenBarrierException
- */
- public void testAwait4_Timeout_BrokenBarrier() {
- final CyclicBarrier c = new CyclicBarrier(3);
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await(SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(TimeoutException success){
- } catch(Exception b){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(BrokenBarrierException success){
- } catch(Exception i){
- threadUnexpectedException();
- }
- }
- });
- try {
- t1.start();
- t2.start();
- t1.join();
- t2.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A timeout in one party causes others waiting in await to
- * throw BrokenBarrierException
- */
- public void testAwait5_Timeout_BrokenBarrier() {
- final CyclicBarrier c = new CyclicBarrier(3);
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await(SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(TimeoutException success){
- } catch(Exception b){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await();
- threadShouldThrow();
- } catch(BrokenBarrierException success){
- } catch(Exception i){
- threadUnexpectedException();
- }
- }
- });
- try {
- t1.start();
- t2.start();
- t1.join();
- t2.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A reset of an active barrier causes waiting threads to throw
- * BrokenBarrierException
- */
- public void testReset_BrokenBarrier() {
- final CyclicBarrier c = new CyclicBarrier(3);
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await();
- threadShouldThrow();
- } catch(BrokenBarrierException success){}
- catch(Exception b){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await();
- threadShouldThrow();
- } catch(BrokenBarrierException success){
- } catch(Exception i){
- threadUnexpectedException();
- }
- }
- });
- try {
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- c.reset();
- t1.join();
- t2.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A reset before threads enter barrier does not throw
- * BrokenBarrierException
- */
- public void testReset_NoBrokenBarrier() {
- final CyclicBarrier c = new CyclicBarrier(3);
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await();
- } catch(Exception b){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- c.await();
- } catch(Exception i){
- threadUnexpectedException();
- }
- }
- });
- try {
- c.reset();
- t1.start();
- t2.start();
- c.await();
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/DelayQueueTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/DelayQueueTest.java
deleted file mode 100755
index e332513..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/DelayQueueTest.java
+++ /dev/null
@@ -1,985 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-
-public class DelayQueueTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
-
- public static Test suite() {
- return new TestSuite(DelayQueueTest.class);
- }
-
- private static final int NOCAP = Integer.MAX_VALUE;
-
- /**
- * A delayed implementation for testing.
- * Most tests use Pseudodelays, where delays are all elapsed
- * (so, no blocking solely for delays) but are still ordered
- */
- static class PDelay implements Delayed {
- int pseudodelay;
- PDelay(int i) { pseudodelay = Integer.MIN_VALUE + i; }
- // BEGIN android-changed
- public int compareTo(Delayed y) {
- int i = pseudodelay;
- int j = ((PDelay)y).pseudodelay;
- if (i < j) return -1;
- if (i > j) return 1;
- return 0;
- }
- // END android-changed
- public int compareTo(PDelay y) {
- int i = pseudodelay;
- int j = ((PDelay)y).pseudodelay;
- if (i < j) return -1;
- if (i > j) return 1;
- return 0;
- }
-
- public boolean equals(Object other) {
- return ((PDelay)other).pseudodelay == pseudodelay;
- }
- public boolean equals(PDelay other) {
- return ((PDelay)other).pseudodelay == pseudodelay;
- }
-
-
- public long getDelay(TimeUnit ignore) {
- return pseudodelay;
- }
- public int intValue() {
- return pseudodelay;
- }
-
- public String toString() {
- return String.valueOf(pseudodelay);
- }
- }
-
-
- /**
- * Delayed implementation that actually delays
- */
- static class NanoDelay implements Delayed {
- long trigger;
- NanoDelay(long i) {
- trigger = System.nanoTime() + i;
- }
- // BEGIN android-changed
- public int compareTo(Delayed y) {
- long i = trigger;
- long j = ((NanoDelay)y).trigger;
- if (i < j) return -1;
- if (i > j) return 1;
- return 0;
- }
- // END android-changed
- public int compareTo(NanoDelay y) {
- long i = trigger;
- long j = ((NanoDelay)y).trigger;
- if (i < j) return -1;
- if (i > j) return 1;
- return 0;
- }
-
- public boolean equals(Object other) {
- return ((NanoDelay)other).trigger == trigger;
- }
- public boolean equals(NanoDelay other) {
- return ((NanoDelay)other).trigger == trigger;
- }
-
- public long getDelay(TimeUnit unit) {
- long n = trigger - System.nanoTime();
- return unit.convert(n, TimeUnit.NANOSECONDS);
- }
-
- public long getTriggerTime() {
- return trigger;
- }
-
- public String toString() {
- return String.valueOf(trigger);
- }
- }
-
-
- /**
- * Create a queue of given size containing consecutive
- * PDelays 0 ... n.
- */
- private DelayQueue populatedQueue(int n) {
- DelayQueue q = new DelayQueue();
- assertTrue(q.isEmpty());
- for(int i = n-1; i >= 0; i-=2)
- assertTrue(q.offer(new PDelay(i)));
- for(int i = (n & 1); i < n; i+=2)
- assertTrue(q.offer(new PDelay(i)));
- assertFalse(q.isEmpty());
- assertEquals(NOCAP, q.remainingCapacity());
- assertEquals(n, q.size());
- return q;
- }
-
- /**
- * A new queue has unbounded capacity
- */
- public void testConstructor1() {
- assertEquals(NOCAP, new DelayQueue().remainingCapacity());
- }
-
- /**
- * Initializing from null Collection throws NPE
- */
- public void testConstructor3() {
- try {
- DelayQueue q = new DelayQueue(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection of null elements throws NPE
- */
- public void testConstructor4() {
- try {
- PDelay[] ints = new PDelay[SIZE];
- DelayQueue q = new DelayQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection with some null elements throws NPE
- */
- public void testConstructor5() {
- try {
- PDelay[] ints = new PDelay[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new PDelay(i);
- DelayQueue q = new DelayQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements of collection used to initialize
- */
- public void testConstructor6() {
- try {
- PDelay[] ints = new PDelay[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new PDelay(i);
- DelayQueue q = new DelayQueue(Arrays.asList(ints));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * isEmpty is true before add, false after
- */
- public void testEmpty() {
- DelayQueue q = new DelayQueue();
- assertTrue(q.isEmpty());
- assertEquals(NOCAP, q.remainingCapacity());
- q.add(new PDelay(1));
- assertFalse(q.isEmpty());
- q.add(new PDelay(2));
- q.remove();
- q.remove();
- assertTrue(q.isEmpty());
- }
-
- /**
- * remainingCapacity does not change when elementa added or removed,
- * but size does
- */
- public void testRemainingCapacity() {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(NOCAP, q.remainingCapacity());
- assertEquals(SIZE-i, q.size());
- q.remove();
- }
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(NOCAP, q.remainingCapacity());
- assertEquals(i, q.size());
- q.add(new PDelay(i));
- }
- }
-
- /**
- * offer(null) throws NPE
- */
- public void testOfferNull() {
- try {
- DelayQueue q = new DelayQueue();
- q.offer(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * add(null) throws NPE
- */
- public void testAddNull() {
- try {
- DelayQueue q = new DelayQueue();
- q.add(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * offer non-null succeeds
- */
- public void testOffer() {
- DelayQueue q = new DelayQueue();
- assertTrue(q.offer(new PDelay(0)));
- assertTrue(q.offer(new PDelay(1)));
- }
-
- /**
- * add succeeds
- */
- public void testAdd() {
- DelayQueue q = new DelayQueue();
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.size());
- assertTrue(q.add(new PDelay(i)));
- }
- }
-
- /**
- * addAll(null) throws NPE
- */
- public void testAddAll1() {
- try {
- DelayQueue q = new DelayQueue();
- q.addAll(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
-
- /**
- * addAll(this) throws IAE
- */
- public void testAddAllSelf() {
- try {
- DelayQueue q = populatedQueue(SIZE);
- q.addAll(q);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * addAll of a collection with null elements throws NPE
- */
- public void testAddAll2() {
- try {
- DelayQueue q = new DelayQueue();
- PDelay[] ints = new PDelay[SIZE];
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll of a collection with any null elements throws NPE after
- * possibly adding some elements
- */
- public void testAddAll3() {
- try {
- DelayQueue q = new DelayQueue();
- PDelay[] ints = new PDelay[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new PDelay(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements of successful addAll
- */
- public void testAddAll5() {
- try {
- PDelay[] empty = new PDelay[0];
- PDelay[] ints = new PDelay[SIZE];
- for (int i = SIZE-1; i >= 0; --i)
- ints[i] = new PDelay(i);
- DelayQueue q = new DelayQueue();
- assertFalse(q.addAll(Arrays.asList(empty)));
- assertTrue(q.addAll(Arrays.asList(ints)));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * put(null) throws NPE
- */
- public void testPutNull() {
- try {
- DelayQueue q = new DelayQueue();
- q.put(null);
- shouldThrow();
- }
- catch (NullPointerException success){
- }
- }
-
- /**
- * all elements successfully put are contained
- */
- public void testPut() {
- try {
- DelayQueue q = new DelayQueue();
- for (int i = 0; i < SIZE; ++i) {
- PDelay I = new PDelay(i);
- q.put(I);
- assertTrue(q.contains(I));
- }
- assertEquals(SIZE, q.size());
- }
- finally {
- }
- }
-
- /**
- * put doesn't block waiting for take
- */
- public void testPutWithTake() {
- final DelayQueue q = new DelayQueue();
- Thread t = new Thread(new Runnable() {
- public void run() {
- int added = 0;
- try {
- q.put(new PDelay(0));
- ++added;
- q.put(new PDelay(0));
- ++added;
- q.put(new PDelay(0));
- ++added;
- q.put(new PDelay(0));
- ++added;
- threadAssertTrue(added == 4);
- } finally {
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- q.take();
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * timed offer does not time out
- */
- public void testTimedOffer() {
- final DelayQueue q = new DelayQueue();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.put(new PDelay(0));
- q.put(new PDelay(0));
- threadAssertTrue(q.offer(new PDelay(0), SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(q.offer(new PDelay(0), LONG_DELAY_MS, TimeUnit.MILLISECONDS));
- } finally { }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * take retrieves elements in priority order
- */
- public void testTake() {
- try {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(new PDelay(i), ((PDelay)q.take()));
- }
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * take blocks interruptibly when empty
- */
- public void testTakeFromEmpty() {
- final DelayQueue q = new DelayQueue();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){ }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Take removes existing elements until empty, then blocks interruptibly
- */
- public void testBlockingTake() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- threadAssertEquals(new PDelay(i), ((PDelay)q.take()));
- }
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
-
- /**
- * poll succeeds unless empty
- */
- public void testPoll() {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(new PDelay(i), ((PDelay)q.poll()));
- }
- assertNull(q.poll());
- }
-
- /**
- * timed pool with zero timeout succeeds when non-empty, else times out
- */
- public void testTimedPoll0() {
- try {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(new PDelay(i), ((PDelay)q.poll(0, TimeUnit.MILLISECONDS)));
- }
- assertNull(q.poll(0, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * timed pool with nonzero timeout succeeds when non-empty, else times out
- */
- public void testTimedPoll() {
- try {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(new PDelay(i), ((PDelay)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)));
- }
- assertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * Interrupted timed poll throws InterruptedException instead of
- * returning timeout status
- */
- public void testInterruptedTimedPoll() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- threadAssertEquals(new PDelay(i), ((PDelay)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)));
- }
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException success){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * timed poll before a delayed offer fails; after offer succeeds;
- * on interruption throws
- */
- public void testTimedPollWithOffer() {
- final DelayQueue q = new DelayQueue();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadFail("Should block");
- } catch (InterruptedException success) { }
- }
- });
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- assertTrue(q.offer(new PDelay(0), SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * peek returns next element, or null if empty
- */
- public void testPeek() {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(new PDelay(i), ((PDelay)q.peek()));
- q.poll();
- assertTrue(q.peek() == null ||
- i != ((PDelay)q.peek()).intValue());
- }
- assertNull(q.peek());
- }
-
- /**
- * element returns next element, or throws NSEE if empty
- */
- public void testElement() {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(new PDelay(i), ((PDelay)q.element()));
- q.poll();
- }
- try {
- q.element();
- shouldThrow();
- }
- catch (NoSuchElementException success) {}
- }
-
- /**
- * remove removes next element, or throws NSEE if empty
- */
- public void testRemove() {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(new PDelay(i), ((PDelay)q.remove()));
- }
- try {
- q.remove();
- shouldThrow();
- } catch (NoSuchElementException success){
- }
- }
-
- /**
- * remove(x) removes x and returns true if present
- */
- public void testRemoveElement() {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 1; i < SIZE; i+=2) {
- assertTrue(q.remove(new PDelay(i)));
- }
- for (int i = 0; i < SIZE; i+=2) {
- assertTrue(q.remove(new PDelay(i)));
- assertFalse(q.remove(new PDelay(i+1)));
- }
- assertTrue(q.isEmpty());
- }
-
- /**
- * contains(x) reports true when elements added but not yet removed
- */
- public void testContains() {
- DelayQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.contains(new PDelay(i)));
- q.poll();
- assertFalse(q.contains(new PDelay(i)));
- }
- }
-
- /**
- * clear removes all elements
- */
- public void testClear() {
- DelayQueue q = populatedQueue(SIZE);
- q.clear();
- assertTrue(q.isEmpty());
- assertEquals(0, q.size());
- assertEquals(NOCAP, q.remainingCapacity());
- q.add(new PDelay(1));
- assertFalse(q.isEmpty());
- q.clear();
- assertTrue(q.isEmpty());
- }
-
- /**
- * containsAll(c) is true when c contains a subset of elements
- */
- public void testContainsAll() {
- DelayQueue q = populatedQueue(SIZE);
- DelayQueue p = new DelayQueue();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.containsAll(p));
- assertFalse(p.containsAll(q));
- p.add(new PDelay(i));
- }
- assertTrue(p.containsAll(q));
- }
-
- /**
- * retainAll(c) retains only those elements of c and reports true if changed
- */
- public void testRetainAll() {
- DelayQueue q = populatedQueue(SIZE);
- DelayQueue p = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- boolean changed = q.retainAll(p);
- if (i == 0)
- assertFalse(changed);
- else
- assertTrue(changed);
-
- assertTrue(q.containsAll(p));
- assertEquals(SIZE-i, q.size());
- p.remove();
- }
- }
-
- /**
- * removeAll(c) removes only those elements of c and reports true if changed
- */
- public void testRemoveAll() {
- for (int i = 1; i < SIZE; ++i) {
- DelayQueue q = populatedQueue(SIZE);
- DelayQueue p = populatedQueue(i);
- assertTrue(q.removeAll(p));
- assertEquals(SIZE-i, q.size());
- for (int j = 0; j < i; ++j) {
- PDelay I = (PDelay)(p.remove());
- assertFalse(q.contains(I));
- }
- }
- }
-
- /**
- * toArray contains all elements
- */
- public void testToArray() {
- DelayQueue q = populatedQueue(SIZE);
- Object[] o = q.toArray();
- Arrays.sort(o);
- try {
- for(int i = 0; i < o.length; i++)
- assertEquals(o[i], q.take());
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * toArray(a) contains all elements
- */
- public void testToArray2() {
- DelayQueue q = populatedQueue(SIZE);
- PDelay[] ints = new PDelay[SIZE];
- ints = (PDelay[])q.toArray(ints);
- Arrays.sort(ints);
- try {
- for(int i = 0; i < ints.length; i++)
- assertEquals(ints[i], q.take());
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
-
- /**
- * toArray(null) throws NPE
- */
- public void testToArray_BadArg() {
- try {
- DelayQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(null);
- shouldThrow();
- } catch(NullPointerException success){}
- }
-
- /**
- * toArray with incompatible array type throws CCE
- */
- public void testToArray1_BadArg() {
- try {
- DelayQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(new String[10] );
- shouldThrow();
- } catch(ArrayStoreException success){}
- }
-
- /**
- * iterator iterates through all elements
- */
- public void testIterator() {
- DelayQueue q = populatedQueue(SIZE);
- int i = 0;
- Iterator it = q.iterator();
- while(it.hasNext()) {
- assertTrue(q.contains(it.next()));
- ++i;
- }
- assertEquals(i, SIZE);
- }
-
- /**
- * iterator.remove removes current element
- */
- public void testIteratorRemove () {
- final DelayQueue q = new DelayQueue();
- q.add(new PDelay(2));
- q.add(new PDelay(1));
- q.add(new PDelay(3));
- Iterator it = q.iterator();
- it.next();
- it.remove();
- it = q.iterator();
- assertEquals(it.next(), new PDelay(2));
- assertEquals(it.next(), new PDelay(3));
- assertFalse(it.hasNext());
- }
-
-
- /**
- * toString contains toStrings of elements
- */
- public void testToString() {
- DelayQueue q = populatedQueue(SIZE);
- String s = q.toString();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(s.indexOf(String.valueOf(Integer.MIN_VALUE+i)) >= 0);
- }
- }
-
- /**
- * offer transfers elements across Executor tasks
- */
- public void testPollInExecutor() {
- final DelayQueue q = new DelayQueue();
- ExecutorService executor = Executors.newFixedThreadPool(2);
- executor.execute(new Runnable() {
- public void run() {
- threadAssertNull(q.poll());
- try {
- threadAssertTrue(null != q.poll(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(q.isEmpty());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- executor.execute(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SHORT_DELAY_MS);
- q.put(new PDelay(1));
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
- joinPool(executor);
-
- }
-
-
- /**
- * Delayed actions do not occur until their delay elapses
- */
- public void testDelay() {
- DelayQueue q = new DelayQueue();
- NanoDelay[] elements = new NanoDelay[SIZE];
- for (int i = 0; i < SIZE; ++i) {
- elements[i] = new NanoDelay(1000000000L + 1000000L * (SIZE - i));
- }
- for (int i = 0; i < SIZE; ++i) {
- q.add(elements[i]);
- }
-
- try {
- long last = 0;
- for (int i = 0; i < SIZE; ++i) {
- NanoDelay e = (NanoDelay)(q.take());
- long tt = e.getTriggerTime();
- assertTrue(tt <= System.nanoTime());
- if (i != 0)
- assertTrue(tt >= last);
- last = tt;
- }
- }
- catch(InterruptedException ie) {
- unexpectedException();
- }
- }
-
-
- /**
- * drainTo(null) throws NPE
- */
- public void testDrainToNull() {
- DelayQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(null);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this) throws IAE
- */
- public void testDrainToSelf() {
- DelayQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(q);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c) empties queue into another collection c
- */
- public void testDrainTo() {
- DelayQueue q = populatedQueue(SIZE);
- ArrayList l = new ArrayList();
- q.drainTo(l);
- assertEquals(q.size(), 0);
- assertEquals(l.size(), SIZE);
- }
-
- /**
- * drainTo empties queue
- */
- public void testDrainToWithActivePut() {
- final DelayQueue q = populatedQueue(SIZE);
- Thread t = new Thread(new Runnable() {
- public void run() {
- q.put(new PDelay(SIZE+1));
- }
- });
- try {
- t.start();
- ArrayList l = new ArrayList();
- q.drainTo(l);
- assertTrue(l.size() >= SIZE);
- t.join();
- assertTrue(q.size() + l.size() >= SIZE);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainTo(null, n) throws NPE
- */
- public void testDrainToNullN() {
- DelayQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(null, 0);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this, n) throws IAE
- */
- public void testDrainToSelfN() {
- DelayQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(q, 0);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c, n) empties first max {n, size} elements of queue into c
- */
- public void testDrainToN() {
- for (int i = 0; i < SIZE + 2; ++i) {
- DelayQueue q = populatedQueue(SIZE);
- ArrayList l = new ArrayList();
- q.drainTo(l, i);
- int k = (i < SIZE)? i : SIZE;
- assertEquals(q.size(), SIZE-k);
- assertEquals(l.size(), k);
- }
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ExchangerTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ExchangerTest.java
deleted file mode 100755
index 9811e82..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ExchangerTest.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-
-public class ExchangerTest extends JSR166TestCase {
-
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(ExchangerTest.class);
- }
-
- /**
- * exchange exchanges objects across two threads
- */
- public void testExchange() {
- final Exchanger e = new Exchanger();
- Thread t1 = new Thread(new Runnable(){
- public void run(){
- try {
- Object v = e.exchange(one);
- threadAssertEquals(v, two);
- Object w = e.exchange(v);
- threadAssertEquals(w, one);
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(new Runnable(){
- public void run(){
- try {
- Object v = e.exchange(two);
- threadAssertEquals(v, one);
- Object w = e.exchange(v);
- threadAssertEquals(w, two);
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t1.start();
- t2.start();
- t1.join();
- t2.join();
- } catch(InterruptedException ex) {
- unexpectedException();
- }
- }
-
- /**
- * timed exchange exchanges objects across two threads
- */
- public void testTimedExchange() {
- final Exchanger e = new Exchanger();
- Thread t1 = new Thread(new Runnable(){
- public void run(){
- try {
- Object v = e.exchange(one, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- threadAssertEquals(v, two);
- Object w = e.exchange(v, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- threadAssertEquals(w, one);
- } catch(InterruptedException e){
- threadUnexpectedException();
- } catch(TimeoutException toe) {
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(new Runnable(){
- public void run(){
- try {
- Object v = e.exchange(two, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- threadAssertEquals(v, one);
- Object w = e.exchange(v, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- threadAssertEquals(w, two);
- } catch(InterruptedException e){
- threadUnexpectedException();
- } catch(TimeoutException toe) {
- threadUnexpectedException();
- }
- }
- });
- try {
- t1.start();
- t2.start();
- t1.join();
- t2.join();
- } catch(InterruptedException ex) {
- unexpectedException();
- }
- }
-
- /**
- * interrupt during wait for exchange throws IE
- */
- public void testExchange_InterruptedException(){
- final Exchanger e = new Exchanger();
- Thread t = new Thread(new Runnable() {
- public void run(){
- try {
- e.exchange(one);
- threadShouldThrow();
- } catch(InterruptedException success){
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(InterruptedException ex) {
- unexpectedException();
- }
- }
-
- /**
- * interrupt during wait for timed exchange throws IE
- */
- public void testTimedExchange_InterruptedException(){
- final Exchanger e = new Exchanger();
- Thread t = new Thread(new Runnable() {
- public void run(){
- try {
- e.exchange(null, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(InterruptedException success){
- } catch(Exception e2){
- threadFail("should throw IE");
- }
- }
- });
- try {
- t.start();
- t.interrupt();
- t.join();
- } catch(InterruptedException ex){
- unexpectedException();
- }
- }
-
- /**
- * timeout during wait for timed exchange throws TOE
- */
- public void testExchange_TimeOutException(){
- final Exchanger e = new Exchanger();
- Thread t = new Thread(new Runnable() {
- public void run(){
- try {
- e.exchange(null, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(TimeoutException success){
- } catch(InterruptedException e2){
- threadFail("should throw TOE");
- }
- }
- });
- try {
- t.start();
- t.join();
- } catch(InterruptedException ex){
- unexpectedException();
- }
- }
-
- /**
- * If one exchanging thread is interrupted, another succeeds.
- */
- public void testReplacementAfterExchange() {
- final Exchanger e = new Exchanger();
- Thread t1 = new Thread(new Runnable(){
- public void run(){
- try {
- Object v = e.exchange(one);
- threadAssertEquals(v, two);
- Object w = e.exchange(v);
- threadShouldThrow();
- } catch(InterruptedException success){
- }
- }
- });
- Thread t2 = new Thread(new Runnable(){
- public void run(){
- try {
- Object v = e.exchange(two);
- threadAssertEquals(v, one);
- Thread.sleep(SMALL_DELAY_MS);
- Object w = e.exchange(v);
- threadAssertEquals(w, three);
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- }
- });
- Thread t3 = new Thread(new Runnable(){
- public void run(){
- try {
- Thread.sleep(SMALL_DELAY_MS);
- Object w = e.exchange(three);
- threadAssertEquals(w, one);
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t1.start();
- t2.start();
- t3.start();
- Thread.sleep(SHORT_DELAY_MS);
- t1.interrupt();
- t1.join();
- t2.join();
- t3.join();
- } catch(InterruptedException ex) {
- unexpectedException();
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ExecutorCompletionServiceTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ExecutorCompletionServiceTest.java
deleted file mode 100644
index 2e237e2..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ExecutorCompletionServiceTest.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.math.BigInteger;
-import java.security.*;
-
-public class ExecutorCompletionServiceTest extends JSR166TestCase{
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(ExecutorCompletionServiceTest.class);
- }
-
-
- /**
- * Creating a new ECS with null Executor throw NPE
- */
- public void testConstructorNPE() {
- try {
- ExecutorCompletionService ecs = new ExecutorCompletionService(null);
- shouldThrow();
- } catch (NullPointerException success) {
- }
- }
-
- /**
- * Creating a new ECS with null queue throw NPE
- */
- public void testConstructorNPE2() {
- try {
- ExecutorService e = Executors.newCachedThreadPool();
- ExecutorCompletionService ecs = new ExecutorCompletionService(e, null);
- shouldThrow();
- } catch (NullPointerException success) {
- }
- }
-
- /**
- * Submitting a null callable throws NPE
- */
- public void testSubmitNPE() {
- ExecutorService e = Executors.newCachedThreadPool();
- ExecutorCompletionService ecs = new ExecutorCompletionService(e);
- try {
- Callable c = null;
- ecs.submit(c);
- shouldThrow();
- } catch (NullPointerException success) {
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * Submitting a null runnable throws NPE
- */
- public void testSubmitNPE2() {
- ExecutorService e = Executors.newCachedThreadPool();
- ExecutorCompletionService ecs = new ExecutorCompletionService(e);
- try {
- Runnable r = null;
- ecs.submit(r, Boolean.TRUE);
- shouldThrow();
- } catch (NullPointerException success) {
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * A taken submitted task is completed
- */
- public void testTake() {
- ExecutorService e = Executors.newCachedThreadPool();
- ExecutorCompletionService ecs = new ExecutorCompletionService(e);
- try {
- Callable c = new StringTask();
- ecs.submit(c);
- Future f = ecs.take();
- assert(f.isDone());
- } catch (Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * Take returns the same future object returned by submit
- */
- public void testTake2() {
- ExecutorService e = Executors.newCachedThreadPool();
- ExecutorCompletionService ecs = new ExecutorCompletionService(e);
- try {
- Callable c = new StringTask();
- Future f1 = ecs.submit(c);
- Future f2 = ecs.take();
- assertSame(f1, f2);
- } catch (Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * If poll returns non-null, the returned task is completed
- */
- public void testPoll1() {
- ExecutorService e = Executors.newCachedThreadPool();
- ExecutorCompletionService ecs = new ExecutorCompletionService(e);
- try {
- assertNull(ecs.poll());
- Callable c = new StringTask();
- ecs.submit(c);
- Thread.sleep(SHORT_DELAY_MS);
- for (;;) {
- Future f = ecs.poll();
- if (f != null) {
- assert(f.isDone());
- break;
- }
- }
- } catch (Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * If timed poll returns non-null, the returned task is completed
- */
- public void testPoll2() {
- ExecutorService e = Executors.newCachedThreadPool();
- ExecutorCompletionService ecs = new ExecutorCompletionService(e);
- try {
- assertNull(ecs.poll());
- Callable c = new StringTask();
- ecs.submit(c);
- Future f = ecs.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- if (f != null)
- assert(f.isDone());
- } catch (Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ExecutorsTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ExecutorsTest.java
deleted file mode 100755
index 40e23e4..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ExecutorsTest.java
+++ /dev/null
@@ -1,666 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.math.BigInteger;
-import java.security.*;
-
-public class ExecutorsTest extends JSR166TestCase{
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(ExecutorsTest.class);
- }
-
- static class TimedCallable<T> implements Callable<T> {
- private final ExecutorService exec;
- private final Callable<T> func;
- private final long msecs;
-
- TimedCallable(ExecutorService exec, Callable<T> func, long msecs) {
- this.exec = exec;
- this.func = func;
- this.msecs = msecs;
- }
-
- public T call() throws Exception {
- Future<T> ftask = exec.submit(func);
- try {
- return ftask.get(msecs, TimeUnit.MILLISECONDS);
- } finally {
- ftask.cancel(true);
- }
- }
- }
-
-
- private static class Fib implements Callable<BigInteger> {
- private final BigInteger n;
- Fib(long n) {
- if (n < 0) throw new IllegalArgumentException("need non-negative arg, but got " + n);
- this.n = BigInteger.valueOf(n);
- }
- public BigInteger call() {
- BigInteger f1 = BigInteger.ONE;
- BigInteger f2 = f1;
- for (BigInteger i = BigInteger.ZERO; i.compareTo(n) < 0; i = i.add(BigInteger.ONE)) {
- BigInteger t = f1.add(f2);
- f1 = f2;
- f2 = t;
- }
- return f1;
- }
- };
-
- /**
- * A newCachedThreadPool can execute runnables
- */
- public void testNewCachedThreadPool1() {
- ExecutorService e = Executors.newCachedThreadPool();
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- joinPool(e);
- }
-
- /**
- * A newCachedThreadPool with given ThreadFactory can execute runnables
- */
- public void testNewCachedThreadPool2() {
- ExecutorService e = Executors.newCachedThreadPool(new SimpleThreadFactory());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- joinPool(e);
- }
-
- /**
- * A newCachedThreadPool with null ThreadFactory throws NPE
- */
- public void testNewCachedThreadPool3() {
- try {
- ExecutorService e = Executors.newCachedThreadPool(null);
- shouldThrow();
- }
- catch(NullPointerException success) {
- }
- }
-
-
- /**
- * A new SingleThreadExecutor can execute runnables
- */
- public void testNewSingleThreadExecutor1() {
- ExecutorService e = Executors.newSingleThreadExecutor();
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- joinPool(e);
- }
-
- /**
- * A new SingleThreadExecutor with given ThreadFactory can execute runnables
- */
- public void testNewSingleThreadExecutor2() {
- ExecutorService e = Executors.newSingleThreadExecutor(new SimpleThreadFactory());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- joinPool(e);
- }
-
- /**
- * A new SingleThreadExecutor with null ThreadFactory throws NPE
- */
- public void testNewSingleThreadExecutor3() {
- try {
- ExecutorService e = Executors.newSingleThreadExecutor(null);
- shouldThrow();
- }
- catch(NullPointerException success) {
- }
- }
-
- /**
- * A new SingleThreadExecutor cannot be casted to concrete implementation
- */
- public void testCastNewSingleThreadExecutor() {
- ExecutorService e = Executors.newSingleThreadExecutor();
- try {
- ThreadPoolExecutor tpe = (ThreadPoolExecutor)e;
- } catch (ClassCastException success) {
- } finally {
- joinPool(e);
- }
- }
-
-
- /**
- * A new newFixedThreadPool can execute runnables
- */
- public void testNewFixedThreadPool1() {
- ExecutorService e = Executors.newFixedThreadPool(2);
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- joinPool(e);
- }
-
- /**
- * A new newFixedThreadPool with given ThreadFactory can execute runnables
- */
- public void testNewFixedThreadPool2() {
- ExecutorService e = Executors.newFixedThreadPool(2, new SimpleThreadFactory());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- joinPool(e);
- }
-
- /**
- * A new newFixedThreadPool with null ThreadFactory throws NPE
- */
- public void testNewFixedThreadPool3() {
- try {
- ExecutorService e = Executors.newFixedThreadPool(2, null);
- shouldThrow();
- }
- catch(NullPointerException success) {
- }
- }
-
- /**
- * A new newFixedThreadPool with 0 threads throws IAE
- */
- public void testNewFixedThreadPool4() {
- try {
- ExecutorService e = Executors.newFixedThreadPool(0);
- shouldThrow();
- }
- catch(IllegalArgumentException success) {
- }
- }
-
-
- /**
- * An unconfigurable newFixedThreadPool can execute runnables
- */
- public void testunconfigurableExecutorService() {
- ExecutorService e = Executors.unconfigurableExecutorService(Executors.newFixedThreadPool(2));
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- e.execute(new NoOpRunnable());
- joinPool(e);
- }
-
- /**
- * unconfigurableExecutorService(null) throws NPE
- */
- public void testunconfigurableExecutorServiceNPE() {
- try {
- ExecutorService e = Executors.unconfigurableExecutorService(null);
- }
- catch (NullPointerException success) {
- }
- }
-
- /**
- * unconfigurableScheduledExecutorService(null) throws NPE
- */
- public void testunconfigurableScheduledExecutorServiceNPE() {
- try {
- ExecutorService e = Executors.unconfigurableScheduledExecutorService(null);
- }
- catch (NullPointerException success) {
- }
- }
-
-
- /**
- * a newSingleThreadScheduledExecutor successfully runs delayed task
- */
- public void testNewSingleThreadScheduledExecutor() {
- try {
- TrackedCallable callable = new TrackedCallable();
- ScheduledExecutorService p1 = Executors.newSingleThreadScheduledExecutor();
- Future f = p1.schedule(callable, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- assertFalse(callable.done);
- Thread.sleep(MEDIUM_DELAY_MS);
- assertTrue(callable.done);
- assertEquals(Boolean.TRUE, f.get());
- joinPool(p1);
- } catch(RejectedExecutionException e){}
- catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
- /**
- * a newScheduledThreadPool successfully runs delayed task
- */
- public void testnewScheduledThreadPool() {
- try {
- TrackedCallable callable = new TrackedCallable();
- ScheduledExecutorService p1 = Executors.newScheduledThreadPool(2);
- Future f = p1.schedule(callable, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- assertFalse(callable.done);
- Thread.sleep(MEDIUM_DELAY_MS);
- assertTrue(callable.done);
- assertEquals(Boolean.TRUE, f.get());
- joinPool(p1);
- } catch(RejectedExecutionException e){}
- catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
- /**
- * an unconfigurable newScheduledThreadPool successfully runs delayed task
- */
- public void testunconfigurableScheduledExecutorService() {
- try {
- TrackedCallable callable = new TrackedCallable();
- ScheduledExecutorService p1 = Executors.unconfigurableScheduledExecutorService(Executors.newScheduledThreadPool(2));
- Future f = p1.schedule(callable, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- assertFalse(callable.done);
- Thread.sleep(MEDIUM_DELAY_MS);
- assertTrue(callable.done);
- assertEquals(Boolean.TRUE, f.get());
- joinPool(p1);
- } catch(RejectedExecutionException e){}
- catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
- /**
- * timeouts from execute will time out if they compute too long.
- */
- public void testTimedCallable() {
- int N = 10000;
- ExecutorService executor = Executors.newSingleThreadExecutor();
- List<Callable<BigInteger>> tasks = new ArrayList<Callable<BigInteger>>(N);
- try {
- long startTime = System.currentTimeMillis();
-
- long i = 0;
- while (tasks.size() < N) {
- tasks.add(new TimedCallable<BigInteger>(executor, new Fib(i), 1));
- i += 10;
- }
-
- int iters = 0;
- BigInteger sum = BigInteger.ZERO;
- for (Iterator<Callable<BigInteger>> it = tasks.iterator(); it.hasNext();) {
- try {
- ++iters;
- sum = sum.add(it.next().call());
- }
- catch (TimeoutException success) {
- assertTrue(iters > 0);
- return;
- }
- catch (Exception e) {
- unexpectedException();
- }
- }
- // if by chance we didn't ever time out, total time must be small
- long elapsed = System.currentTimeMillis() - startTime;
- assertTrue(elapsed < N);
- }
- finally {
- joinPool(executor);
- }
- }
-
-
- /**
- * ThreadPoolExecutor using defaultThreadFactory has
- * specified group, priority, daemon status, and name
- */
- public void testDefaultThreadFactory() {
- final ThreadGroup egroup = Thread.currentThread().getThreadGroup();
- Runnable r = new Runnable() {
- public void run() {
- try {
- Thread current = Thread.currentThread();
- threadAssertTrue(!current.isDaemon());
- threadAssertTrue(current.getPriority() == Thread.NORM_PRIORITY);
- ThreadGroup g = current.getThreadGroup();
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- threadAssertTrue(g == s.getThreadGroup());
- else
- threadAssertTrue(g == egroup);
- String name = current.getName();
- threadAssertTrue(name.endsWith("thread-1"));
- } catch (SecurityException ok) {
- // Also pass if not allowed to change setting
- }
- }
- };
- ExecutorService e = Executors.newSingleThreadExecutor(Executors.defaultThreadFactory());
-
- e.execute(r);
- try {
- e.shutdown();
- } catch(SecurityException ok) {
- }
-
- try {
- Thread.sleep(SHORT_DELAY_MS);
- } catch (Exception eX) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * ThreadPoolExecutor using privilegedThreadFactory has
- * specified group, priority, daemon status, name,
- * access control context and context class loader
- */
- public void testPrivilegedThreadFactory() {
- Policy savedPolicy = null;
- try {
- savedPolicy = Policy.getPolicy();
- AdjustablePolicy policy = new AdjustablePolicy();
- policy.addPermission(new RuntimePermission("getContextClassLoader"));
- policy.addPermission(new RuntimePermission("setContextClassLoader"));
- Policy.setPolicy(policy);
- } catch (AccessControlException ok) {
- return;
- }
- final ThreadGroup egroup = Thread.currentThread().getThreadGroup();
- final ClassLoader thisccl = Thread.currentThread().getContextClassLoader();
- final AccessControlContext thisacc = AccessController.getContext();
- Runnable r = new Runnable() {
- public void run() {
- try {
- Thread current = Thread.currentThread();
- threadAssertTrue(!current.isDaemon());
- threadAssertTrue(current.getPriority() == Thread.NORM_PRIORITY);
- ThreadGroup g = current.getThreadGroup();
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- threadAssertTrue(g == s.getThreadGroup());
- else
- threadAssertTrue(g == egroup);
- String name = current.getName();
- threadAssertTrue(name.endsWith("thread-1"));
- threadAssertTrue(thisccl == current.getContextClassLoader());
- threadAssertTrue(thisacc.equals(AccessController.getContext()));
- } catch(SecurityException ok) {
- // Also pass if not allowed to change settings
- }
- }
- };
- ExecutorService e = Executors.newSingleThreadExecutor(Executors.privilegedThreadFactory());
-
- Policy.setPolicy(savedPolicy);
- e.execute(r);
- try {
- e.shutdown();
- } catch(SecurityException ok) {
- }
- try {
- Thread.sleep(SHORT_DELAY_MS);
- } catch (Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
-
- }
-
- void checkCCL() {
- AccessController.getContext().checkPermission(new RuntimePermission("getContextClassLoader"));
- }
-
- class CheckCCL implements Callable<Object> {
- public Object call() {
- checkCCL();
- return null;
- }
- }
-
-
- /**
- * Without class loader permissions, creating
- * privilegedCallableUsingCurrentClassLoader throws ACE
- */
- public void testCreatePrivilegedCallableUsingCCLWithNoPrivs() {
- Policy savedPolicy = null;
- try {
- savedPolicy = Policy.getPolicy();
- AdjustablePolicy policy = new AdjustablePolicy();
- Policy.setPolicy(policy);
- } catch (AccessControlException ok) {
- return;
- }
-
- // Check if program still has too many permissions to run test
- try {
- checkCCL();
- // too many privileges to test; so return
- Policy.setPolicy(savedPolicy);
- return;
- } catch(AccessControlException ok) {
- }
-
- try {
- Callable task = Executors.privilegedCallableUsingCurrentClassLoader(new NoOpCallable());
- shouldThrow();
- } catch(AccessControlException success) {
- } catch(Exception ex) {
- unexpectedException();
- }
- finally {
- Policy.setPolicy(savedPolicy);
- }
- }
-
- /**
- * With class loader permissions, calling
- * privilegedCallableUsingCurrentClassLoader does not throw ACE
- */
- public void testprivilegedCallableUsingCCLWithPrivs() {
- Policy savedPolicy = null;
- try {
- savedPolicy = Policy.getPolicy();
- AdjustablePolicy policy = new AdjustablePolicy();
- policy.addPermission(new RuntimePermission("getContextClassLoader"));
- policy.addPermission(new RuntimePermission("setContextClassLoader"));
- Policy.setPolicy(policy);
- } catch (AccessControlException ok) {
- return;
- }
-
- try {
- Callable task = Executors.privilegedCallableUsingCurrentClassLoader(new NoOpCallable());
- task.call();
- } catch(Exception ex) {
- unexpectedException();
- }
- finally {
- Policy.setPolicy(savedPolicy);
- }
- }
-
- /**
- * Without permissions, calling privilegedCallable throws ACE
- */
- public void testprivilegedCallableWithNoPrivs() {
- Callable task;
- Policy savedPolicy = null;
- AdjustablePolicy policy = null;
- AccessControlContext noprivAcc = null;
- try {
- savedPolicy = Policy.getPolicy();
- policy = new AdjustablePolicy();
- Policy.setPolicy(policy);
- noprivAcc = AccessController.getContext();
- task = Executors.privilegedCallable(new CheckCCL());
- Policy.setPolicy(savedPolicy);
- } catch (AccessControlException ok) {
- return; // program has too few permissions to set up test
- }
-
- // Make sure that program doesn't have too many permissions
- try {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- checkCCL();
- return null;
- }}, noprivAcc);
- // too many permssions; skip test
- return;
- } catch(AccessControlException ok) {
- }
-
- try {
- task.call();
- shouldThrow();
- } catch(AccessControlException success) {
- } catch(Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * With permissions, calling privilegedCallable succeeds
- */
- public void testprivilegedCallableWithPrivs() {
- Policy savedPolicy = null;
- try {
- savedPolicy = Policy.getPolicy();
- AdjustablePolicy policy = new AdjustablePolicy();
- policy.addPermission(new RuntimePermission("getContextClassLoader"));
- policy.addPermission(new RuntimePermission("setContextClassLoader"));
- Policy.setPolicy(policy);
- } catch (AccessControlException ok) {
- return;
- }
-
- Callable task = Executors.privilegedCallable(new CheckCCL());
- try {
- task.call();
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- Policy.setPolicy(savedPolicy);
- }
- }
-
- /**
- * callable(Runnable) returns null when called
- */
- public void testCallable1() {
- try {
- Callable c = Executors.callable(new NoOpRunnable());
- assertNull(c.call());
- } catch(Exception ex) {
- unexpectedException();
- }
-
- }
-
- /**
- * callable(Runnable, result) returns result when called
- */
- public void testCallable2() {
- try {
- Callable c = Executors.callable(new NoOpRunnable(), one);
- assertEquals(one, c.call());
- } catch(Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * callable(PrivilegedAction) returns its result when called
- */
- public void testCallable3() {
- try {
- Callable c = Executors.callable(new PrivilegedAction() {
- public Object run() { return one; }});
- assertEquals(one, c.call());
- } catch(Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * callable(PrivilegedExceptionAction) returns its result when called
- */
- public void testCallable4() {
- try {
- Callable c = Executors.callable(new PrivilegedExceptionAction() {
- public Object run() { return one; }});
- assertEquals(one, c.call());
- } catch(Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * callable(null Runnable) throws NPE
- */
- public void testCallableNPE1() {
- try {
- Runnable r = null;
- Callable c = Executors.callable(r);
- } catch (NullPointerException success) {
- }
- }
-
- /**
- * callable(null, result) throws NPE
- */
- public void testCallableNPE2() {
- try {
- Runnable r = null;
- Callable c = Executors.callable(r, one);
- } catch (NullPointerException success) {
- }
- }
-
- /**
- * callable(null PrivilegedAction) throws NPE
- */
- public void testCallableNPE3() {
- try {
- PrivilegedAction r = null;
- Callable c = Executors.callable(r);
- } catch (NullPointerException success) {
- }
- }
-
- /**
- * callable(null PrivilegedExceptionAction) throws NPE
- */
- public void testCallableNPE4() {
- try {
- PrivilegedExceptionAction r = null;
- Callable c = Executors.callable(r);
- } catch (NullPointerException success) {
- }
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/FutureTaskTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/FutureTaskTest.java
deleted file mode 100755
index 2108986..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/FutureTaskTest.java
+++ /dev/null
@@ -1,476 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.*;
-import java.util.*;
-
-public class FutureTaskTest extends JSR166TestCase {
-
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(FutureTaskTest.class);
- }
-
- /**
- * Subclass to expose protected methods
- */
- static class PublicFutureTask extends FutureTask {
- public PublicFutureTask(Callable r) { super(r); }
- public boolean runAndReset() { return super.runAndReset(); }
- public void set(Object x) { super.set(x); }
- public void setException(Throwable t) { super.setException(t); }
- }
-
- /**
- * Creating a future with a null callable throws NPE
- */
- public void testConstructor() {
- try {
- FutureTask task = new FutureTask(null);
- shouldThrow();
- }
- catch(NullPointerException success) {
- }
- }
-
- /**
- * creating a future with null runnable fails
- */
- public void testConstructor2() {
- try {
- FutureTask task = new FutureTask(null, Boolean.TRUE);
- shouldThrow();
- }
- catch(NullPointerException success) {
- }
- }
-
- /**
- * isDone is true when a task completes
- */
- public void testIsDone() {
- FutureTask task = new FutureTask( new NoOpCallable());
- task.run();
- assertTrue(task.isDone());
- assertFalse(task.isCancelled());
- }
-
- /**
- * runAndReset of a non-cancelled task succeeds
- */
- public void testRunAndReset() {
- PublicFutureTask task = new PublicFutureTask(new NoOpCallable());
- assertTrue(task.runAndReset());
- assertFalse(task.isDone());
- }
-
- /**
- * runAndReset after cancellation fails
- */
- public void testResetAfterCancel() {
- PublicFutureTask task = new PublicFutureTask(new NoOpCallable());
- assertTrue(task.cancel(false));
- assertFalse(task.runAndReset());
- assertTrue(task.isDone());
- assertTrue(task.isCancelled());
- }
-
-
-
- /**
- * setting value causes get to return it
- */
- public void testSet() {
- PublicFutureTask task = new PublicFutureTask(new NoOpCallable());
- task.set(one);
- try {
- assertEquals(task.get(), one);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * setException causes get to throw ExecutionException
- */
- public void testSetException() {
- Exception nse = new NoSuchElementException();
- PublicFutureTask task = new PublicFutureTask(new NoOpCallable());
- task.setException(nse);
- try {
- Object x = task.get();
- shouldThrow();
- }
- catch(ExecutionException ee) {
- Throwable cause = ee.getCause();
- assertEquals(cause, nse);
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * Cancelling before running succeeds
- */
- public void testCancelBeforeRun() {
- FutureTask task = new FutureTask( new NoOpCallable());
- assertTrue(task.cancel(false));
- task.run();
- assertTrue(task.isDone());
- assertTrue(task.isCancelled());
- }
-
- /**
- * Cancel(true) before run succeeds
- */
- public void testCancelBeforeRun2() {
- FutureTask task = new FutureTask( new NoOpCallable());
- assertTrue(task.cancel(true));
- task.run();
- assertTrue(task.isDone());
- assertTrue(task.isCancelled());
- }
-
- /**
- * cancel of a completed task fails
- */
- public void testCancelAfterRun() {
- FutureTask task = new FutureTask( new NoOpCallable());
- task.run();
- assertFalse(task.cancel(false));
- assertTrue(task.isDone());
- assertFalse(task.isCancelled());
- }
-
- /**
- * cancel(true) interrupts a running task
- */
- public void testCancelInterrupt() {
- FutureTask task = new FutureTask( new Callable() {
- public Object call() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- threadShouldThrow();
- }
- catch (InterruptedException success) {}
- return Boolean.TRUE;
- } });
- Thread t = new Thread(task);
- t.start();
-
- try {
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(task.cancel(true));
- t.join();
- assertTrue(task.isDone());
- assertTrue(task.isCancelled());
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
-
- /**
- * cancel(false) does not interrupt a running task
- */
- public void testCancelNoInterrupt() {
- FutureTask task = new FutureTask( new Callable() {
- public Object call() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- }
- catch (InterruptedException success) {
- threadFail("should not interrupt");
- }
- return Boolean.TRUE;
- } });
- Thread t = new Thread(task);
- t.start();
-
- try {
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(task.cancel(false));
- t.join();
- assertTrue(task.isDone());
- assertTrue(task.isCancelled());
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * set in one thread causes get in another thread to retrieve value
- */
- public void testGet1() {
- final FutureTask ft = new FutureTask(new Callable() {
- public Object call() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- return Boolean.TRUE;
- }
- });
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- ft.get();
- } catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- assertFalse(ft.isDone());
- assertFalse(ft.isCancelled());
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- ft.run();
- t.join();
- assertTrue(ft.isDone());
- assertFalse(ft.isCancelled());
- } catch(InterruptedException e){
- unexpectedException();
-
- }
- }
-
- /**
- * set in one thread causes timed get in another thread to retrieve value
- */
- public void testTimedGet1() {
- final FutureTask ft = new FutureTask(new Callable() {
- public Object call() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- return Boolean.TRUE;
- }
- });
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- ft.get(SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch(TimeoutException success) {
- } catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- assertFalse(ft.isDone());
- assertFalse(ft.isCancelled());
- t.start();
- ft.run();
- t.join();
- assertTrue(ft.isDone());
- assertFalse(ft.isCancelled());
- } catch(InterruptedException e){
- unexpectedException();
-
- }
- }
-
- /**
- * Cancelling a task causes timed get in another thread to throw CancellationException
- */
- public void testTimedGet_Cancellation() {
- final FutureTask ft = new FutureTask(new Callable() {
- public Object call() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- threadShouldThrow();
- } catch(InterruptedException e) {
- }
- return Boolean.TRUE;
- }
- });
- try {
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- ft.get(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(CancellationException success) {}
- catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(ft);
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- ft.cancel(true);
- t1.join();
- t2.join();
- } catch(InterruptedException ie){
- unexpectedException();
- }
- }
-
- /**
- * Cancelling a task causes get in another thread to throw CancellationException
- */
- public void testGet_Cancellation() {
- final FutureTask ft = new FutureTask(new Callable() {
- public Object call() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- threadShouldThrow();
- } catch(InterruptedException e){
- }
- return Boolean.TRUE;
- }
- });
- try {
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- ft.get();
- threadShouldThrow();
- } catch(CancellationException success){
- }
- catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(ft);
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- ft.cancel(true);
- t1.join();
- t2.join();
- } catch(InterruptedException success){
- unexpectedException();
- }
- }
-
-
- /**
- * A runtime exception in task causes get to throw ExecutionException
- */
- public void testGet_ExecutionException() {
- final FutureTask ft = new FutureTask(new Callable() {
- public Object call() {
- int i = 5/0;
- return Boolean.TRUE;
- }
- });
- try {
- ft.run();
- ft.get();
- shouldThrow();
- } catch(ExecutionException success){
- }
- catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * A runtime exception in task causes timed get to throw ExecutionException
- */
- public void testTimedGet_ExecutionException2() {
- final FutureTask ft = new FutureTask(new Callable() {
- public Object call() {
- int i = 5/0;
- return Boolean.TRUE;
- }
- });
- try {
- ft.run();
- ft.get(SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- shouldThrow();
- } catch(ExecutionException success) {
- } catch(TimeoutException success) { } // unlikely but OK
- catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * Interrupting a waiting get causes it to throw InterruptedException
- */
- public void testGet_InterruptedException() {
- final FutureTask ft = new FutureTask(new NoOpCallable());
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- ft.get();
- threadShouldThrow();
- } catch(InterruptedException success){
- } catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Interrupting a waiting timed get causes it to throw InterruptedException
- */
- public void testTimedGet_InterruptedException2() {
- final FutureTask ft = new FutureTask(new NoOpCallable());
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- ft.get(LONG_DELAY_MS,TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(InterruptedException success){}
- catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * A timed out timed get throws TimeoutException
- */
- public void testGet_TimeoutException() {
- try {
- FutureTask ft = new FutureTask(new NoOpCallable());
- ft.get(1,TimeUnit.MILLISECONDS);
- shouldThrow();
- } catch(TimeoutException success){}
- catch(Exception success){
- unexpectedException();
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/JSR166TestCase.java b/concurrent/src/test/java/tests/api/java/util/concurrent/JSR166TestCase.java
deleted file mode 100644
index 70dafbc..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/JSR166TestCase.java
+++ /dev/null
@@ -1,565 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-import java.security.*;
-
-/**
- * Base class for JSR166 Junit TCK tests. Defines some constants,
- * utility methods and classes, as well as a simple framework for
- * helping to make sure that assertions failing in generated threads
- * cause the associated test that generated them to itself fail (which
- * JUnit doe not otherwise arrange). The rules for creating such
- * tests are:
- *
- * <ol>
- *
- * <li> All assertions in code running in generated threads must use
- * the forms {@link #threadFail} , {@link #threadAssertTrue} {@link
- * #threadAssertEquals}, or {@link #threadAssertNull}, (not
- * <tt>fail</tt>, <tt>assertTrue</tt>, etc.) It is OK (but not
- * particularly recommended) for other code to use these forms too.
- * Only the most typically used JUnit assertion methods are defined
- * this way, but enough to live with.</li>
- *
- * <li> If you override {@link #setUp} or {@link #tearDown}, make sure
- * to invoke <tt>super.setUp</tt> and <tt>super.tearDown</tt> within
- * them. These methods are used to clear and check for thread
- * assertion failures.</li>
- *
- * <li>All delays and timeouts must use one of the constants <tt>
- * SHORT_DELAY_MS</tt>, <tt> SMALL_DELAY_MS</tt>, <tt> MEDIUM_DELAY_MS</tt>,
- * <tt> LONG_DELAY_MS</tt>. The idea here is that a SHORT is always
- * discriminable from zero time, and always allows enough time for the
- * small amounts of computation (creating a thread, calling a few
- * methods, etc) needed to reach a timeout point. Similarly, a SMALL
- * is always discriminable as larger than SHORT and smaller than
- * MEDIUM. And so on. These constants are set to conservative values,
- * but even so, if there is ever any doubt, they can all be increased
- * in one spot to rerun tests on slower platforms</li>
- *
- * <li> All threads generated must be joined inside each test case
- * method (or <tt>fail</tt> to do so) before returning from the
- * method. The <tt> joinPool</tt> method can be used to do this when
- * using Executors.</li>
- *
- * </ol>
- *
- * <p> <b>Other notes</b>
- * <ul>
- *
- * <li> Usually, there is one testcase method per JSR166 method
- * covering "normal" operation, and then as many exception-testing
- * methods as there are exceptions the method can throw. Sometimes
- * there are multiple tests per JSR166 method when the different
- * "normal" behaviors differ significantly. And sometimes testcases
- * cover multiple methods when they cannot be tested in
- * isolation.</li>
- *
- * <li> The documentation style for testcases is to provide as javadoc
- * a simple sentence or two describing the property that the testcase
- * method purports to test. The javadocs do not say anything about how
- * the property is tested. To find out, read the code.</li>
- *
- * <li> These tests are "conformance tests", and do not attempt to
- * test throughput, latency, scalability or other performance factors
- * (see the separate "jtreg" tests for a set intended to check these
- * for the most central aspects of functionality.) So, most tests use
- * the smallest sensible numbers of threads, collection sizes, etc
- * needed to check basic conformance.</li>
- *
- * <li>The test classes currently do not declare inclusion in
- * any particular package to simplify things for people integrating
- * them in TCK test suites.</li>
- *
- * <li> As a convenience, the <tt>main</tt> of this class (JSR166TestCase)
- * runs all JSR166 unit tests.</li>
- *
- * </ul>
- */
-public class JSR166TestCase extends TestCase {
- /**
- * Runs all JSR166 unit tests using junit.textui.TestRunner
- */
- public static void main (String[] args) {
- int iters = 1;
- if (args.length > 0)
- iters = Integer.parseInt(args[0]);
- Test s = suite();
- for (int i = 0; i < iters; ++i) {
- junit.textui.TestRunner.run (s);
- System.gc();
- System.runFinalization();
- }
- System.exit(0);
- }
-
- /**
- * Collects all JSR166 unit tests as one suite
- */
- public static Test suite ( ) {
- TestSuite suite = tests.TestSuiteFactory.createTestSuite("JSR166 Unit Tests");
- // BEGIN android-changed
- suite.addTest(AbstractExecutorServiceTest.suite());
- suite.addTest(AbstractQueueTest.suite());
- suite.addTest(AbstractQueuedSynchronizerTest.suite());
- suite.addTest(ArrayBlockingQueueTest.suite());
- suite.addTest(AtomicBooleanTest.suite());
- suite.addTest(AtomicIntegerArrayTest.suite());
- suite.addTest(AtomicIntegerFieldUpdaterTest.suite());
- suite.addTest(AtomicIntegerTest.suite());
- suite.addTest(AtomicLongArrayTest.suite());
- suite.addTest(AtomicLongFieldUpdaterTest.suite());
- suite.addTest(AtomicLongTest.suite());
- suite.addTest(AtomicMarkableReferenceTest.suite());
- suite.addTest(AtomicReferenceArrayTest.suite());
- suite.addTest(AtomicReferenceFieldUpdaterTest.suite());
- suite.addTest(AtomicReferenceTest.suite());
- suite.addTest(AtomicStampedReferenceTest.suite());
- suite.addTest(ConcurrentHashMapTest.suite());
- suite.addTest(ConcurrentLinkedQueueTest.suite());
- suite.addTest(CopyOnWriteArrayListTest.suite());
- suite.addTest(CopyOnWriteArraySetTest.suite());
- suite.addTest(CountDownLatchTest.suite());
- suite.addTest(CyclicBarrierTest.suite());
- suite.addTest(DelayQueueTest.suite());
- suite.addTest(ExchangerTest.suite());
- suite.addTest(ExecutorsTest.suite());
- suite.addTest(ExecutorCompletionServiceTest.suite());
- suite.addTest(FutureTaskTest.suite());
- suite.addTest(LinkedBlockingQueueTest.suite());
- suite.addTest(LinkedListTest.suite());
- suite.addTest(LockSupportTest.suite());
- suite.addTest(PriorityBlockingQueueTest.suite());
- suite.addTest(PriorityQueueTest.suite());
- suite.addTest(ReentrantLockTest.suite());
- suite.addTest(ReentrantReadWriteLockTest.suite());
- suite.addTest(ScheduledExecutorTest.suite());
- suite.addTest(SemaphoreTest.suite());
- suite.addTest(SynchronousQueueTest.suite());
- suite.addTest(SystemTest.suite());
- suite.addTest(ThreadLocalTest.suite());
- suite.addTest(ThreadPoolExecutorTest.suite());
- suite.addTest(ThreadTest.suite());
- suite.addTest(TimeUnitTest.suite());
- // END android-changed
- return suite;
- }
-
-
- public static long SHORT_DELAY_MS;
- public static long SMALL_DELAY_MS;
- public static long MEDIUM_DELAY_MS;
- public static long LONG_DELAY_MS;
-
-
- /**
- * Return the shortest timed delay. This could
- * be reimplemented to use for example a Property.
- */
- protected long getShortDelay() {
- return 50;
- }
-
-
- /**
- * Set delays as multiples of SHORT_DELAY.
- */
- protected void setDelays() {
- SHORT_DELAY_MS = getShortDelay();
- SMALL_DELAY_MS = SHORT_DELAY_MS * 5;
- MEDIUM_DELAY_MS = SHORT_DELAY_MS * 10;
- LONG_DELAY_MS = SHORT_DELAY_MS * 50;
- }
-
- /**
- * Flag set true if any threadAssert methods fail
- */
- volatile boolean threadFailed;
-
- /**
- * Initialize test to indicate that no thread assertions have failed
- */
- public void setUp() {
- setDelays();
- threadFailed = false;
- }
-
- /**
- * Trigger test case failure if any thread assertions have failed
- */
- public void tearDown() {
- assertFalse(threadFailed);
- }
-
- /**
- * Fail, also setting status to indicate current testcase should fail
- */
- public void threadFail(String reason) {
- threadFailed = true;
- fail(reason);
- }
-
- /**
- * If expression not true, set status to indicate current testcase
- * should fail
- */
- public void threadAssertTrue(boolean b) {
- if (!b) {
- threadFailed = true;
- assertTrue(b);
- }
- }
-
- /**
- * If expression not false, set status to indicate current testcase
- * should fail
- */
- public void threadAssertFalse(boolean b) {
- if (b) {
- threadFailed = true;
- assertFalse(b);
- }
- }
-
- /**
- * If argument not null, set status to indicate current testcase
- * should fail
- */
- public void threadAssertNull(Object x) {
- if (x != null) {
- threadFailed = true;
- assertNull(x);
- }
- }
-
- /**
- * If arguments not equal, set status to indicate current testcase
- * should fail
- */
- public void threadAssertEquals(long x, long y) {
- if (x != y) {
- threadFailed = true;
- assertEquals(x, y);
- }
- }
-
- /**
- * If arguments not equal, set status to indicate current testcase
- * should fail
- */
- public void threadAssertEquals(Object x, Object y) {
- if (x != y && (x == null || !x.equals(y))) {
- threadFailed = true;
- assertEquals(x, y);
- }
- }
-
- /**
- * threadFail with message "should throw exception"
- */
- public void threadShouldThrow() {
- threadFailed = true;
- fail("should throw exception");
- }
-
- /**
- * threadFail with message "Unexpected exception"
- */
- public void threadUnexpectedException() {
- threadFailed = true;
- fail("Unexpected exception");
- }
-
-
- /**
- * Wait out termination of a thread pool or fail doing so
- */
- public void joinPool(ExecutorService exec) {
- try {
- exec.shutdown();
- assertTrue(exec.awaitTermination(LONG_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch(SecurityException ok) {
- // Allowed in case test doesn't have privs
- } catch(InterruptedException ie) {
- fail("Unexpected exception");
- }
- }
-
-
- /**
- * fail with message "should throw exception"
- */
- public void shouldThrow() {
- fail("Should throw exception");
- }
-
- /**
- * fail with message "Unexpected exception"
- */
- public void unexpectedException() {
- fail("Unexpected exception");
- }
-
-
- /**
- * The number of elements to place in collections, arrays, etc.
- */
- static final int SIZE = 20;
-
- // Some convenient Integer constants
-
- static final Integer zero = new Integer(0);
- static final Integer one = new Integer(1);
- static final Integer two = new Integer(2);
- static final Integer three = new Integer(3);
- static final Integer four = new Integer(4);
- static final Integer five = new Integer(5);
- static final Integer six = new Integer(6);
- static final Integer seven = new Integer(7);
- static final Integer eight = new Integer(8);
- static final Integer nine = new Integer(9);
- static final Integer m1 = new Integer(-1);
- static final Integer m2 = new Integer(-2);
- static final Integer m3 = new Integer(-3);
- static final Integer m4 = new Integer(-4);
- static final Integer m5 = new Integer(-5);
- static final Integer m10 = new Integer(-10);
-
-
- /**
- * A security policy where new permissions can be dynamically added
- * or all cleared.
- */
- static class AdjustablePolicy extends java.security.Policy {
- Permissions perms = new Permissions();
- AdjustablePolicy() { }
- void addPermission(Permission perm) { perms.add(perm); }
- void clearPermissions() { perms = new Permissions(); }
- public PermissionCollection getPermissions(CodeSource cs) {
- return perms;
- }
- public PermissionCollection getPermissions(ProtectionDomain pd) {
- return perms;
- }
- public boolean implies(ProtectionDomain pd, Permission p) {
- return perms.implies(p);
- }
- public void refresh() {}
- }
-
-
- // Some convenient Runnable classes
-
- static class NoOpRunnable implements Runnable {
- public void run() {}
- }
-
- static class NoOpCallable implements Callable {
- public Object call() { return Boolean.TRUE; }
- }
-
- static final String TEST_STRING = "a test string";
-
- static class StringTask implements Callable<String> {
- public String call() { return TEST_STRING; }
- }
-
- static class NPETask implements Callable<String> {
- public String call() { throw new NullPointerException(); }
- }
-
- static class CallableOne implements Callable<Integer> {
- public Integer call() { return one; }
- }
-
- class ShortRunnable implements Runnable {
- public void run() {
- try {
- Thread.sleep(SHORT_DELAY_MS);
- }
- catch(Exception e) {
- threadUnexpectedException();
- }
- }
- }
-
- class ShortInterruptedRunnable implements Runnable {
- public void run() {
- try {
- Thread.sleep(SHORT_DELAY_MS);
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- }
-
- class SmallRunnable implements Runnable {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- }
- catch(Exception e) {
- threadUnexpectedException();
- }
- }
- }
-
- class SmallPossiblyInterruptedRunnable implements Runnable {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- }
- catch(Exception e) {
- }
- }
- }
-
- class SmallCallable implements Callable {
- public Object call() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- }
- catch(Exception e) {
- threadUnexpectedException();
- }
- return Boolean.TRUE;
- }
- }
-
- class SmallInterruptedRunnable implements Runnable {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- }
-
-
- class MediumRunnable implements Runnable {
- public void run() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- }
- catch(Exception e) {
- threadUnexpectedException();
- }
- }
- }
-
- class MediumInterruptedRunnable implements Runnable {
- public void run() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- }
-
- class MediumPossiblyInterruptedRunnable implements Runnable {
- public void run() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- }
- catch(InterruptedException success) {
- }
- }
- }
-
- class LongPossiblyInterruptedRunnable implements Runnable {
- public void run() {
- try {
- Thread.sleep(LONG_DELAY_MS);
- }
- catch(InterruptedException success) {
- }
- }
- }
-
- /**
- * For use as ThreadFactory in constructors
- */
- static class SimpleThreadFactory implements ThreadFactory{
- public Thread newThread(Runnable r){
- return new Thread(r);
- }
- }
-
- static class TrackedShortRunnable implements Runnable {
- volatile boolean done = false;
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- done = true;
- } catch(Exception e){
- }
- }
- }
-
- static class TrackedMediumRunnable implements Runnable {
- volatile boolean done = false;
- public void run() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- done = true;
- } catch(Exception e){
- }
- }
- }
-
- static class TrackedLongRunnable implements Runnable {
- volatile boolean done = false;
- public void run() {
- try {
- Thread.sleep(LONG_DELAY_MS);
- done = true;
- } catch(Exception e){
- }
- }
- }
-
- static class TrackedNoOpRunnable implements Runnable {
- volatile boolean done = false;
- public void run() {
- done = true;
- }
- }
-
- static class TrackedCallable implements Callable {
- volatile boolean done = false;
- public Object call() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- done = true;
- } catch(Exception e){
- }
- return Boolean.TRUE;
- }
- }
-
-
- /**
- * For use as RejectedExecutionHandler in constructors
- */
- static class NoOpREHandler implements RejectedExecutionHandler{
- public void rejectedExecution(Runnable r, ThreadPoolExecutor executor){}
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/LinkedBlockingQueueTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/LinkedBlockingQueueTest.java
deleted file mode 100755
index 7496a4a..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/LinkedBlockingQueueTest.java
+++ /dev/null
@@ -1,1031 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class LinkedBlockingQueueTest extends JSR166TestCase {
-
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
-
- public static Test suite() {
- return new TestSuite(LinkedBlockingQueueTest.class);
- }
-
-
- /**
- * Create a queue of given size containing consecutive
- * Integers 0 ... n.
- */
- private LinkedBlockingQueue populatedQueue(int n) {
- LinkedBlockingQueue q = new LinkedBlockingQueue(n);
- assertTrue(q.isEmpty());
- for(int i = 0; i < n; i++)
- assertTrue(q.offer(new Integer(i)));
- assertFalse(q.isEmpty());
- assertEquals(0, q.remainingCapacity());
- assertEquals(n, q.size());
- return q;
- }
-
- /**
- * A new queue has the indicated capacity, or Integer.MAX_VALUE if
- * none given
- */
- public void testConstructor1() {
- assertEquals(SIZE, new LinkedBlockingQueue(SIZE).remainingCapacity());
- assertEquals(Integer.MAX_VALUE, new LinkedBlockingQueue().remainingCapacity());
- }
-
- /**
- * Constructor throws IAE if capacity argument nonpositive
- */
- public void testConstructor2() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(0);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * Initializing from null Collection throws NPE
- */
- public void testConstructor3() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection of null elements throws NPE
- */
- public void testConstructor4() {
- try {
- Integer[] ints = new Integer[SIZE];
- LinkedBlockingQueue q = new LinkedBlockingQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection with some null elements throws NPE
- */
- public void testConstructor5() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- LinkedBlockingQueue q = new LinkedBlockingQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements of collection used to initialize
- */
- public void testConstructor6() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- LinkedBlockingQueue q = new LinkedBlockingQueue(Arrays.asList(ints));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * Queue transitions from empty to full when elements added
- */
- public void testEmptyFull() {
- LinkedBlockingQueue q = new LinkedBlockingQueue(2);
- assertTrue(q.isEmpty());
- assertEquals("should have room for 2", 2, q.remainingCapacity());
- q.add(one);
- assertFalse(q.isEmpty());
- q.add(two);
- assertFalse(q.isEmpty());
- assertEquals(0, q.remainingCapacity());
- assertFalse(q.offer(three));
- }
-
- /**
- * remainingCapacity decreases on add, increases on remove
- */
- public void testRemainingCapacity() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.remainingCapacity());
- assertEquals(SIZE-i, q.size());
- q.remove();
- }
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(SIZE-i, q.remainingCapacity());
- assertEquals(i, q.size());
- q.add(new Integer(i));
- }
- }
-
- /**
- * offer(null) throws NPE
- */
- public void testOfferNull() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(1);
- q.offer(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * add(null) throws NPE
- */
- public void testAddNull() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(1);
- q.add(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * Offer succeeds if not full; fails if full
- */
- public void testOffer() {
- LinkedBlockingQueue q = new LinkedBlockingQueue(1);
- assertTrue(q.offer(zero));
- assertFalse(q.offer(one));
- }
-
- /**
- * add succeeds if not full; throws ISE if full
- */
- public void testAdd() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.add(new Integer(i)));
- }
- assertEquals(0, q.remainingCapacity());
- q.add(new Integer(SIZE));
- } catch (IllegalStateException success){
- }
- }
-
- /**
- * addAll(null) throws NPE
- */
- public void testAddAll1() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(1);
- q.addAll(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * addAll(this) throws IAE
- */
- public void testAddAllSelf() {
- try {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- q.addAll(q);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * addAll of a collection with null elements throws NPE
- */
- public void testAddAll2() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll of a collection with any null elements throws NPE after
- * possibly adding some elements
- */
- public void testAddAll3() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll throws ISE if not enough room
- */
- public void testAddAll4() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(1);
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (IllegalStateException success) {}
- }
- /**
- * Queue contains all elements, in traversal order, of successful addAll
- */
- public void testAddAll5() {
- try {
- Integer[] empty = new Integer[0];
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- LinkedBlockingQueue q = new LinkedBlockingQueue(SIZE);
- assertFalse(q.addAll(Arrays.asList(empty)));
- assertTrue(q.addAll(Arrays.asList(ints)));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * put(null) throws NPE
- */
- public void testPutNull() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(SIZE);
- q.put(null);
- shouldThrow();
- }
- catch (NullPointerException success){
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * all elements successfully put are contained
- */
- public void testPut() {
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- Integer I = new Integer(i);
- q.put(I);
- assertTrue(q.contains(I));
- }
- assertEquals(0, q.remainingCapacity());
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * put blocks interruptibly if full
- */
- public void testBlockingPut() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- int added = 0;
- try {
- LinkedBlockingQueue q = new LinkedBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- q.put(new Integer(i));
- ++added;
- }
- q.put(new Integer(SIZE));
- threadShouldThrow();
- } catch (InterruptedException ie){
- threadAssertEquals(added, SIZE);
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * put blocks waiting for take when full
- */
- public void testPutWithTake() {
- final LinkedBlockingQueue q = new LinkedBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- int added = 0;
- try {
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- threadShouldThrow();
- } catch (InterruptedException e){
- threadAssertTrue(added >= 2);
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- q.take();
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * timed offer times out if full and elements not taken
- */
- public void testTimedOffer() {
- final LinkedBlockingQueue q = new LinkedBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.put(new Object());
- q.put(new Object());
- threadAssertFalse(q.offer(new Object(), SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- q.offer(new Object(), LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch (InterruptedException success){}
- }
- });
-
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * take retrieves elements in FIFO order
- */
- public void testTake() {
- try {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.take()).intValue());
- }
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * take blocks interruptibly when empty
- */
- public void testTakeFromEmpty() {
- final LinkedBlockingQueue q = new LinkedBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){ }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Take removes existing elements until empty, then blocks interruptibly
- */
- public void testBlockingTake() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.take()).intValue());
- }
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
-
- /**
- * poll succeeds unless empty
- */
- public void testPoll() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll()).intValue());
- }
- assertNull(q.poll());
- }
-
- /**
- * timed pool with zero timeout succeeds when non-empty, else times out
- */
- public void testTimedPoll0() {
- try {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll(0, TimeUnit.MILLISECONDS)).intValue());
- }
- assertNull(q.poll(0, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * timed pool with nonzero timeout succeeds when non-empty, else times out
- */
- public void testTimedPoll() {
- try {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)).intValue());
- }
- assertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * Interrupted timed poll throws InterruptedException instead of
- * returning timeout status
- */
- public void testInterruptedTimedPoll() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- threadAssertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)).intValue());
- }
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException success){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * timed poll before a delayed offer fails; after offer succeeds;
- * on interruption throws
- */
- public void testTimedPollWithOffer() {
- final LinkedBlockingQueue q = new LinkedBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch (InterruptedException success) { }
- }
- });
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- assertTrue(q.offer(zero, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * peek returns next element, or null if empty
- */
- public void testPeek() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.peek()).intValue());
- q.poll();
- assertTrue(q.peek() == null ||
- i != ((Integer)q.peek()).intValue());
- }
- assertNull(q.peek());
- }
-
- /**
- * element returns next element, or throws NSEE if empty
- */
- public void testElement() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.element()).intValue());
- q.poll();
- }
- try {
- q.element();
- shouldThrow();
- }
- catch (NoSuchElementException success) {}
- }
-
- /**
- * remove removes next element, or throws NSEE if empty
- */
- public void testRemove() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.remove()).intValue());
- }
- try {
- q.remove();
- shouldThrow();
- } catch (NoSuchElementException success){
- }
- }
-
- /**
- * remove(x) removes x and returns true if present
- */
- public void testRemoveElement() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 1; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- }
- for (int i = 0; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- assertFalse(q.remove(new Integer(i+1)));
- }
- assertTrue(q.isEmpty());
- }
-
- /**
- * contains(x) reports true when elements added but not yet removed
- */
- public void testContains() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.contains(new Integer(i)));
- q.poll();
- assertFalse(q.contains(new Integer(i)));
- }
- }
-
- /**
- * clear removes all elements
- */
- public void testClear() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- q.clear();
- assertTrue(q.isEmpty());
- assertEquals(0, q.size());
- assertEquals(SIZE, q.remainingCapacity());
- q.add(one);
- assertFalse(q.isEmpty());
- q.clear();
- assertTrue(q.isEmpty());
- }
-
- /**
- * containsAll(c) is true when c contains a subset of elements
- */
- public void testContainsAll() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- LinkedBlockingQueue p = new LinkedBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.containsAll(p));
- assertFalse(p.containsAll(q));
- p.add(new Integer(i));
- }
- assertTrue(p.containsAll(q));
- }
-
- /**
- * retainAll(c) retains only those elements of c and reports true if changed
- */
- public void testRetainAll() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- LinkedBlockingQueue p = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- boolean changed = q.retainAll(p);
- if (i == 0)
- assertFalse(changed);
- else
- assertTrue(changed);
-
- assertTrue(q.containsAll(p));
- assertEquals(SIZE-i, q.size());
- p.remove();
- }
- }
-
- /**
- * removeAll(c) removes only those elements of c and reports true if changed
- */
- public void testRemoveAll() {
- for (int i = 1; i < SIZE; ++i) {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- LinkedBlockingQueue p = populatedQueue(i);
- assertTrue(q.removeAll(p));
- assertEquals(SIZE-i, q.size());
- for (int j = 0; j < i; ++j) {
- Integer I = (Integer)(p.remove());
- assertFalse(q.contains(I));
- }
- }
- }
-
- /**
- * toArray contains all elements
- */
- public void testToArray() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- Object[] o = q.toArray();
- try {
- for(int i = 0; i < o.length; i++)
- assertEquals(o[i], q.take());
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * toArray(a) contains all elements
- */
- public void testToArray2() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- ints = (Integer[])q.toArray(ints);
- try {
- for(int i = 0; i < ints.length; i++)
- assertEquals(ints[i], q.take());
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * toArray(null) throws NPE
- */
- public void testToArray_BadArg() {
- try {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(null);
- shouldThrow();
- } catch(NullPointerException success){}
- }
-
- /**
- * toArray with incompatible array type throws CCE
- */
- public void testToArray1_BadArg() {
- try {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(new String[10] );
- shouldThrow();
- } catch(ArrayStoreException success){}
- }
-
-
- /**
- * iterator iterates through all elements
- */
- public void testIterator() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- Iterator it = q.iterator();
- try {
- while(it.hasNext()){
- assertEquals(it.next(), q.take());
- }
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * iterator.remove removes current element
- */
- public void testIteratorRemove () {
- final LinkedBlockingQueue q = new LinkedBlockingQueue(3);
- q.add(two);
- q.add(one);
- q.add(three);
-
- Iterator it = q.iterator();
- it.next();
- it.remove();
-
- it = q.iterator();
- assertEquals(it.next(), one);
- assertEquals(it.next(), three);
- assertFalse(it.hasNext());
- }
-
-
- /**
- * iterator ordering is FIFO
- */
- public void testIteratorOrdering() {
- final LinkedBlockingQueue q = new LinkedBlockingQueue(3);
- q.add(one);
- q.add(two);
- q.add(three);
- assertEquals(0, q.remainingCapacity());
- int k = 0;
- for (Iterator it = q.iterator(); it.hasNext();) {
- int i = ((Integer)(it.next())).intValue();
- assertEquals(++k, i);
- }
- assertEquals(3, k);
- }
-
- /**
- * Modifications do not cause iterators to fail
- */
- public void testWeaklyConsistentIteration () {
- final LinkedBlockingQueue q = new LinkedBlockingQueue(3);
- q.add(one);
- q.add(two);
- q.add(three);
- try {
- for (Iterator it = q.iterator(); it.hasNext();) {
- q.remove();
- it.next();
- }
- }
- catch (ConcurrentModificationException e) {
- unexpectedException();
- }
- assertEquals(0, q.size());
- }
-
-
- /**
- * toString contains toStrings of elements
- */
- public void testToString() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- String s = q.toString();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(s.indexOf(String.valueOf(i)) >= 0);
- }
- }
-
-
- /**
- * offer transfers elements across Executor tasks
- */
- public void testOfferInExecutor() {
- final LinkedBlockingQueue q = new LinkedBlockingQueue(2);
- q.add(one);
- q.add(two);
- ExecutorService executor = Executors.newFixedThreadPool(2);
- executor.execute(new Runnable() {
- public void run() {
- threadAssertFalse(q.offer(three));
- try {
- threadAssertTrue(q.offer(three, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertEquals(0, q.remainingCapacity());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- executor.execute(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- threadAssertEquals(one, q.take());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- joinPool(executor);
- }
-
- /**
- * poll retrieves elements across Executor threads
- */
- public void testPollInExecutor() {
- final LinkedBlockingQueue q = new LinkedBlockingQueue(2);
- ExecutorService executor = Executors.newFixedThreadPool(2);
- executor.execute(new Runnable() {
- public void run() {
- threadAssertNull(q.poll());
- try {
- threadAssertTrue(null != q.poll(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(q.isEmpty());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- executor.execute(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- q.put(one);
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- joinPool(executor);
- }
-
- /**
- * A deserialized serialized queue has same elements in same order
- */
- public void testSerialization() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- LinkedBlockingQueue r = (LinkedBlockingQueue)in.readObject();
- assertEquals(q.size(), r.size());
- while (!q.isEmpty())
- assertEquals(q.remove(), r.remove());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainTo(null) throws NPE
- */
- public void testDrainToNull() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(null);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this) throws IAE
- */
- public void testDrainToSelf() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(q);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c) empties queue into another collection c
- */
- public void testDrainTo() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- ArrayList l = new ArrayList();
- q.drainTo(l);
- assertEquals(q.size(), 0);
- assertEquals(l.size(), SIZE);
- for (int i = 0; i < SIZE; ++i)
- assertEquals(l.get(i), new Integer(i));
- }
-
- /**
- * drainTo empties full queue, unblocking a waiting put.
- */
- public void testDrainToWithActivePut() {
- final LinkedBlockingQueue q = populatedQueue(SIZE);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.put(new Integer(SIZE+1));
- } catch (InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- ArrayList l = new ArrayList();
- q.drainTo(l);
- assertTrue(l.size() >= SIZE);
- for (int i = 0; i < SIZE; ++i)
- assertEquals(l.get(i), new Integer(i));
- t.join();
- assertTrue(q.size() + l.size() >= SIZE);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainTo(null, n) throws NPE
- */
- public void testDrainToNullN() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(null, 0);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this, n) throws IAE
- */
- public void testDrainToSelfN() {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(q, 0);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c, n) empties first max {n, size} elements of queue into c
- */
- public void testDrainToN() {
- for (int i = 0; i < SIZE + 2; ++i) {
- LinkedBlockingQueue q = populatedQueue(SIZE);
- ArrayList l = new ArrayList();
- q.drainTo(l, i);
- int k = (i < SIZE)? i : SIZE;
- assertEquals(q.size(), SIZE-k);
- assertEquals(l.size(), k);
- for (int j = 0; j < k; ++j)
- assertEquals(l.get(j), new Integer(j));
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/LinkedListTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/LinkedListTest.java
deleted file mode 100755
index 3a20207..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/LinkedListTest.java
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-
-public class LinkedListTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
-
- public static Test suite() {
- return new TestSuite(LinkedListTest.class);
- }
-
- /**
- * Create a queue of given size containing consecutive
- * Integers 0 ... n.
- */
- private LinkedList populatedQueue(int n) {
- LinkedList q = new LinkedList();
- assertTrue(q.isEmpty());
- for(int i = 0; i < n; ++i)
- assertTrue(q.offer(new Integer(i)));
- assertFalse(q.isEmpty());
- assertEquals(n, q.size());
- return q;
- }
-
- /**
- * new queue is empty
- */
- public void testConstructor1() {
- assertEquals(0, new LinkedList().size());
- }
-
- /**
- * Initializing from null Collection throws NPE
- */
- public void testConstructor3() {
- try {
- LinkedList q = new LinkedList((Collection)null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements of collection used to initialize
-
- */
- public void testConstructor6() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- LinkedList q = new LinkedList(Arrays.asList(ints));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * isEmpty is true before add, false after
- */
- public void testEmpty() {
- LinkedList q = new LinkedList();
- assertTrue(q.isEmpty());
- q.add(new Integer(1));
- assertFalse(q.isEmpty());
- q.add(new Integer(2));
- q.remove();
- q.remove();
- assertTrue(q.isEmpty());
- }
-
- /**
- * size changes when elements added and removed
- */
- public void testSize() {
- LinkedList q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(SIZE-i, q.size());
- q.remove();
- }
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.size());
- q.add(new Integer(i));
- }
- }
-
- /**
- * offer(null) succeeds
- */
- public void testOfferNull() {
- try {
- LinkedList q = new LinkedList();
- q.offer(null);
- } catch (NullPointerException ie) {
- unexpectedException();
- }
- }
-
- /**
- * Offer succeeds
- */
- public void testOffer() {
- LinkedList q = new LinkedList();
- assertTrue(q.offer(new Integer(0)));
- assertTrue(q.offer(new Integer(1)));
- }
-
- /**
- * add succeeds
- */
- public void testAdd() {
- LinkedList q = new LinkedList();
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.size());
- assertTrue(q.add(new Integer(i)));
- }
- }
-
- /**
- * addAll(null) throws NPE
- */
- public void testAddAll1() {
- try {
- LinkedList q = new LinkedList();
- q.addAll(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements, in traversal order, of successful addAll
- */
- public void testAddAll5() {
- try {
- Integer[] empty = new Integer[0];
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- LinkedList q = new LinkedList();
- assertFalse(q.addAll(Arrays.asList(empty)));
- assertTrue(q.addAll(Arrays.asList(ints)));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * addAll with too large an index throws IOOBE
- */
- public void testAddAll2_IndexOutOfBoundsException() {
- try {
- LinkedList l = new LinkedList();
- l.add(new Object());
- LinkedList m = new LinkedList();
- m.add(new Object());
- l.addAll(4,m);
- shouldThrow();
- } catch(IndexOutOfBoundsException success) {}
- }
-
- /**
- * addAll with negative index throws IOOBE
- */
- public void testAddAll4_BadIndex() {
- try {
- LinkedList l = new LinkedList();
- l.add(new Object());
- LinkedList m = new LinkedList();
- m.add(new Object());
- l.addAll(-1,m);
- shouldThrow();
- } catch(IndexOutOfBoundsException success){}
- }
-
- /**
- * poll succeeds unless empty
- */
- public void testPoll() {
- LinkedList q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll()).intValue());
- }
- assertNull(q.poll());
- }
-
- /**
- * peek returns next element, or null if empty
- */
- public void testPeek() {
- LinkedList q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.peek()).intValue());
- q.poll();
- assertTrue(q.peek() == null ||
- i != ((Integer)q.peek()).intValue());
- }
- assertNull(q.peek());
- }
-
- /**
- * element returns next element, or throws NSEE if empty
- */
- public void testElement() {
- LinkedList q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.element()).intValue());
- q.poll();
- }
- try {
- q.element();
- shouldThrow();
- }
- catch (NoSuchElementException success) {}
- }
-
- /**
- * remove removes next element, or throws NSEE if empty
- */
- public void testRemove() {
- LinkedList q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.remove()).intValue());
- }
- try {
- q.remove();
- shouldThrow();
- } catch (NoSuchElementException success){
- }
- }
-
- /**
- * remove(x) removes x and returns true if present
- */
- public void testRemoveElement() {
- LinkedList q = populatedQueue(SIZE);
- for (int i = 1; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- }
- for (int i = 0; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- assertFalse(q.remove(new Integer(i+1)));
- }
- assertTrue(q.isEmpty());
- }
-
- /**
- * contains(x) reports true when elements added but not yet removed
- */
- public void testContains() {
- LinkedList q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.contains(new Integer(i)));
- q.poll();
- assertFalse(q.contains(new Integer(i)));
- }
- }
-
- /**
- * clear removes all elements
- */
- public void testClear() {
- LinkedList q = populatedQueue(SIZE);
- q.clear();
- assertTrue(q.isEmpty());
- assertEquals(0, q.size());
- q.add(new Integer(1));
- assertFalse(q.isEmpty());
- q.clear();
- assertTrue(q.isEmpty());
- }
-
- /**
- * containsAll(c) is true when c contains a subset of elements
- */
- public void testContainsAll() {
- LinkedList q = populatedQueue(SIZE);
- LinkedList p = new LinkedList();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.containsAll(p));
- assertFalse(p.containsAll(q));
- p.add(new Integer(i));
- }
- assertTrue(p.containsAll(q));
- }
-
- /**
- * retainAll(c) retains only those elements of c and reports true if changed
- */
- public void testRetainAll() {
- LinkedList q = populatedQueue(SIZE);
- LinkedList p = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- boolean changed = q.retainAll(p);
- if (i == 0)
- assertFalse(changed);
- else
- assertTrue(changed);
-
- assertTrue(q.containsAll(p));
- assertEquals(SIZE-i, q.size());
- p.remove();
- }
- }
-
- /**
- * removeAll(c) removes only those elements of c and reports true if changed
- */
- public void testRemoveAll() {
- for (int i = 1; i < SIZE; ++i) {
- LinkedList q = populatedQueue(SIZE);
- LinkedList p = populatedQueue(i);
- assertTrue(q.removeAll(p));
- assertEquals(SIZE-i, q.size());
- for (int j = 0; j < i; ++j) {
- Integer I = (Integer)(p.remove());
- assertFalse(q.contains(I));
- }
- }
- }
-
- /**
- * toArray contains all elements
- */
- public void testToArray() {
- LinkedList q = populatedQueue(SIZE);
- Object[] o = q.toArray();
- Arrays.sort(o);
- for(int i = 0; i < o.length; i++)
- assertEquals(o[i], q.poll());
- }
-
- /**
- * toArray(a) contains all elements
- */
- public void testToArray2() {
- LinkedList q = populatedQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- ints = (Integer[])q.toArray(ints);
- Arrays.sort(ints);
- for(int i = 0; i < ints.length; i++)
- assertEquals(ints[i], q.poll());
- }
-
- /**
- * toArray(null) throws NPE
- */
- public void testToArray_BadArg() {
- try {
- LinkedList l = new LinkedList();
- l.add(new Object());
- Object o[] = l.toArray(null);
- shouldThrow();
- } catch(NullPointerException success){}
- }
-
- /**
- * toArray with incompatable aray type throws CCE
- */
- public void testToArray1_BadArg() {
- try {
- LinkedList l = new LinkedList();
- l.add(new Integer(5));
- Object o[] = l.toArray(new String[10] );
- shouldThrow();
- } catch(ArrayStoreException success){}
- }
-
- /**
- * iterator iterates through all elements
- */
- public void testIterator() {
- LinkedList q = populatedQueue(SIZE);
- int i = 0;
- Iterator it = q.iterator();
- while(it.hasNext()) {
- assertTrue(q.contains(it.next()));
- ++i;
- }
- assertEquals(i, SIZE);
- }
-
- /**
- * iterator ordering is FIFO
- */
- public void testIteratorOrdering() {
- final LinkedList q = new LinkedList();
- q.add(new Integer(1));
- q.add(new Integer(2));
- q.add(new Integer(3));
- int k = 0;
- for (Iterator it = q.iterator(); it.hasNext();) {
- int i = ((Integer)(it.next())).intValue();
- assertEquals(++k, i);
- }
-
- assertEquals(3, k);
- }
-
- /**
- * iterator.remove removes current element
- */
- public void testIteratorRemove () {
- final LinkedList q = new LinkedList();
- q.add(new Integer(1));
- q.add(new Integer(2));
- q.add(new Integer(3));
- Iterator it = q.iterator();
- it.next();
- it.remove();
- it = q.iterator();
- assertEquals(it.next(), new Integer(2));
- assertEquals(it.next(), new Integer(3));
- assertFalse(it.hasNext());
- }
-
-
- /**
- * toString contains toStrings of elements
- */
- public void testToString() {
- LinkedList q = populatedQueue(SIZE);
- String s = q.toString();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(s.indexOf(String.valueOf(i)) >= 0);
- }
- }
-
- /**
- * peek returns element inserted with addFirst
- */
- public void testAddFirst() {
- LinkedList q = populatedQueue(3);
- q.addFirst(four);
- assertEquals(four,q.peek());
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/LockSupportTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/LockSupportTest.java
deleted file mode 100755
index 8d74a3a..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/LockSupportTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.concurrent.locks.*;
-
-public class LockSupportTest extends JSR166TestCase{
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(LockSupportTest.class);
- }
-
- /**
- * park is released by unpark occurring after park
- */
- public void testPark() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- LockSupport.park();
- } catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- LockSupport.unpark(t);
- t.join();
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * park is released by unpark occurring before park
- */
- public void testPark2() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SHORT_DELAY_MS);
- LockSupport.park();
- } catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- LockSupport.unpark(t);
- t.join();
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * park is released by interrupt
- */
- public void testPark3() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- LockSupport.park();
- threadAssertTrue(Thread.interrupted());
- } catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * park returns if interrupted before park
- */
- public void testPark4() {
- final ReentrantLock lock = new ReentrantLock();
- lock.lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- LockSupport.park();
- } catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- t.interrupt();
- lock.unlock();
- t.join();
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * parkNanos times out if not unparked
- */
- public void testParkNanos() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- LockSupport.parkNanos(1000);
- } catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- t.join();
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-
-
- /**
- * parkUntil times out if not unparked
- */
- public void testParkUntil() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- long d = new Date().getTime() + 100;
- LockSupport.parkUntil(d);
- } catch(Exception e){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- t.join();
- }
- catch(Exception e) {
- unexpectedException();
- }
- }
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/PriorityBlockingQueueTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/PriorityBlockingQueueTest.java
deleted file mode 100755
index b258963..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/PriorityBlockingQueueTest.java
+++ /dev/null
@@ -1,943 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class PriorityBlockingQueueTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(PriorityBlockingQueueTest.class);
- }
-
- private static final int NOCAP = Integer.MAX_VALUE;
-
- /** Sample Comparator */
- static class MyReverseComparator implements Comparator {
- public int compare(Object x, Object y) {
- int i = ((Integer)x).intValue();
- int j = ((Integer)y).intValue();
- if (i < j) return 1;
- if (i > j) return -1;
- return 0;
- }
- }
-
- /**
- * Create a queue of given size containing consecutive
- * Integers 0 ... n.
- */
- private PriorityBlockingQueue populatedQueue(int n) {
- PriorityBlockingQueue q = new PriorityBlockingQueue(n);
- assertTrue(q.isEmpty());
- for(int i = n-1; i >= 0; i-=2)
- assertTrue(q.offer(new Integer(i)));
- for(int i = (n & 1); i < n; i+=2)
- assertTrue(q.offer(new Integer(i)));
- assertFalse(q.isEmpty());
- assertEquals(NOCAP, q.remainingCapacity());
- assertEquals(n, q.size());
- return q;
- }
-
- /**
- * A new queue has unbounded capacity
- */
- public void testConstructor1() {
- assertEquals(NOCAP, new PriorityBlockingQueue(SIZE).remainingCapacity());
- }
-
- /**
- * Constructor throws IAE if capacity argument nonpositive
- */
- public void testConstructor2() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(0);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * Initializing from null Collection throws NPE
- */
- public void testConstructor3() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection of null elements throws NPE
- */
- public void testConstructor4() {
- try {
- Integer[] ints = new Integer[SIZE];
- PriorityBlockingQueue q = new PriorityBlockingQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection with some null elements throws NPE
- */
- public void testConstructor5() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- PriorityBlockingQueue q = new PriorityBlockingQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements of collection used to initialize
- */
- public void testConstructor6() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- PriorityBlockingQueue q = new PriorityBlockingQueue(Arrays.asList(ints));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * The comparator used in constructor is used
- */
- public void testConstructor7() {
- try {
- MyReverseComparator cmp = new MyReverseComparator();
- PriorityBlockingQueue q = new PriorityBlockingQueue(SIZE, cmp);
- assertEquals(cmp, q.comparator());
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- for (int i = SIZE-1; i >= 0; --i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * isEmpty is true before add, false after
- */
- public void testEmpty() {
- PriorityBlockingQueue q = new PriorityBlockingQueue(2);
- assertTrue(q.isEmpty());
- assertEquals(NOCAP, q.remainingCapacity());
- q.add(one);
- assertFalse(q.isEmpty());
- q.add(two);
- q.remove();
- q.remove();
- assertTrue(q.isEmpty());
- }
-
- /**
- * remainingCapacity does not change when elements added or removed,
- * but size does
- */
- public void testRemainingCapacity() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(NOCAP, q.remainingCapacity());
- assertEquals(SIZE-i, q.size());
- q.remove();
- }
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(NOCAP, q.remainingCapacity());
- assertEquals(i, q.size());
- q.add(new Integer(i));
- }
- }
-
- /**
- * offer(null) throws NPE
- */
- public void testOfferNull() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(1);
- q.offer(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * add(null) throws NPE
- */
- public void testAddNull() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(1);
- q.add(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * Offer of comparable element succeeds
- */
- public void testOffer() {
- PriorityBlockingQueue q = new PriorityBlockingQueue(1);
- assertTrue(q.offer(zero));
- assertTrue(q.offer(one));
- }
-
- /**
- * Offer of non-Comparable throws CCE
- */
- public void testOfferNonComparable() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(1);
- q.offer(new Object());
- q.offer(new Object());
- q.offer(new Object());
- shouldThrow();
- }
- catch(ClassCastException success) {}
- }
-
- /**
- * add of comparable succeeds
- */
- public void testAdd() {
- PriorityBlockingQueue q = new PriorityBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.size());
- assertTrue(q.add(new Integer(i)));
- }
- }
-
- /**
- * addAll(null) throws NPE
- */
- public void testAddAll1() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(1);
- q.addAll(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * addAll(this) throws IAE
- */
- public void testAddAllSelf() {
- try {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- q.addAll(q);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * addAll of a collection with null elements throws NPE
- */
- public void testAddAll2() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll of a collection with any null elements throws NPE after
- * possibly adding some elements
- */
- public void testAddAll3() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements of successful addAll
- */
- public void testAddAll5() {
- try {
- Integer[] empty = new Integer[0];
- Integer[] ints = new Integer[SIZE];
- for (int i = SIZE-1; i >= 0; --i)
- ints[i] = new Integer(i);
- PriorityBlockingQueue q = new PriorityBlockingQueue(SIZE);
- assertFalse(q.addAll(Arrays.asList(empty)));
- assertTrue(q.addAll(Arrays.asList(ints)));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * put(null) throws NPE
- */
- public void testPutNull() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(SIZE);
- q.put(null);
- shouldThrow();
- }
- catch (NullPointerException success){
- }
- }
-
- /**
- * all elements successfully put are contained
- */
- public void testPut() {
- try {
- PriorityBlockingQueue q = new PriorityBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- Integer I = new Integer(i);
- q.put(I);
- assertTrue(q.contains(I));
- }
- assertEquals(SIZE, q.size());
- }
- finally {
- }
- }
-
- /**
- * put doesn't block waiting for take
- */
- public void testPutWithTake() {
- final PriorityBlockingQueue q = new PriorityBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- int added = 0;
- try {
- q.put(new Integer(0));
- ++added;
- q.put(new Integer(0));
- ++added;
- q.put(new Integer(0));
- ++added;
- q.put(new Integer(0));
- ++added;
- threadAssertTrue(added == 4);
- } finally {
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- q.take();
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * timed offer does not time out
- */
- public void testTimedOffer() {
- final PriorityBlockingQueue q = new PriorityBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.put(new Integer(0));
- q.put(new Integer(0));
- threadAssertTrue(q.offer(new Integer(0), SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(q.offer(new Integer(0), LONG_DELAY_MS, TimeUnit.MILLISECONDS));
- } finally { }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * take retrieves elements in priority order
- */
- public void testTake() {
- try {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.take()).intValue());
- }
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * take blocks interruptibly when empty
- */
- public void testTakeFromEmpty() {
- final PriorityBlockingQueue q = new PriorityBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){ }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Take removes existing elements until empty, then blocks interruptibly
- */
- public void testBlockingTake() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- threadAssertEquals(i, ((Integer)q.take()).intValue());
- }
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
-
- /**
- * poll succeeds unless empty
- */
- public void testPoll() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll()).intValue());
- }
- assertNull(q.poll());
- }
-
- /**
- * timed pool with zero timeout succeeds when non-empty, else times out
- */
- public void testTimedPoll0() {
- try {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll(0, TimeUnit.MILLISECONDS)).intValue());
- }
- assertNull(q.poll(0, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * timed pool with nonzero timeout succeeds when non-empty, else times out
- */
- public void testTimedPoll() {
- try {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)).intValue());
- }
- assertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * Interrupted timed poll throws InterruptedException instead of
- * returning timeout status
- */
- public void testInterruptedTimedPoll() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- threadAssertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)).intValue());
- }
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException success){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * timed poll before a delayed offer fails; after offer succeeds;
- * on interruption throws
- */
- public void testTimedPollWithOffer() {
- final PriorityBlockingQueue q = new PriorityBlockingQueue(2);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch (InterruptedException success) { }
- }
- });
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- assertTrue(q.offer(new Integer(0), SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * peek returns next element, or null if empty
- */
- public void testPeek() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.peek()).intValue());
- q.poll();
- assertTrue(q.peek() == null ||
- i != ((Integer)q.peek()).intValue());
- }
- assertNull(q.peek());
- }
-
- /**
- * element returns next element, or throws NSEE if empty
- */
- public void testElement() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.element()).intValue());
- q.poll();
- }
- try {
- q.element();
- shouldThrow();
- }
- catch (NoSuchElementException success) {}
- }
-
- /**
- * remove removes next element, or throws NSEE if empty
- */
- public void testRemove() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.remove()).intValue());
- }
- try {
- q.remove();
- shouldThrow();
- } catch (NoSuchElementException success){
- }
- }
-
- /**
- * remove(x) removes x and returns true if present
- */
- public void testRemoveElement() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 1; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- }
- for (int i = 0; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- assertFalse(q.remove(new Integer(i+1)));
- }
- assertTrue(q.isEmpty());
- }
-
- /**
- * contains(x) reports true when elements added but not yet removed
- */
- public void testContains() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.contains(new Integer(i)));
- q.poll();
- assertFalse(q.contains(new Integer(i)));
- }
- }
-
- /**
- * clear removes all elements
- */
- public void testClear() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- q.clear();
- assertTrue(q.isEmpty());
- assertEquals(0, q.size());
- assertEquals(NOCAP, q.remainingCapacity());
- q.add(new Integer(1));
- assertFalse(q.isEmpty());
- q.clear();
- assertTrue(q.isEmpty());
- }
-
- /**
- * containsAll(c) is true when c contains a subset of elements
- */
- public void testContainsAll() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- PriorityBlockingQueue p = new PriorityBlockingQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.containsAll(p));
- assertFalse(p.containsAll(q));
- p.add(new Integer(i));
- }
- assertTrue(p.containsAll(q));
- }
-
- /**
- * retainAll(c) retains only those elements of c and reports true if changed
- */
- public void testRetainAll() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- PriorityBlockingQueue p = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- boolean changed = q.retainAll(p);
- if (i == 0)
- assertFalse(changed);
- else
- assertTrue(changed);
-
- assertTrue(q.containsAll(p));
- assertEquals(SIZE-i, q.size());
- p.remove();
- }
- }
-
- /**
- * removeAll(c) removes only those elements of c and reports true if changed
- */
- public void testRemoveAll() {
- for (int i = 1; i < SIZE; ++i) {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- PriorityBlockingQueue p = populatedQueue(i);
- assertTrue(q.removeAll(p));
- assertEquals(SIZE-i, q.size());
- for (int j = 0; j < i; ++j) {
- Integer I = (Integer)(p.remove());
- assertFalse(q.contains(I));
- }
- }
- }
-
- /**
- * toArray contains all elements
- */
- public void testToArray() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- Object[] o = q.toArray();
- Arrays.sort(o);
- try {
- for(int i = 0; i < o.length; i++)
- assertEquals(o[i], q.take());
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * toArray(a) contains all elements
- */
- public void testToArray2() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- ints = (Integer[])q.toArray(ints);
- Arrays.sort(ints);
- try {
- for(int i = 0; i < ints.length; i++)
- assertEquals(ints[i], q.take());
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * toArray(null) throws NPE
- */
- public void testToArray_BadArg() {
- try {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(null);
- shouldThrow();
- } catch(NullPointerException success){}
- }
-
- /**
- * toArray with incompatible array type throws CCE
- */
- public void testToArray1_BadArg() {
- try {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- Object o[] = q.toArray(new String[10] );
- shouldThrow();
- } catch(ArrayStoreException success){}
- }
-
- /**
- * iterator iterates through all elements
- */
- public void testIterator() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- int i = 0;
- Iterator it = q.iterator();
- while(it.hasNext()) {
- assertTrue(q.contains(it.next()));
- ++i;
- }
- assertEquals(i, SIZE);
- }
-
- /**
- * iterator.remove removes current element
- */
- public void testIteratorRemove () {
- final PriorityBlockingQueue q = new PriorityBlockingQueue(3);
- q.add(new Integer(2));
- q.add(new Integer(1));
- q.add(new Integer(3));
-
- Iterator it = q.iterator();
- it.next();
- it.remove();
-
- it = q.iterator();
- assertEquals(it.next(), new Integer(2));
- assertEquals(it.next(), new Integer(3));
- assertFalse(it.hasNext());
- }
-
-
- /**
- * toString contains toStrings of elements
- */
- public void testToString() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- String s = q.toString();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(s.indexOf(String.valueOf(i)) >= 0);
- }
- }
-
- /**
- * offer transfers elements across Executor tasks
- */
- public void testPollInExecutor() {
- final PriorityBlockingQueue q = new PriorityBlockingQueue(2);
- ExecutorService executor = Executors.newFixedThreadPool(2);
- executor.execute(new Runnable() {
- public void run() {
- threadAssertNull(q.poll());
- try {
- threadAssertTrue(null != q.poll(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(q.isEmpty());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- executor.execute(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- q.put(new Integer(1));
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- joinPool(executor);
- }
-
- /**
- * A deserialized serialized queue has same elements
- */
- public void testSerialization() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- PriorityBlockingQueue r = (PriorityBlockingQueue)in.readObject();
- assertEquals(q.size(), r.size());
- while (!q.isEmpty())
- assertEquals(q.remove(), r.remove());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainTo(null) throws NPE
- */
- public void testDrainToNull() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(null);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this) throws IAE
- */
- public void testDrainToSelf() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(q);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c) empties queue into another collection c
- */
- public void testDrainTo() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- ArrayList l = new ArrayList();
- q.drainTo(l);
- assertEquals(q.size(), 0);
- assertEquals(l.size(), SIZE);
- for (int i = 0; i < SIZE; ++i)
- assertEquals(l.get(i), new Integer(i));
- }
-
- /**
- * drainTo empties queue
- */
- public void testDrainToWithActivePut() {
- final PriorityBlockingQueue q = populatedQueue(SIZE);
- Thread t = new Thread(new Runnable() {
- public void run() {
- q.put(new Integer(SIZE+1));
- }
- });
- try {
- t.start();
- ArrayList l = new ArrayList();
- q.drainTo(l);
- assertTrue(l.size() >= SIZE);
- for (int i = 0; i < SIZE; ++i)
- assertEquals(l.get(i), new Integer(i));
- t.join();
- assertTrue(q.size() + l.size() >= SIZE);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainTo(null, n) throws NPE
- */
- public void testDrainToNullN() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(null, 0);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this, n) throws IAE
- */
- public void testDrainToSelfN() {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- try {
- q.drainTo(q, 0);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c, n) empties first max {n, size} elements of queue into c
- */
- public void testDrainToN() {
- for (int i = 0; i < SIZE + 2; ++i) {
- PriorityBlockingQueue q = populatedQueue(SIZE);
- ArrayList l = new ArrayList();
- q.drainTo(l, i);
- int k = (i < SIZE)? i : SIZE;
- assertEquals(q.size(), SIZE-k);
- assertEquals(l.size(), k);
- for (int j = 0; j < k; ++j)
- assertTrue(l.contains(new Integer(j)));
- }
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/PriorityQueueTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/PriorityQueueTest.java
deleted file mode 100755
index 409e1ed..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/PriorityQueueTest.java
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class PriorityQueueTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(PriorityQueueTest.class);
- }
-
- static class MyReverseComparator implements Comparator {
- public int compare(Object x, Object y) {
- int i = ((Integer)x).intValue();
- int j = ((Integer)y).intValue();
- if (i < j) return 1;
- if (i > j) return -1;
- return 0;
- }
- }
-
- /**
- * Create a queue of given size containing consecutive
- * Integers 0 ... n.
- */
- private PriorityQueue populatedQueue(int n) {
- PriorityQueue q = new PriorityQueue(n);
- assertTrue(q.isEmpty());
- for(int i = n-1; i >= 0; i-=2)
- assertTrue(q.offer(new Integer(i)));
- for(int i = (n & 1); i < n; i+=2)
- assertTrue(q.offer(new Integer(i)));
- assertFalse(q.isEmpty());
- assertEquals(n, q.size());
- return q;
- }
-
- /**
- * A new queue has unbounded capacity
- */
- public void testConstructor1() {
- assertEquals(0, new PriorityQueue(SIZE).size());
- }
-
- /**
- * Constructor throws IAE if capacity argument nonpositive
- */
- public void testConstructor2() {
- try {
- PriorityQueue q = new PriorityQueue(0);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * Initializing from null Collection throws NPE
- */
- public void testConstructor3() {
- try {
- PriorityQueue q = new PriorityQueue((Collection)null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection of null elements throws NPE
- */
- public void testConstructor4() {
- try {
- Integer[] ints = new Integer[SIZE];
- PriorityQueue q = new PriorityQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Initializing from Collection with some null elements throws NPE
- */
- public void testConstructor5() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- PriorityQueue q = new PriorityQueue(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements of collection used to initialize
- */
- public void testConstructor6() {
- try {
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- PriorityQueue q = new PriorityQueue(Arrays.asList(ints));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * The comparator used in constructor is used
- */
- public void testConstructor7() {
- try {
- MyReverseComparator cmp = new MyReverseComparator();
- PriorityQueue q = new PriorityQueue(SIZE, cmp);
- assertEquals(cmp, q.comparator());
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- for (int i = SIZE-1; i >= 0; --i)
- assertEquals(ints[i], q.poll());
- }
- finally {}
- }
-
- /**
- * isEmpty is true before add, false after
- */
- public void testEmpty() {
- PriorityQueue q = new PriorityQueue(2);
- assertTrue(q.isEmpty());
- q.add(new Integer(1));
- assertFalse(q.isEmpty());
- q.add(new Integer(2));
- q.remove();
- q.remove();
- assertTrue(q.isEmpty());
- }
-
- /**
- * size changes when elements added and removed
- */
- public void testSize() {
- PriorityQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(SIZE-i, q.size());
- q.remove();
- }
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.size());
- q.add(new Integer(i));
- }
- }
-
- /**
- * offer(null) throws NPE
- */
- public void testOfferNull() {
- try {
- PriorityQueue q = new PriorityQueue(1);
- q.offer(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * add(null) throws NPE
- */
- public void testAddNull() {
- try {
- PriorityQueue q = new PriorityQueue(1);
- q.add(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * Offer of comparable element succeeds
- */
- public void testOffer() {
- PriorityQueue q = new PriorityQueue(1);
- assertTrue(q.offer(zero));
- assertTrue(q.offer(one));
- }
-
- /**
- * Offer of non-Comparable throws CCE
- */
- public void testOfferNonComparable() {
- try {
- PriorityQueue q = new PriorityQueue(1);
- q.offer(new Object());
- q.offer(new Object());
- q.offer(new Object());
- shouldThrow();
- }
- catch(ClassCastException success) {}
- }
-
- /**
- * add of comparable succeeds
- */
- public void testAdd() {
- PriorityQueue q = new PriorityQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, q.size());
- assertTrue(q.add(new Integer(i)));
- }
- }
-
- /**
- * addAll(null) throws NPE
- */
- public void testAddAll1() {
- try {
- PriorityQueue q = new PriorityQueue(1);
- q.addAll(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll of a collection with null elements throws NPE
- */
- public void testAddAll2() {
- try {
- PriorityQueue q = new PriorityQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll of a collection with any null elements throws NPE after
- * possibly adding some elements
- */
- public void testAddAll3() {
- try {
- PriorityQueue q = new PriorityQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE-1; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * Queue contains all elements of successful addAll
- */
- public void testAddAll5() {
- try {
- Integer[] empty = new Integer[0];
- Integer[] ints = new Integer[SIZE];
- for (int i = 0; i < SIZE; ++i)
- ints[i] = new Integer(SIZE-1-i);
- PriorityQueue q = new PriorityQueue(SIZE);
- assertFalse(q.addAll(Arrays.asList(empty)));
- assertTrue(q.addAll(Arrays.asList(ints)));
- for (int i = 0; i < SIZE; ++i)
- assertEquals(new Integer(i), q.poll());
- }
- finally {}
- }
-
- /**
- * poll succeeds unless empty
- */
- public void testPoll() {
- PriorityQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.poll()).intValue());
- }
- assertNull(q.poll());
- }
-
- /**
- * peek returns next element, or null if empty
- */
- public void testPeek() {
- PriorityQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.peek()).intValue());
- q.poll();
- assertTrue(q.peek() == null ||
- i != ((Integer)q.peek()).intValue());
- }
- assertNull(q.peek());
- }
-
- /**
- * element returns next element, or throws NSEE if empty
- */
- public void testElement() {
- PriorityQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.element()).intValue());
- q.poll();
- }
- try {
- q.element();
- shouldThrow();
- }
- catch (NoSuchElementException success) {}
- }
-
- /**
- * remove removes next element, or throws NSEE if empty
- */
- public void testRemove() {
- PriorityQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertEquals(i, ((Integer)q.remove()).intValue());
- }
- try {
- q.remove();
- shouldThrow();
- } catch (NoSuchElementException success){
- }
- }
-
- /**
- * remove(x) removes x and returns true if present
- */
- public void testRemoveElement() {
- PriorityQueue q = populatedQueue(SIZE);
- for (int i = 1; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- }
- for (int i = 0; i < SIZE; i+=2) {
- assertTrue(q.remove(new Integer(i)));
- assertFalse(q.remove(new Integer(i+1)));
- }
- assertTrue(q.isEmpty());
- }
-
- /**
- * contains(x) reports true when elements added but not yet removed
- */
- public void testContains() {
- PriorityQueue q = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.contains(new Integer(i)));
- q.poll();
- assertFalse(q.contains(new Integer(i)));
- }
- }
-
- /**
- * clear removes all elements
- */
- public void testClear() {
- PriorityQueue q = populatedQueue(SIZE);
- q.clear();
- assertTrue(q.isEmpty());
- assertEquals(0, q.size());
- q.add(new Integer(1));
- assertFalse(q.isEmpty());
- q.clear();
- assertTrue(q.isEmpty());
- }
-
- /**
- * containsAll(c) is true when c contains a subset of elements
- */
- public void testContainsAll() {
- PriorityQueue q = populatedQueue(SIZE);
- PriorityQueue p = new PriorityQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(q.containsAll(p));
- assertFalse(p.containsAll(q));
- p.add(new Integer(i));
- }
- assertTrue(p.containsAll(q));
- }
-
- /**
- * retainAll(c) retains only those elements of c and reports true if changed
- */
- public void testRetainAll() {
- PriorityQueue q = populatedQueue(SIZE);
- PriorityQueue p = populatedQueue(SIZE);
- for (int i = 0; i < SIZE; ++i) {
- boolean changed = q.retainAll(p);
- if (i == 0)
- assertFalse(changed);
- else
- assertTrue(changed);
-
- assertTrue(q.containsAll(p));
- assertEquals(SIZE-i, q.size());
- p.remove();
- }
- }
-
- /**
- * removeAll(c) removes only those elements of c and reports true if changed
- */
- public void testRemoveAll() {
- for (int i = 1; i < SIZE; ++i) {
- PriorityQueue q = populatedQueue(SIZE);
- PriorityQueue p = populatedQueue(i);
- assertTrue(q.removeAll(p));
- assertEquals(SIZE-i, q.size());
- for (int j = 0; j < i; ++j) {
- Integer I = (Integer)(p.remove());
- assertFalse(q.contains(I));
- }
- }
- }
-
- /**
- * toArray contains all elements
- */
- public void testToArray() {
- PriorityQueue q = populatedQueue(SIZE);
- Object[] o = q.toArray();
- Arrays.sort(o);
- for(int i = 0; i < o.length; i++)
- assertEquals(o[i], q.poll());
- }
-
- /**
- * toArray(a) contains all elements
- */
- public void testToArray2() {
- PriorityQueue q = populatedQueue(SIZE);
- Integer[] ints = new Integer[SIZE];
- ints = (Integer[])q.toArray(ints);
- Arrays.sort(ints);
- for(int i = 0; i < ints.length; i++)
- assertEquals(ints[i], q.poll());
- }
-
- /**
- * iterator iterates through all elements
- */
- public void testIterator() {
- PriorityQueue q = populatedQueue(SIZE);
- int i = 0;
- Iterator it = q.iterator();
- while(it.hasNext()) {
- assertTrue(q.contains(it.next()));
- ++i;
- }
- assertEquals(i, SIZE);
- }
-
- /**
- * iterator.remove removes current element
- */
- public void testIteratorRemove () {
- final PriorityQueue q = new PriorityQueue(3);
- q.add(new Integer(2));
- q.add(new Integer(1));
- q.add(new Integer(3));
-
- Iterator it = q.iterator();
- it.next();
- it.remove();
-
- it = q.iterator();
- assertEquals(it.next(), new Integer(2));
- assertEquals(it.next(), new Integer(3));
- assertFalse(it.hasNext());
- }
-
-
- /**
- * toString contains toStrings of elements
- */
- public void testToString() {
- PriorityQueue q = populatedQueue(SIZE);
- String s = q.toString();
- for (int i = 0; i < SIZE; ++i) {
- assertTrue(s.indexOf(String.valueOf(i)) >= 0);
- }
- }
-
- /**
- * A deserialized serialized queue has same elements
- */
- public void testSerialization() {
- PriorityQueue q = populatedQueue(SIZE);
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- PriorityQueue r = (PriorityQueue)in.readObject();
- assertEquals(q.size(), r.size());
- while (!q.isEmpty())
- assertEquals(q.remove(), r.remove());
- } catch(Exception e){
- unexpectedException();
- }
- }
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ReentrantLockTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ReentrantLockTest.java
deleted file mode 100755
index fdc9f31..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ReentrantLockTest.java
+++ /dev/null
@@ -1,1080 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.locks.*;
-import java.util.concurrent.*;
-import java.util.*;
-import java.io.*;
-
-public class ReentrantLockTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(ReentrantLockTest.class);
- }
-
- /**
- * A runnable calling lockInterruptibly
- */
- class InterruptibleLockRunnable implements Runnable {
- final ReentrantLock lock;
- InterruptibleLockRunnable(ReentrantLock l) { lock = l; }
- public void run() {
- try {
- lock.lockInterruptibly();
- } catch(InterruptedException success){}
- }
- }
-
-
- /**
- * A runnable calling lockInterruptibly that expects to be
- * interrupted
- */
- class InterruptedLockRunnable implements Runnable {
- final ReentrantLock lock;
- InterruptedLockRunnable(ReentrantLock l) { lock = l; }
- public void run() {
- try {
- lock.lockInterruptibly();
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- }
-
- /**
- * Subclass to expose protected methods
- */
- static class PublicReentrantLock extends ReentrantLock {
- PublicReentrantLock() { super(); }
- public Collection<Thread> getQueuedThreads() {
- return super.getQueuedThreads();
- }
- public Collection<Thread> getWaitingThreads(Condition c) {
- return super.getWaitingThreads(c);
- }
-
-
- }
-
- /**
- * Constructor sets given fairness
- */
- public void testConstructor() {
- ReentrantLock rl = new ReentrantLock();
- assertFalse(rl.isFair());
- ReentrantLock r2 = new ReentrantLock(true);
- assertTrue(r2.isFair());
- }
-
- /**
- * locking an unlocked lock succeeds
- */
- public void testLock() {
- ReentrantLock rl = new ReentrantLock();
- rl.lock();
- assertTrue(rl.isLocked());
- rl.unlock();
- }
-
- /**
- * locking an unlocked fair lock succeeds
- */
- public void testFairLock() {
- ReentrantLock rl = new ReentrantLock(true);
- rl.lock();
- assertTrue(rl.isLocked());
- rl.unlock();
- }
-
- /**
- * Unlocking an unlocked lock throws IllegalMonitorStateException
- */
- public void testUnlock_IllegalMonitorStateException() {
- ReentrantLock rl = new ReentrantLock();
- try {
- rl.unlock();
- shouldThrow();
-
- } catch(IllegalMonitorStateException success){}
- }
-
- /**
- * tryLock on an unlocked lock succeeds
- */
- public void testTryLock() {
- ReentrantLock rl = new ReentrantLock();
- assertTrue(rl.tryLock());
- assertTrue(rl.isLocked());
- rl.unlock();
- }
-
-
- /**
- * hasQueuedThreads reports whether there are waiting threads
- */
- public void testhasQueuedThreads() {
- final ReentrantLock lock = new ReentrantLock();
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertFalse(lock.hasQueuedThreads());
- lock.lock();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.hasQueuedThreads());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.hasQueuedThreads());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.hasQueuedThreads());
- lock.unlock();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(lock.hasQueuedThreads());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getQueueLength reports number of waiting threads
- */
- public void testGetQueueLength() {
- final ReentrantLock lock = new ReentrantLock();
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertEquals(0, lock.getQueueLength());
- lock.lock();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(2, lock.getQueueLength());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- lock.unlock();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(0, lock.getQueueLength());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getQueueLength reports number of waiting threads
- */
- public void testGetQueueLength_fair() {
- final ReentrantLock lock = new ReentrantLock(true);
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertEquals(0, lock.getQueueLength());
- lock.lock();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(2, lock.getQueueLength());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- lock.unlock();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(0, lock.getQueueLength());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * hasQueuedThread(null) throws NPE
- */
- public void testHasQueuedThreadNPE() {
- final ReentrantLock sync = new ReentrantLock();
- try {
- sync.hasQueuedThread(null);
- shouldThrow();
- } catch (NullPointerException success) {
- }
- }
-
- /**
- * hasQueuedThread reports whether a thread is queued.
- */
- public void testHasQueuedThread() {
- final ReentrantLock sync = new ReentrantLock();
- Thread t1 = new Thread(new InterruptedLockRunnable(sync));
- Thread t2 = new Thread(new InterruptibleLockRunnable(sync));
- try {
- assertFalse(sync.hasQueuedThread(t1));
- assertFalse(sync.hasQueuedThread(t2));
- sync.lock();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasQueuedThread(t1));
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasQueuedThread(t1));
- assertTrue(sync.hasQueuedThread(t2));
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.hasQueuedThread(t1));
- assertTrue(sync.hasQueuedThread(t2));
- sync.unlock();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.hasQueuedThread(t1));
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.hasQueuedThread(t2));
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * getQueuedThreads includes waiting threads
- */
- public void testGetQueuedThreads() {
- final PublicReentrantLock lock = new PublicReentrantLock();
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertTrue(lock.getQueuedThreads().isEmpty());
- lock.lock();
- assertTrue(lock.getQueuedThreads().isEmpty());
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.getQueuedThreads().contains(t1));
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.getQueuedThreads().contains(t1));
- assertTrue(lock.getQueuedThreads().contains(t2));
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(lock.getQueuedThreads().contains(t1));
- assertTrue(lock.getQueuedThreads().contains(t2));
- lock.unlock();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.getQueuedThreads().isEmpty());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * timed tryLock is interruptible.
- */
- public void testInterruptedException2() {
- final ReentrantLock lock = new ReentrantLock();
- lock.lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.tryLock(MEDIUM_DELAY_MS,TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- try {
- t.start();
- t.interrupt();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * TryLock on a locked lock fails
- */
- public void testTryLockWhenLocked() {
- final ReentrantLock lock = new ReentrantLock();
- lock.lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- threadAssertFalse(lock.tryLock());
- }
- });
- try {
- t.start();
- t.join();
- lock.unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Timed tryLock on a locked lock times out
- */
- public void testTryLock_Timeout() {
- final ReentrantLock lock = new ReentrantLock();
- lock.lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertFalse(lock.tryLock(1, TimeUnit.MILLISECONDS));
- } catch (Exception ex) {
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- t.join();
- lock.unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getHoldCount returns number of recursive holds
- */
- public void testGetHoldCount() {
- ReentrantLock lock = new ReentrantLock();
- for(int i = 1; i <= SIZE; i++) {
- lock.lock();
- assertEquals(i,lock.getHoldCount());
- }
- for(int i = SIZE; i > 0; i--) {
- lock.unlock();
- assertEquals(i-1,lock.getHoldCount());
- }
- }
-
-
- /**
- * isLocked is true when locked and false when not
- */
- public void testIsLocked() {
- final ReentrantLock lock = new ReentrantLock();
- lock.lock();
- assertTrue(lock.isLocked());
- lock.unlock();
- assertFalse(lock.isLocked());
- Thread t = new Thread(new Runnable() {
- public void run() {
- lock.lock();
- try {
- Thread.sleep(SMALL_DELAY_MS);
- }
- catch(Exception e) {
- threadUnexpectedException();
- }
- lock.unlock();
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.isLocked());
- t.join();
- assertFalse(lock.isLocked());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * lockInterruptibly is interruptible.
- */
- public void testLockInterruptibly1() {
- final ReentrantLock lock = new ReentrantLock();
- lock.lock();
- Thread t = new Thread(new InterruptedLockRunnable(lock));
- try {
- t.start();
- t.interrupt();
- lock.unlock();
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * lockInterruptibly succeeds when unlocked, else is interruptible
- */
- public void testLockInterruptibly2() {
- final ReentrantLock lock = new ReentrantLock();
- try {
- lock.lockInterruptibly();
- } catch(Exception e) {
- unexpectedException();
- }
- Thread t = new Thread(new InterruptedLockRunnable(lock));
- try {
- t.start();
- t.interrupt();
- assertTrue(lock.isLocked());
- assertTrue(lock.isHeldByCurrentThread());
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Calling await without holding lock throws IllegalMonitorStateException
- */
- public void testAwait_IllegalMonitor() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- try {
- c.await();
- shouldThrow();
- }
- catch (IllegalMonitorStateException success) {
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * Calling signal without holding lock throws IllegalMonitorStateException
- */
- public void testSignal_IllegalMonitor() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- try {
- c.signal();
- shouldThrow();
- }
- catch (IllegalMonitorStateException success) {
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitNanos without a signal times out
- */
- public void testAwaitNanos_Timeout() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- try {
- lock.lock();
- long t = c.awaitNanos(100);
- assertTrue(t <= 0);
- lock.unlock();
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * timed await without a signal times out
- */
- public void testAwait_Timeout() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- try {
- lock.lock();
- assertFalse(c.await(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- lock.unlock();
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitUntil without a signal times out
- */
- public void testAwaitUntil_Timeout() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- try {
- lock.lock();
- java.util.Date d = new java.util.Date();
- assertFalse(c.awaitUntil(new java.util.Date(d.getTime() + 10)));
- lock.unlock();
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * await returns when signalled
- */
- public void testAwait() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- c.await();
- lock.unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.lock();
- c.signal();
- lock.unlock();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * hasWaiters throws NPE if null
- */
- public void testHasWaitersNPE() {
- final ReentrantLock lock = new ReentrantLock();
- try {
- lock.hasWaiters(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitQueueLength throws NPE if null
- */
- public void testGetWaitQueueLengthNPE() {
- final ReentrantLock lock = new ReentrantLock();
- try {
- lock.getWaitQueueLength(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitingThreads throws NPE if null
- */
- public void testGetWaitingThreadsNPE() {
- final PublicReentrantLock lock = new PublicReentrantLock();
- try {
- lock.getWaitingThreads(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * hasWaiters throws IAE if not owned
- */
- public void testHasWaitersIAE() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = (lock.newCondition());
- final ReentrantLock lock2 = new ReentrantLock();
- try {
- lock2.hasWaiters(c);
- shouldThrow();
- } catch (IllegalArgumentException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * hasWaiters throws IMSE if not locked
- */
- public void testHasWaitersIMSE() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = (lock.newCondition());
- try {
- lock.hasWaiters(c);
- shouldThrow();
- } catch (IllegalMonitorStateException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitQueueLength throws IAE if not owned
- */
- public void testGetWaitQueueLengthIAE() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = (lock.newCondition());
- final ReentrantLock lock2 = new ReentrantLock();
- try {
- lock2.getWaitQueueLength(c);
- shouldThrow();
- } catch (IllegalArgumentException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitQueueLength throws IMSE if not locked
- */
- public void testGetWaitQueueLengthIMSE() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = (lock.newCondition());
- try {
- lock.getWaitQueueLength(c);
- shouldThrow();
- } catch (IllegalMonitorStateException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitingThreads throws IAE if not owned
- */
- public void testGetWaitingThreadsIAE() {
- final PublicReentrantLock lock = new PublicReentrantLock();
- final Condition c = (lock.newCondition());
- final PublicReentrantLock lock2 = new PublicReentrantLock();
- try {
- lock2.getWaitingThreads(c);
- shouldThrow();
- } catch (IllegalArgumentException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitingThreads throws IMSE if not locked
- */
- public void testGetWaitingThreadsIMSE() {
- final PublicReentrantLock lock = new PublicReentrantLock();
- final Condition c = (lock.newCondition());
- try {
- lock.getWaitingThreads(c);
- shouldThrow();
- } catch (IllegalMonitorStateException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
-
- /**
- * hasWaiters returns true when a thread is waiting, else false
- */
- public void testHasWaiters() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- threadAssertFalse(lock.hasWaiters(c));
- threadAssertEquals(0, lock.getWaitQueueLength(c));
- c.await();
- lock.unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.lock();
- assertTrue(lock.hasWaiters(c));
- assertEquals(1, lock.getWaitQueueLength(c));
- c.signal();
- lock.unlock();
- Thread.sleep(SHORT_DELAY_MS);
- lock.lock();
- assertFalse(lock.hasWaiters(c));
- assertEquals(0, lock.getWaitQueueLength(c));
- lock.unlock();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitQueueLength returns number of waiting threads
- */
- public void testGetWaitQueueLength() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- threadAssertFalse(lock.hasWaiters(c));
- threadAssertEquals(0, lock.getWaitQueueLength(c));
- c.await();
- lock.unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- threadAssertTrue(lock.hasWaiters(c));
- threadAssertEquals(1, lock.getWaitQueueLength(c));
- c.await();
- lock.unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.lock();
- assertTrue(lock.hasWaiters(c));
- assertEquals(2, lock.getWaitQueueLength(c));
- c.signalAll();
- lock.unlock();
- Thread.sleep(SHORT_DELAY_MS);
- lock.lock();
- assertFalse(lock.hasWaiters(c));
- assertEquals(0, lock.getWaitQueueLength(c));
- lock.unlock();
- t1.join(SHORT_DELAY_MS);
- t2.join(SHORT_DELAY_MS);
- assertFalse(t1.isAlive());
- assertFalse(t2.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitingThreads returns only and all waiting threads
- */
- public void testGetWaitingThreads() {
- final PublicReentrantLock lock = new PublicReentrantLock();
- final Condition c = lock.newCondition();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- threadAssertTrue(lock.getWaitingThreads(c).isEmpty());
- c.await();
- lock.unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- threadAssertFalse(lock.getWaitingThreads(c).isEmpty());
- c.await();
- lock.unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- lock.lock();
- assertTrue(lock.getWaitingThreads(c).isEmpty());
- lock.unlock();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.lock();
- assertTrue(lock.hasWaiters(c));
- assertTrue(lock.getWaitingThreads(c).contains(t1));
- assertTrue(lock.getWaitingThreads(c).contains(t2));
- c.signalAll();
- lock.unlock();
- Thread.sleep(SHORT_DELAY_MS);
- lock.lock();
- assertFalse(lock.hasWaiters(c));
- assertTrue(lock.getWaitingThreads(c).isEmpty());
- lock.unlock();
- t1.join(SHORT_DELAY_MS);
- t2.join(SHORT_DELAY_MS);
- assertFalse(t1.isAlive());
- assertFalse(t2.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
-
- /**
- * awaitUninterruptibly doesn't abort on interrupt
- */
- public void testAwaitUninterruptibly() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- lock.lock();
- c.awaitUninterruptibly();
- lock.unlock();
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- lock.lock();
- c.signal();
- lock.unlock();
- assert(t.isInterrupted());
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * await is interruptible
- */
- public void testAwait_Interrupt() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- c.await();
- lock.unlock();
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitNanos is interruptible
- */
- public void testAwaitNanos_Interrupt() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- c.awaitNanos(1000 * 1000 * 1000); // 1 sec
- lock.unlock();
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitUntil is interruptible
- */
- public void testAwaitUntil_Interrupt() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- java.util.Date d = new java.util.Date();
- c.awaitUntil(new java.util.Date(d.getTime() + 10000));
- lock.unlock();
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * signalAll wakes up all threads
- */
- public void testSignalAll() {
- final ReentrantLock lock = new ReentrantLock();
- final Condition c = lock.newCondition();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- c.await();
- lock.unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.lock();
- c.await();
- lock.unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.lock();
- c.signalAll();
- lock.unlock();
- t1.join(SHORT_DELAY_MS);
- t2.join(SHORT_DELAY_MS);
- assertFalse(t1.isAlive());
- assertFalse(t2.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * A serialized lock deserializes as unlocked
- */
- public void testSerialization() {
- ReentrantLock l = new ReentrantLock();
- l.lock();
- l.unlock();
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- ReentrantLock r = (ReentrantLock) in.readObject();
- r.lock();
- r.unlock();
- } catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
- /**
- * toString indicates current lock state
- */
- public void testToString() {
- ReentrantLock lock = new ReentrantLock();
- String us = lock.toString();
- assertTrue(us.indexOf("Unlocked") >= 0);
- lock.lock();
- String ls = lock.toString();
- assertTrue(ls.indexOf("Locked") >= 0);
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ReentrantReadWriteLockTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ReentrantReadWriteLockTest.java
deleted file mode 100644
index 8925b42..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ReentrantReadWriteLockTest.java
+++ /dev/null
@@ -1,1321 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.locks.*;
-import java.util.concurrent.*;
-import java.io.*;
-import java.util.*;
-
-public class ReentrantReadWriteLockTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(ReentrantReadWriteLockTest.class);
- }
-
- /**
- * A runnable calling lockInterruptibly
- */
- class InterruptibleLockRunnable implements Runnable {
- final ReentrantReadWriteLock lock;
- InterruptibleLockRunnable(ReentrantReadWriteLock l) { lock = l; }
- public void run() {
- try {
- lock.writeLock().lockInterruptibly();
- } catch(InterruptedException success){}
- }
- }
-
-
- /**
- * A runnable calling lockInterruptibly that expects to be
- * interrupted
- */
- class InterruptedLockRunnable implements Runnable {
- final ReentrantReadWriteLock lock;
- InterruptedLockRunnable(ReentrantReadWriteLock l) { lock = l; }
- public void run() {
- try {
- lock.writeLock().lockInterruptibly();
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- }
-
- /**
- * Subclass to expose protected methods
- */
- static class PublicReentrantReadWriteLock extends ReentrantReadWriteLock {
- PublicReentrantReadWriteLock() { super(); }
- public Collection<Thread> getQueuedThreads() {
- return super.getQueuedThreads();
- }
- public Collection<Thread> getWaitingThreads(Condition c) {
- return super.getWaitingThreads(c);
- }
- }
-
- /**
- * Constructor sets given fairness, and is in unlocked state
- */
- public void testConstructor() {
- ReentrantReadWriteLock rl = new ReentrantReadWriteLock();
- assertFalse(rl.isFair());
- assertFalse(rl.isWriteLocked());
- assertEquals(0, rl.getReadLockCount());
- ReentrantReadWriteLock r2 = new ReentrantReadWriteLock(true);
- assertTrue(r2.isFair());
- assertFalse(r2.isWriteLocked());
- assertEquals(0, r2.getReadLockCount());
- }
-
- /**
- * write-locking and read-locking an unlocked lock succeed
- */
- public void testLock() {
- ReentrantReadWriteLock rl = new ReentrantReadWriteLock();
- rl.writeLock().lock();
- assertTrue(rl.isWriteLocked());
- assertTrue(rl.isWriteLockedByCurrentThread());
- assertEquals(0, rl.getReadLockCount());
- rl.writeLock().unlock();
- assertFalse(rl.isWriteLocked());
- assertFalse(rl.isWriteLockedByCurrentThread());
- assertEquals(0, rl.getReadLockCount());
- rl.readLock().lock();
- assertFalse(rl.isWriteLocked());
- assertFalse(rl.isWriteLockedByCurrentThread());
- assertEquals(1, rl.getReadLockCount());
- rl.readLock().unlock();
- assertFalse(rl.isWriteLocked());
- assertFalse(rl.isWriteLockedByCurrentThread());
- assertEquals(0, rl.getReadLockCount());
- }
-
-
- /**
- * locking an unlocked fair lock succeeds
- */
- public void testFairLock() {
- ReentrantReadWriteLock rl = new ReentrantReadWriteLock(true);
- rl.writeLock().lock();
- assertTrue(rl.isWriteLocked());
- assertTrue(rl.isWriteLockedByCurrentThread());
- assertEquals(0, rl.getReadLockCount());
- rl.writeLock().unlock();
- assertFalse(rl.isWriteLocked());
- assertFalse(rl.isWriteLockedByCurrentThread());
- assertEquals(0, rl.getReadLockCount());
- rl.readLock().lock();
- assertFalse(rl.isWriteLocked());
- assertFalse(rl.isWriteLockedByCurrentThread());
- assertEquals(1, rl.getReadLockCount());
- rl.readLock().unlock();
- assertFalse(rl.isWriteLocked());
- assertFalse(rl.isWriteLockedByCurrentThread());
- assertEquals(0, rl.getReadLockCount());
- }
-
- /**
- * getWriteHoldCount returns number of recursive holds
- */
- public void testGetHoldCount() {
- ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- for(int i = 1; i <= SIZE; i++) {
- lock.writeLock().lock();
- assertEquals(i,lock.getWriteHoldCount());
- }
- for(int i = SIZE; i > 0; i--) {
- lock.writeLock().unlock();
- assertEquals(i-1,lock.getWriteHoldCount());
- }
- }
-
-
- /**
- * write-unlocking an unlocked lock throws IllegalMonitorStateException
- */
- public void testUnlock_IllegalMonitorStateException() {
- ReentrantReadWriteLock rl = new ReentrantReadWriteLock();
- try {
- rl.writeLock().unlock();
- shouldThrow();
- } catch(IllegalMonitorStateException success){}
- }
-
-
- /**
- * write-lockInterruptibly is interruptible
- */
- public void testWriteLockInterruptibly_Interrupted() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lockInterruptibly();
- lock.writeLock().unlock();
- lock.writeLock().lockInterruptibly();
- lock.writeLock().unlock();
- } catch(InterruptedException success){}
- }
- });
- try {
- lock.writeLock().lock();
- t.start();
- t.interrupt();
- lock.writeLock().unlock();
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * timed write-tryLock is interruptible
- */
- public void testWriteTryLock_Interrupted() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.writeLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().tryLock(1000,TimeUnit.MILLISECONDS);
- } catch(InterruptedException success){}
- }
- });
- try {
- t.start();
- t.interrupt();
- lock.writeLock().unlock();
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * read-lockInterruptibly is interruptible
- */
- public void testReadLockInterruptibly_Interrupted() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.writeLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.readLock().lockInterruptibly();
- } catch(InterruptedException success){}
- }
- });
- try {
- t.start();
- t.interrupt();
- lock.writeLock().unlock();
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * timed read-tryLock is interruptible
- */
- public void testReadTryLock_Interrupted() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.writeLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.readLock().tryLock(1000,TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- try {
- t.start();
- t.interrupt();
- t.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * write-tryLock fails if locked
- */
- public void testWriteTryLockWhenLocked() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.writeLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- threadAssertFalse(lock.writeLock().tryLock());
- }
- });
- try {
- t.start();
- t.join();
- lock.writeLock().unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * read-tryLock fails if locked
- */
- public void testReadTryLockWhenLocked() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.writeLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- threadAssertFalse(lock.readLock().tryLock());
- }
- });
- try {
- t.start();
- t.join();
- lock.writeLock().unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Multiple threads can hold a read lock when not write-locked
- */
- public void testMultipleReadLocks() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.readLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- threadAssertTrue(lock.readLock().tryLock());
- lock.readLock().unlock();
- }
- });
- try {
- t.start();
- t.join();
- lock.readLock().unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * A writelock succeeds after reading threads unlock
- */
- public void testWriteAfterMultipleReadLocks() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.readLock().lock();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- lock.readLock().lock();
- lock.readLock().unlock();
- }
- });
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- lock.writeLock().lock();
- lock.writeLock().unlock();
- }
- });
-
- try {
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.readLock().unlock();
- t1.join(MEDIUM_DELAY_MS);
- t2.join(MEDIUM_DELAY_MS);
- assertTrue(!t1.isAlive());
- assertTrue(!t2.isAlive());
-
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Readlocks succeed after a writing thread unlocks
- */
- public void testReadAfterWriteLock() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.writeLock().lock();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- lock.readLock().lock();
- lock.readLock().unlock();
- }
- });
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- lock.readLock().lock();
- lock.readLock().unlock();
- }
- });
-
- try {
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.writeLock().unlock();
- t1.join(MEDIUM_DELAY_MS);
- t2.join(MEDIUM_DELAY_MS);
- assertTrue(!t1.isAlive());
- assertTrue(!t2.isAlive());
-
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * Read tryLock succeeds if readlocked but not writelocked
- */
- public void testTryLockWhenReadLocked() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.readLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- threadAssertTrue(lock.readLock().tryLock());
- lock.readLock().unlock();
- }
- });
- try {
- t.start();
- t.join();
- lock.readLock().unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
-
- /**
- * write tryLock fails when readlocked
- */
- public void testWriteTryLockWhenReadLocked() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.readLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- threadAssertFalse(lock.writeLock().tryLock());
- }
- });
- try {
- t.start();
- t.join();
- lock.readLock().unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
-
- /**
- * write timed tryLock times out if locked
- */
- public void testWriteTryLock_Timeout() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.writeLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertFalse(lock.writeLock().tryLock(1, TimeUnit.MILLISECONDS));
- } catch (Exception ex) {
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- t.join();
- lock.writeLock().unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * read timed tryLock times out if write-locked
- */
- public void testReadTryLock_Timeout() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- lock.writeLock().lock();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertFalse(lock.readLock().tryLock(1, TimeUnit.MILLISECONDS));
- } catch (Exception ex) {
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- t.join();
- lock.writeLock().unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * write lockInterruptibly succeeds if lock free else is interruptible
- */
- public void testWriteLockInterruptibly() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- try {
- lock.writeLock().lockInterruptibly();
- } catch(Exception e) {
- unexpectedException();
- }
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lockInterruptibly();
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
- try {
- t.start();
- t.interrupt();
- t.join();
- lock.writeLock().unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * read lockInterruptibly succeeds if lock free else is interruptible
- */
- public void testReadLockInterruptibly() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- try {
- lock.writeLock().lockInterruptibly();
- } catch(Exception e) {
- unexpectedException();
- }
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.readLock().lockInterruptibly();
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
- try {
- t.start();
- t.interrupt();
- t.join();
- lock.writeLock().unlock();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Calling await without holding lock throws IllegalMonitorStateException
- */
- public void testAwait_IllegalMonitor() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- try {
- c.await();
- shouldThrow();
- }
- catch (IllegalMonitorStateException success) {
- }
- catch (Exception ex) {
- shouldThrow();
- }
- }
-
- /**
- * Calling signal without holding lock throws IllegalMonitorStateException
- */
- public void testSignal_IllegalMonitor() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- try {
- c.signal();
- shouldThrow();
- }
- catch (IllegalMonitorStateException success) {
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitNanos without a signal times out
- */
- public void testAwaitNanos_Timeout() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- try {
- lock.writeLock().lock();
- long t = c.awaitNanos(100);
- assertTrue(t <= 0);
- lock.writeLock().unlock();
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * timed await without a signal times out
- */
- public void testAwait_Timeout() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- try {
- lock.writeLock().lock();
- assertFalse(c.await(10, TimeUnit.MILLISECONDS));
- lock.writeLock().unlock();
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitUntil without a signal times out
- */
- public void testAwaitUntil_Timeout() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- try {
- lock.writeLock().lock();
- java.util.Date d = new java.util.Date();
- assertFalse(c.awaitUntil(new java.util.Date(d.getTime() + 10)));
- lock.writeLock().unlock();
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * await returns when signalled
- */
- public void testAwait() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- c.await();
- lock.writeLock().unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.writeLock().lock();
- c.signal();
- lock.writeLock().unlock();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitUninterruptibly doesn't abort on interrupt
- */
- public void testAwaitUninterruptibly() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- lock.writeLock().lock();
- c.awaitUninterruptibly();
- lock.writeLock().unlock();
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- lock.writeLock().lock();
- c.signal();
- lock.writeLock().unlock();
- assert(t.isInterrupted());
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * await is interruptible
- */
- public void testAwait_Interrupt() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- c.await();
- lock.writeLock().unlock();
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitNanos is interruptible
- */
- public void testAwaitNanos_Interrupt() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- c.awaitNanos(SHORT_DELAY_MS * 2 * 1000000);
- lock.writeLock().unlock();
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * awaitUntil is interruptible
- */
- public void testAwaitUntil_Interrupt() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- java.util.Date d = new java.util.Date();
- c.awaitUntil(new java.util.Date(d.getTime() + 10000));
- lock.writeLock().unlock();
- threadShouldThrow();
- }
- catch(InterruptedException success) {
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * signalAll wakes up all threads
- */
- public void testSignalAll() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- c.await();
- lock.writeLock().unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- c.await();
- lock.writeLock().unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t1.start();
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.writeLock().lock();
- c.signalAll();
- lock.writeLock().unlock();
- t1.join(SHORT_DELAY_MS);
- t2.join(SHORT_DELAY_MS);
- assertFalse(t1.isAlive());
- assertFalse(t2.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * A serialized lock deserializes as unlocked
- */
- public void testSerialization() {
- ReentrantReadWriteLock l = new ReentrantReadWriteLock();
- l.readLock().lock();
- l.readLock().unlock();
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- ReentrantReadWriteLock r = (ReentrantReadWriteLock) in.readObject();
- r.readLock().lock();
- r.readLock().unlock();
- } catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
- /**
- * hasQueuedThreads reports whether there are waiting threads
- */
- public void testhasQueuedThreads() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertFalse(lock.hasQueuedThreads());
- lock.writeLock().lock();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.hasQueuedThreads());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.hasQueuedThreads());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.hasQueuedThreads());
- lock.writeLock().unlock();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(lock.hasQueuedThreads());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * hasQueuedThread(null) throws NPE
- */
- public void testHasQueuedThreadNPE() {
- final ReentrantReadWriteLock sync = new ReentrantReadWriteLock();
- try {
- sync.hasQueuedThread(null);
- shouldThrow();
- } catch (NullPointerException success) {
- }
- }
-
- /**
- * hasQueuedThread reports whether a thread is queued.
- */
- public void testHasQueuedThread() {
- final ReentrantReadWriteLock sync = new ReentrantReadWriteLock();
- Thread t1 = new Thread(new InterruptedLockRunnable(sync));
- Thread t2 = new Thread(new InterruptibleLockRunnable(sync));
- try {
- assertFalse(sync.hasQueuedThread(t1));
- assertFalse(sync.hasQueuedThread(t2));
- sync.writeLock().lock();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasQueuedThread(t1));
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(sync.hasQueuedThread(t1));
- assertTrue(sync.hasQueuedThread(t2));
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.hasQueuedThread(t1));
- assertTrue(sync.hasQueuedThread(t2));
- sync.writeLock().unlock();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.hasQueuedThread(t1));
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(sync.hasQueuedThread(t2));
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * getQueueLength reports number of waiting threads
- */
- public void testGetQueueLength() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertEquals(0, lock.getQueueLength());
- lock.writeLock().lock();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(2, lock.getQueueLength());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- lock.writeLock().unlock();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(0, lock.getQueueLength());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getQueuedThreads includes waiting threads
- */
- public void testGetQueuedThreads() {
- final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertTrue(lock.getQueuedThreads().isEmpty());
- lock.writeLock().lock();
- assertTrue(lock.getQueuedThreads().isEmpty());
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.getQueuedThreads().contains(t1));
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.getQueuedThreads().contains(t1));
- assertTrue(lock.getQueuedThreads().contains(t2));
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(lock.getQueuedThreads().contains(t1));
- assertTrue(lock.getQueuedThreads().contains(t2));
- lock.writeLock().unlock();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.getQueuedThreads().isEmpty());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * hasWaiters throws NPE if null
- */
- public void testHasWaitersNPE() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- try {
- lock.hasWaiters(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitQueueLength throws NPE if null
- */
- public void testGetWaitQueueLengthNPE() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- try {
- lock.getWaitQueueLength(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitingThreads throws NPE if null
- */
- public void testGetWaitingThreadsNPE() {
- final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
- try {
- lock.getWaitingThreads(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * hasWaiters throws IAE if not owned
- */
- public void testHasWaitersIAE() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = (lock.writeLock().newCondition());
- final ReentrantReadWriteLock lock2 = new ReentrantReadWriteLock();
- try {
- lock2.hasWaiters(c);
- shouldThrow();
- } catch (IllegalArgumentException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * hasWaiters throws IMSE if not locked
- */
- public void testHasWaitersIMSE() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = (lock.writeLock().newCondition());
- try {
- lock.hasWaiters(c);
- shouldThrow();
- } catch (IllegalMonitorStateException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitQueueLength throws IAE if not owned
- */
- public void testGetWaitQueueLengthIAE() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = (lock.writeLock().newCondition());
- final ReentrantReadWriteLock lock2 = new ReentrantReadWriteLock();
- try {
- lock2.getWaitQueueLength(c);
- shouldThrow();
- } catch (IllegalArgumentException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitQueueLength throws IMSE if not locked
- */
- public void testGetWaitQueueLengthIMSE() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = (lock.writeLock().newCondition());
- try {
- lock.getWaitQueueLength(c);
- shouldThrow();
- } catch (IllegalMonitorStateException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitingThreads throws IAE if not owned
- */
- public void testGetWaitingThreadsIAE() {
- final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
- final Condition c = (lock.writeLock().newCondition());
- final PublicReentrantReadWriteLock lock2 = new PublicReentrantReadWriteLock();
- try {
- lock2.getWaitingThreads(c);
- shouldThrow();
- } catch (IllegalArgumentException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitingThreads throws IMSE if not locked
- */
- public void testGetWaitingThreadsIMSE() {
- final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
- final Condition c = (lock.writeLock().newCondition());
- try {
- lock.getWaitingThreads(c);
- shouldThrow();
- } catch (IllegalMonitorStateException success) {
- } catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * hasWaiters returns true when a thread is waiting, else false
- */
- public void testHasWaiters() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = (lock.writeLock().newCondition());
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- threadAssertFalse(lock.hasWaiters(c));
- threadAssertEquals(0, lock.getWaitQueueLength(c));
- c.await();
- lock.writeLock().unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.writeLock().lock();
- assertTrue(lock.hasWaiters(c));
- assertEquals(1, lock.getWaitQueueLength(c));
- c.signal();
- lock.writeLock().unlock();
- Thread.sleep(SHORT_DELAY_MS);
- lock.writeLock().lock();
- assertFalse(lock.hasWaiters(c));
- assertEquals(0, lock.getWaitQueueLength(c));
- lock.writeLock().unlock();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * getWaitQueueLength returns number of waiting threads
- */
- public void testGetWaitQueueLength() {
- final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- final Condition c = (lock.writeLock().newCondition());
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- threadAssertFalse(lock.hasWaiters(c));
- threadAssertEquals(0, lock.getWaitQueueLength(c));
- c.await();
- lock.writeLock().unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.writeLock().lock();
- assertTrue(lock.hasWaiters(c));
- assertEquals(1, lock.getWaitQueueLength(c));
- c.signal();
- lock.writeLock().unlock();
- Thread.sleep(SHORT_DELAY_MS);
- lock.writeLock().lock();
- assertFalse(lock.hasWaiters(c));
- assertEquals(0, lock.getWaitQueueLength(c));
- lock.writeLock().unlock();
- t.join(SHORT_DELAY_MS);
- assertFalse(t.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * getWaitingThreads returns only and all waiting threads
- */
- public void testGetWaitingThreads() {
- final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
- final Condition c = lock.writeLock().newCondition();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- threadAssertTrue(lock.getWaitingThreads(c).isEmpty());
- c.await();
- lock.writeLock().unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- lock.writeLock().lock();
- threadAssertFalse(lock.getWaitingThreads(c).isEmpty());
- c.await();
- lock.writeLock().unlock();
- }
- catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- try {
- lock.writeLock().lock();
- assertTrue(lock.getWaitingThreads(c).isEmpty());
- lock.writeLock().unlock();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- lock.writeLock().lock();
- assertTrue(lock.hasWaiters(c));
- assertTrue(lock.getWaitingThreads(c).contains(t1));
- assertTrue(lock.getWaitingThreads(c).contains(t2));
- c.signalAll();
- lock.writeLock().unlock();
- Thread.sleep(SHORT_DELAY_MS);
- lock.writeLock().lock();
- assertFalse(lock.hasWaiters(c));
- assertTrue(lock.getWaitingThreads(c).isEmpty());
- lock.writeLock().unlock();
- t1.join(SHORT_DELAY_MS);
- t2.join(SHORT_DELAY_MS);
- assertFalse(t1.isAlive());
- assertFalse(t2.isAlive());
- }
- catch (Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * toString indicates current lock state
- */
- public void testToString() {
- ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- String us = lock.toString();
- assertTrue(us.indexOf("Write locks = 0") >= 0);
- assertTrue(us.indexOf("Read locks = 0") >= 0);
- lock.writeLock().lock();
- String ws = lock.toString();
- assertTrue(ws.indexOf("Write locks = 1") >= 0);
- assertTrue(ws.indexOf("Read locks = 0") >= 0);
- lock.writeLock().unlock();
- lock.readLock().lock();
- lock.readLock().lock();
- String rs = lock.toString();
- assertTrue(rs.indexOf("Write locks = 0") >= 0);
- assertTrue(rs.indexOf("Read locks = 2") >= 0);
- }
-
- /**
- * readLock.toString indicates current lock state
- */
- public void testReadLockToString() {
- ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- String us = lock.readLock().toString();
- assertTrue(us.indexOf("Read locks = 0") >= 0);
- lock.readLock().lock();
- lock.readLock().lock();
- String rs = lock.readLock().toString();
- assertTrue(rs.indexOf("Read locks = 2") >= 0);
- }
-
- /**
- * writeLock.toString indicates current lock state
- */
- public void testWriteLockToString() {
- ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- String us = lock.writeLock().toString();
- assertTrue(us.indexOf("Unlocked") >= 0);
- lock.writeLock().lock();
- String ls = lock.writeLock().toString();
- assertTrue(ls.indexOf("Locked") >= 0);
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ScheduledExecutorTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ScheduledExecutorTest.java
deleted file mode 100755
index da5704e..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ScheduledExecutorTest.java
+++ /dev/null
@@ -1,1149 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.concurrent.atomic.*;
-
-public class ScheduledExecutorTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(ScheduledExecutorTest.class);
- }
-
-
- /**
- * execute successfully executes a runnable
- */
- public void testExecute() {
- try {
- TrackedShortRunnable runnable =new TrackedShortRunnable();
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- p1.execute(runnable);
- assertFalse(runnable.done);
- Thread.sleep(SHORT_DELAY_MS);
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- } catch(InterruptedException e){
- unexpectedException();
- }
- assertTrue(runnable.done);
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- joinPool(p1);
- }
- catch(Exception e){
- unexpectedException();
- }
-
- }
-
-
- /**
- * delayed schedule of callable successfully executes after delay
- */
- public void testSchedule1() {
- try {
- TrackedCallable callable = new TrackedCallable();
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- Future f = p1.schedule(callable, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- assertFalse(callable.done);
- Thread.sleep(MEDIUM_DELAY_MS);
- assertTrue(callable.done);
- assertEquals(Boolean.TRUE, f.get());
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- joinPool(p1);
- } catch(RejectedExecutionException e){}
- catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
- /**
- * delayed schedule of runnable successfully executes after delay
- */
- public void testSchedule3() {
- try {
- TrackedShortRunnable runnable = new TrackedShortRunnable();
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- p1.schedule(runnable, SMALL_DELAY_MS, TimeUnit.MILLISECONDS);
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(runnable.done);
- Thread.sleep(MEDIUM_DELAY_MS);
- assertTrue(runnable.done);
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- joinPool(p1);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * scheduleAtFixedRate executes runnable after given initial delay
- */
- public void testSchedule4() {
- try {
- TrackedShortRunnable runnable = new TrackedShortRunnable();
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- ScheduledFuture h = p1.scheduleAtFixedRate(runnable, SHORT_DELAY_MS, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- assertFalse(runnable.done);
- Thread.sleep(MEDIUM_DELAY_MS);
- assertTrue(runnable.done);
- h.cancel(true);
- joinPool(p1);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- static class RunnableCounter implements Runnable {
- AtomicInteger count = new AtomicInteger(0);
- public void run() { count.getAndIncrement(); }
- }
-
- /**
- * scheduleWithFixedDelay executes runnable after given initial delay
- */
- public void testSchedule5() {
- try {
- TrackedShortRunnable runnable = new TrackedShortRunnable();
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- ScheduledFuture h = p1.scheduleWithFixedDelay(runnable, SHORT_DELAY_MS, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- assertFalse(runnable.done);
- Thread.sleep(MEDIUM_DELAY_MS);
- assertTrue(runnable.done);
- h.cancel(true);
- joinPool(p1);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * scheduleAtFixedRate executes series of tasks at given rate
- */
- public void testFixedRateSequence() {
- try {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- RunnableCounter counter = new RunnableCounter();
- ScheduledFuture h =
- p1.scheduleAtFixedRate(counter, 0, 1, TimeUnit.MILLISECONDS);
- Thread.sleep(SMALL_DELAY_MS);
- h.cancel(true);
- int c = counter.count.get();
- // By time scaling conventions, we must have at least
- // an execution per SHORT delay, but no more than one SHORT more
- assertTrue(c >= SMALL_DELAY_MS / SHORT_DELAY_MS);
- assertTrue(c <= SMALL_DELAY_MS + SHORT_DELAY_MS);
- joinPool(p1);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * scheduleWithFixedDelay executes series of tasks with given period
- */
- public void testFixedDelaySequence() {
- try {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- RunnableCounter counter = new RunnableCounter();
- ScheduledFuture h =
- p1.scheduleWithFixedDelay(counter, 0, 1, TimeUnit.MILLISECONDS);
- Thread.sleep(SMALL_DELAY_MS);
- h.cancel(true);
- int c = counter.count.get();
- assertTrue(c >= SMALL_DELAY_MS / SHORT_DELAY_MS);
- assertTrue(c <= SMALL_DELAY_MS + SHORT_DELAY_MS);
- joinPool(p1);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * execute (null) throws NPE
- */
- public void testExecuteNull() {
- ScheduledThreadPoolExecutor se = null;
- try {
- se = new ScheduledThreadPoolExecutor(1);
- se.execute(null);
- shouldThrow();
- } catch(NullPointerException success){}
- catch(Exception e){
- unexpectedException();
- }
-
- joinPool(se);
- }
-
- /**
- * schedule (null) throws NPE
- */
- public void testScheduleNull() {
- ScheduledThreadPoolExecutor se = new ScheduledThreadPoolExecutor(1);
- try {
- TrackedCallable callable = null;
- Future f = se.schedule(callable, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- shouldThrow();
- } catch(NullPointerException success){}
- catch(Exception e){
- unexpectedException();
- }
- joinPool(se);
- }
-
- /**
- * execute throws RejectedExecutionException if shutdown
- */
- public void testSchedule1_RejectedExecutionException() {
- ScheduledThreadPoolExecutor se = new ScheduledThreadPoolExecutor(1);
- try {
- se.shutdown();
- se.schedule(new NoOpRunnable(),
- MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- shouldThrow();
- } catch(RejectedExecutionException success){
- } catch (SecurityException ok) {
- }
-
- joinPool(se);
-
- }
-
- /**
- * schedule throws RejectedExecutionException if shutdown
- */
- public void testSchedule2_RejectedExecutionException() {
- ScheduledThreadPoolExecutor se = new ScheduledThreadPoolExecutor(1);
- try {
- se.shutdown();
- se.schedule(new NoOpCallable(),
- MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- shouldThrow();
- } catch(RejectedExecutionException success){
- } catch (SecurityException ok) {
- }
- joinPool(se);
- }
-
- /**
- * schedule callable throws RejectedExecutionException if shutdown
- */
- public void testSchedule3_RejectedExecutionException() {
- ScheduledThreadPoolExecutor se = new ScheduledThreadPoolExecutor(1);
- try {
- se.shutdown();
- se.schedule(new NoOpCallable(),
- MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- shouldThrow();
- } catch(RejectedExecutionException success){
- } catch (SecurityException ok) {
- }
- joinPool(se);
- }
-
- /**
- * scheduleAtFixedRate throws RejectedExecutionException if shutdown
- */
- public void testScheduleAtFixedRate1_RejectedExecutionException() {
- ScheduledThreadPoolExecutor se = new ScheduledThreadPoolExecutor(1);
- try {
- se.shutdown();
- se.scheduleAtFixedRate(new NoOpRunnable(),
- MEDIUM_DELAY_MS, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- shouldThrow();
- } catch(RejectedExecutionException success){
- } catch (SecurityException ok) {
- }
- joinPool(se);
- }
-
- /**
- * scheduleWithFixedDelay throws RejectedExecutionException if shutdown
- */
- public void testScheduleWithFixedDelay1_RejectedExecutionException() {
- ScheduledThreadPoolExecutor se = new ScheduledThreadPoolExecutor(1);
- try {
- se.shutdown();
- se.scheduleWithFixedDelay(new NoOpRunnable(),
- MEDIUM_DELAY_MS, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- shouldThrow();
- } catch(RejectedExecutionException success){
- } catch (SecurityException ok) {
- }
- joinPool(se);
- }
-
- /**
- * getActiveCount increases but doesn't overestimate, when a
- * thread becomes active
- */
- public void testGetActiveCount() {
- ScheduledThreadPoolExecutor p2 = new ScheduledThreadPoolExecutor(2);
- assertEquals(0, p2.getActiveCount());
- p2.execute(new SmallRunnable());
- try {
- Thread.sleep(SHORT_DELAY_MS);
- } catch(Exception e){
- unexpectedException();
- }
- assertEquals(1, p2.getActiveCount());
- joinPool(p2);
- }
-
- /**
- * getCompletedTaskCount increases, but doesn't overestimate,
- * when tasks complete
- */
- public void testGetCompletedTaskCount() {
- ScheduledThreadPoolExecutor p2 = new ScheduledThreadPoolExecutor(2);
- assertEquals(0, p2.getCompletedTaskCount());
- p2.execute(new SmallRunnable());
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- } catch(Exception e){
- unexpectedException();
- }
- assertEquals(1, p2.getCompletedTaskCount());
- joinPool(p2);
- }
-
- /**
- * getCorePoolSize returns size given in constructor if not otherwise set
- */
- public void testGetCorePoolSize() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- assertEquals(1, p1.getCorePoolSize());
- joinPool(p1);
- }
-
- /**
- * getLargestPoolSize increases, but doesn't overestimate, when
- * multiple threads active
- */
- public void testGetLargestPoolSize() {
- ScheduledThreadPoolExecutor p2 = new ScheduledThreadPoolExecutor(2);
- assertEquals(0, p2.getLargestPoolSize());
- p2.execute(new SmallRunnable());
- p2.execute(new SmallRunnable());
- try {
- Thread.sleep(SHORT_DELAY_MS);
- } catch(Exception e){
- unexpectedException();
- }
- assertEquals(2, p2.getLargestPoolSize());
- joinPool(p2);
- }
-
- /**
- * getPoolSize increases, but doesn't overestimate, when threads
- * become active
- */
- public void testGetPoolSize() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- assertEquals(0, p1.getPoolSize());
- p1.execute(new SmallRunnable());
- assertEquals(1, p1.getPoolSize());
- joinPool(p1);
- }
-
- /**
- * getTaskCount increases, but doesn't overestimate, when tasks
- * submitted
- */
- public void testGetTaskCount() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- assertEquals(0, p1.getTaskCount());
- for(int i = 0; i < 5; i++)
- p1.execute(new SmallRunnable());
- try {
- Thread.sleep(SHORT_DELAY_MS);
- } catch(Exception e){
- unexpectedException();
- }
- assertEquals(5, p1.getTaskCount());
- joinPool(p1);
- }
-
- /**
- * getThreadFactory returns factory in constructor if not set
- */
- public void testGetThreadFactory() {
- ThreadFactory tf = new SimpleThreadFactory();
- ScheduledThreadPoolExecutor p = new ScheduledThreadPoolExecutor(1, tf);
- assertSame(tf, p.getThreadFactory());
- joinPool(p);
- }
-
- /**
- * setThreadFactory sets the thread factory returned by getThreadFactory
- */
- public void testSetThreadFactory() {
- ThreadFactory tf = new SimpleThreadFactory();
- ScheduledThreadPoolExecutor p = new ScheduledThreadPoolExecutor(1);
- p.setThreadFactory(tf);
- assertSame(tf, p.getThreadFactory());
- joinPool(p);
- }
-
- /**
- * setThreadFactory(null) throws NPE
- */
- public void testSetThreadFactoryNull() {
- ScheduledThreadPoolExecutor p = new ScheduledThreadPoolExecutor(1);
- try {
- p.setThreadFactory(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } finally {
- joinPool(p);
- }
- }
-
- /**
- * is isShutDown is false before shutdown, true after
- */
- public void testIsShutdown() {
-
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- try {
- assertFalse(p1.isShutdown());
- }
- finally {
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- }
- assertTrue(p1.isShutdown());
- }
-
-
- /**
- * isTerminated is false before termination, true after
- */
- public void testIsTerminated() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- try {
- p1.execute(new SmallRunnable());
- } finally {
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- }
- try {
- assertTrue(p1.awaitTermination(LONG_DELAY_MS, TimeUnit.MILLISECONDS));
- assertTrue(p1.isTerminated());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * isTerminating is not true when running or when terminated
- */
- public void testIsTerminating() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- assertFalse(p1.isTerminating());
- try {
- p1.execute(new SmallRunnable());
- assertFalse(p1.isTerminating());
- } finally {
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- }
- try {
- assertTrue(p1.awaitTermination(LONG_DELAY_MS, TimeUnit.MILLISECONDS));
- assertTrue(p1.isTerminated());
- assertFalse(p1.isTerminating());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getQueue returns the work queue, which contains queued tasks
- */
- public void testGetQueue() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- ScheduledFuture[] tasks = new ScheduledFuture[5];
- for(int i = 0; i < 5; i++){
- tasks[i] = p1.schedule(new SmallPossiblyInterruptedRunnable(), 1, TimeUnit.MILLISECONDS);
- }
- try {
- Thread.sleep(SHORT_DELAY_MS);
- BlockingQueue<Runnable> q = p1.getQueue();
- assertTrue(q.contains(tasks[4]));
- assertFalse(q.contains(tasks[0]));
- } catch(Exception e) {
- unexpectedException();
- } finally {
- joinPool(p1);
- }
- }
-
- /**
- * remove(task) removes queued task, and fails to remove active task
- */
- public void testRemove() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- ScheduledFuture[] tasks = new ScheduledFuture[5];
- for(int i = 0; i < 5; i++){
- tasks[i] = p1.schedule(new SmallPossiblyInterruptedRunnable(), 1, TimeUnit.MILLISECONDS);
- }
- try {
- Thread.sleep(SHORT_DELAY_MS);
- BlockingQueue<Runnable> q = p1.getQueue();
- assertFalse(p1.remove((Runnable)tasks[0]));
- assertTrue(q.contains((Runnable)tasks[4]));
- assertTrue(q.contains((Runnable)tasks[3]));
- assertTrue(p1.remove((Runnable)tasks[4]));
- assertFalse(p1.remove((Runnable)tasks[4]));
- assertFalse(q.contains((Runnable)tasks[4]));
- assertTrue(q.contains((Runnable)tasks[3]));
- assertTrue(p1.remove((Runnable)tasks[3]));
- assertFalse(q.contains((Runnable)tasks[3]));
- } catch(Exception e) {
- unexpectedException();
- } finally {
- joinPool(p1);
- }
- }
-
- /**
- * purge removes cancelled tasks from the queue
- */
- public void testPurge() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- ScheduledFuture[] tasks = new ScheduledFuture[5];
- for(int i = 0; i < 5; i++){
- tasks[i] = p1.schedule(new SmallPossiblyInterruptedRunnable(), SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- }
- try {
- int max = 5;
- if (tasks[4].cancel(true)) --max;
- if (tasks[3].cancel(true)) --max;
- // There must eventually be an interference-free point at
- // which purge will not fail. (At worst, when queue is empty.)
- int k;
- for (k = 0; k < SMALL_DELAY_MS; ++k) {
- p1.purge();
- long count = p1.getTaskCount();
- if (count >= 0 && count <= max)
- break;
- Thread.sleep(1);
- }
- assertTrue(k < SMALL_DELAY_MS);
- } catch(Exception e) {
- unexpectedException();
- } finally {
- joinPool(p1);
- }
- }
-
- /**
- * shutDownNow returns a list containing tasks that were not run
- */
- public void testShutDownNow() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- for(int i = 0; i < 5; i++)
- p1.schedule(new SmallPossiblyInterruptedRunnable(), SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- List l;
- try {
- l = p1.shutdownNow();
- } catch (SecurityException ok) {
- return;
- }
- assertTrue(p1.isShutdown());
- assertTrue(l.size() > 0 && l.size() <= 5);
- joinPool(p1);
- }
-
- /**
- * In default setting, shutdown cancels periodic but not delayed
- * tasks at shutdown
- */
- public void testShutDown1() {
- try {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- assertTrue(p1.getExecuteExistingDelayedTasksAfterShutdownPolicy());
- assertFalse(p1.getContinueExistingPeriodicTasksAfterShutdownPolicy());
-
- ScheduledFuture[] tasks = new ScheduledFuture[5];
- for(int i = 0; i < 5; i++)
- tasks[i] = p1.schedule(new NoOpRunnable(), SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- BlockingQueue q = p1.getQueue();
- for (Iterator it = q.iterator(); it.hasNext();) {
- ScheduledFuture t = (ScheduledFuture)it.next();
- assertFalse(t.isCancelled());
- }
- assertTrue(p1.isShutdown());
- Thread.sleep(SMALL_DELAY_MS);
- for (int i = 0; i < 5; ++i) {
- assertTrue(tasks[i].isDone());
- assertFalse(tasks[i].isCancelled());
- }
-
- }
- catch(Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * If setExecuteExistingDelayedTasksAfterShutdownPolicy is false,
- * delayed tasks are cancelled at shutdown
- */
- public void testShutDown2() {
- try {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- p1.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
- ScheduledFuture[] tasks = new ScheduledFuture[5];
- for(int i = 0; i < 5; i++)
- tasks[i] = p1.schedule(new NoOpRunnable(), SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- assertTrue(p1.isShutdown());
- BlockingQueue q = p1.getQueue();
- assertTrue(q.isEmpty());
- Thread.sleep(SMALL_DELAY_MS);
- assertTrue(p1.isTerminated());
- }
- catch(Exception ex) {
- unexpectedException();
- }
- }
-
-
- /**
- * If setContinueExistingPeriodicTasksAfterShutdownPolicy is set false,
- * periodic tasks are not cancelled at shutdown
- */
- public void testShutDown3() {
- try {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- p1.setContinueExistingPeriodicTasksAfterShutdownPolicy(false);
- ScheduledFuture task =
- p1.scheduleAtFixedRate(new NoOpRunnable(), 5, 5, TimeUnit.MILLISECONDS);
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- assertTrue(p1.isShutdown());
- BlockingQueue q = p1.getQueue();
- assertTrue(q.isEmpty());
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(p1.isTerminated());
- }
- catch(Exception ex) {
- unexpectedException();
- }
- }
-
- /**
- * if setContinueExistingPeriodicTasksAfterShutdownPolicy is true,
- * periodic tasks are cancelled at shutdown
- */
- public void testShutDown4() {
- ScheduledThreadPoolExecutor p1 = new ScheduledThreadPoolExecutor(1);
- try {
- p1.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);
- ScheduledFuture task =
- p1.scheduleAtFixedRate(new NoOpRunnable(), 1, 1, TimeUnit.MILLISECONDS);
- assertFalse(task.isCancelled());
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- assertFalse(task.isCancelled());
- assertFalse(p1.isTerminated());
- assertTrue(p1.isShutdown());
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(task.isCancelled());
- assertTrue(task.cancel(true));
- assertTrue(task.isDone());
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(p1.isTerminated());
- }
- catch(Exception ex) {
- unexpectedException();
- }
- finally {
- joinPool(p1);
- }
- }
-
- /**
- * completed submit of callable returns result
- */
- public void testSubmitCallable() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- Future<String> future = e.submit(new StringTask());
- String result = future.get();
- assertSame(TEST_STRING, result);
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * completed submit of runnable returns successfully
- */
- public void testSubmitRunnable() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- Future<?> future = e.submit(new NoOpRunnable());
- future.get();
- assertTrue(future.isDone());
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * completed submit of (runnable, result) returns result
- */
- public void testSubmitRunnable2() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- Future<String> future = e.submit(new NoOpRunnable(), TEST_STRING);
- String result = future.get();
- assertSame(TEST_STRING, result);
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(null) throws NPE
- */
- public void testInvokeAny1() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- e.invokeAny(null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(empty collection) throws IAE
- */
- public void testInvokeAny2() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- e.invokeAny(new ArrayList<Callable<String>>());
- } catch (IllegalArgumentException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(c) throws NPE if c has null elements
- */
- public void testInvokeAny3() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAny(l);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(c) throws ExecutionException if no task completes
- */
- public void testInvokeAny4() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- e.invokeAny(l);
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(c) returns result of some task
- */
- public void testInvokeAny5() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- String result = e.invokeAny(l);
- assertSame(TEST_STRING, result);
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(null) throws NPE
- */
- public void testInvokeAll1() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- e.invokeAll(null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(empty collection) returns empty collection
- */
- public void testInvokeAll2() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>());
- assertTrue(r.isEmpty());
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(c) throws NPE if c has null elements
- */
- public void testInvokeAll3() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAll(l);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * get of invokeAll(c) throws exception on failed task
- */
- public void testInvokeAll4() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- List<Future<String>> result = e.invokeAll(l);
- assertEquals(1, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- it.next().get();
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(c) returns results of all completed tasks
- */
- public void testInvokeAll5() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- List<Future<String>> result = e.invokeAll(l);
- assertEquals(2, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- assertSame(TEST_STRING, it.next().get());
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(null) throws NPE
- */
- public void testTimedInvokeAny1() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- e.invokeAny(null, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(,,null) throws NPE
- */
- public void testTimedInvokeAnyNullTimeUnit() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- e.invokeAny(l, MEDIUM_DELAY_MS, null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(empty collection) throws IAE
- */
- public void testTimedInvokeAny2() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- e.invokeAny(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (IllegalArgumentException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(c) throws NPE if c has null elements
- */
- public void testTimedInvokeAny3() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- ex.printStackTrace();
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(c) throws ExecutionException if no task completes
- */
- public void testTimedInvokeAny4() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(c) returns result of some task
- */
- public void testTimedInvokeAny5() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- String result = e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertSame(TEST_STRING, result);
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(null) throws NPE
- */
- public void testTimedInvokeAll1() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- e.invokeAll(null, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(,,null) throws NPE
- */
- public void testTimedInvokeAllNullTimeUnit() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- e.invokeAll(l, MEDIUM_DELAY_MS, null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(empty collection) returns empty collection
- */
- public void testTimedInvokeAll2() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertTrue(r.isEmpty());
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(c) throws NPE if c has null elements
- */
- public void testTimedInvokeAll3() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * get of element of invokeAll(c) throws exception on failed task
- */
- public void testTimedInvokeAll4() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- List<Future<String>> result = e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertEquals(1, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- it.next().get();
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(c) returns results of all completed tasks
- */
- public void testTimedInvokeAll5() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- List<Future<String>> result = e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertEquals(2, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- assertSame(TEST_STRING, it.next().get());
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(c) cancels tasks not completed by timeout
- */
- public void testTimedInvokeAll6() {
- ExecutorService e = new ScheduledThreadPoolExecutor(2);
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(Executors.callable(new MediumPossiblyInterruptedRunnable(), TEST_STRING));
- l.add(new StringTask());
- List<Future<String>> result = e.invokeAll(l, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- assertEquals(3, result.size());
- Iterator<Future<String>> it = result.iterator();
- Future<String> f1 = it.next();
- Future<String> f2 = it.next();
- Future<String> f3 = it.next();
- assertTrue(f1.isDone());
- assertTrue(f2.isDone());
- assertTrue(f3.isDone());
- assertFalse(f1.isCancelled());
- assertTrue(f2.isCancelled());
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/SemaphoreTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/SemaphoreTest.java
deleted file mode 100755
index 4019812..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/SemaphoreTest.java
+++ /dev/null
@@ -1,919 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class SemaphoreTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(SemaphoreTest.class);
- }
-
- /**
- * Subclass to expose protected methods
- */
- static class PublicSemaphore extends Semaphore {
- PublicSemaphore(int p, boolean f) { super(p, f); }
- public Collection<Thread> getQueuedThreads() {
- return super.getQueuedThreads();
- }
- public void reducePermits(int p) {
- super.reducePermits(p);
- }
- }
-
- /**
- * A runnable calling acquire
- */
- class InterruptibleLockRunnable implements Runnable {
- final Semaphore lock;
- InterruptibleLockRunnable(Semaphore l) { lock = l; }
- public void run() {
- try {
- lock.acquire();
- } catch(InterruptedException success){}
- }
- }
-
-
- /**
- * A runnable calling acquire that expects to be
- * interrupted
- */
- class InterruptedLockRunnable implements Runnable {
- final Semaphore lock;
- InterruptedLockRunnable(Semaphore l) { lock = l; }
- public void run() {
- try {
- lock.acquire();
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- }
-
- /**
- * Zero, negative, and positive initial values are allowed in constructor
- */
- public void testConstructor() {
- Semaphore s0 = new Semaphore(0, false);
- assertEquals(0, s0.availablePermits());
- assertFalse(s0.isFair());
- Semaphore s1 = new Semaphore(-1, false);
- assertEquals(-1, s1.availablePermits());
- assertFalse(s1.isFair());
- Semaphore s2 = new Semaphore(-1, false);
- assertEquals(-1, s2.availablePermits());
- assertFalse(s2.isFair());
- }
-
- /**
- * Constructor without fairness argument behaves as nonfair
- */
- public void testConstructor2() {
- Semaphore s0 = new Semaphore(0);
- assertEquals(0, s0.availablePermits());
- assertFalse(s0.isFair());
- Semaphore s1 = new Semaphore(-1);
- assertEquals(-1, s1.availablePermits());
- assertFalse(s1.isFair());
- Semaphore s2 = new Semaphore(-1);
- assertEquals(-1, s2.availablePermits());
- assertFalse(s2.isFair());
- }
-
- /**
- * tryAcquire succeeds when sufficient permits, else fails
- */
- public void testTryAcquireInSameThread() {
- Semaphore s = new Semaphore(2, false);
- assertEquals(2, s.availablePermits());
- assertTrue(s.tryAcquire());
- assertTrue(s.tryAcquire());
- assertEquals(0, s.availablePermits());
- assertFalse(s.tryAcquire());
- }
-
- /**
- * Acquire and release of semaphore succeed if initially available
- */
- public void testAcquireReleaseInSameThread() {
- Semaphore s = new Semaphore(1, false);
- try {
- s.acquire();
- s.release();
- s.acquire();
- s.release();
- s.acquire();
- s.release();
- s.acquire();
- s.release();
- s.acquire();
- s.release();
- assertEquals(1, s.availablePermits());
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * Uninterruptible acquire and release of semaphore succeed if
- * initially available
- */
- public void testAcquireUninterruptiblyReleaseInSameThread() {
- Semaphore s = new Semaphore(1, false);
- try {
- s.acquireUninterruptibly();
- s.release();
- s.acquireUninterruptibly();
- s.release();
- s.acquireUninterruptibly();
- s.release();
- s.acquireUninterruptibly();
- s.release();
- s.acquireUninterruptibly();
- s.release();
- assertEquals(1, s.availablePermits());
- } finally {
- }
- }
-
- /**
- * Timed Acquire and release of semaphore succeed if
- * initially available
- */
- public void testTimedAcquireReleaseInSameThread() {
- Semaphore s = new Semaphore(1, false);
- try {
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertEquals(1, s.availablePermits());
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A release in one thread enables an acquire in another thread
- */
- public void testAcquireReleaseInDifferentThreads() {
- final Semaphore s = new Semaphore(0, false);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.acquire();
- s.release();
- s.release();
- s.acquire();
- } catch(InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- s.release();
- s.release();
- s.acquire();
- s.acquire();
- s.release();
- t.join();
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A release in one thread enables an uninterruptible acquire in another thread
- */
- public void testUninterruptibleAcquireReleaseInDifferentThreads() {
- final Semaphore s = new Semaphore(0, false);
- Thread t = new Thread(new Runnable() {
- public void run() {
- s.acquireUninterruptibly();
- s.release();
- s.release();
- s.acquireUninterruptibly();
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- s.release();
- s.release();
- s.acquireUninterruptibly();
- s.acquireUninterruptibly();
- s.release();
- t.join();
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
-
- /**
- * A release in one thread enables a timed acquire in another thread
- */
- public void testTimedAcquireReleaseInDifferentThreads() {
- final Semaphore s = new Semaphore(1, false);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.release();
- threadAssertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- threadAssertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
-
- } catch(InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- s.release();
- t.join();
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A waiting acquire blocks interruptibly
- */
- public void testAcquire_InterruptedException() {
- final Semaphore s = new Semaphore(0, false);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.acquire();
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A waiting timed acquire blocks interruptibly
- */
- public void testTryAcquire_InterruptedException() {
- final Semaphore s = new Semaphore(0, false);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.tryAcquire(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(InterruptedException success){
- }
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * hasQueuedThreads reports whether there are waiting threads
- */
- public void testHasQueuedThreads() {
- final Semaphore lock = new Semaphore(1, false);
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertFalse(lock.hasQueuedThreads());
- lock.acquireUninterruptibly();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.hasQueuedThreads());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.hasQueuedThreads());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.hasQueuedThreads());
- lock.release();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(lock.hasQueuedThreads());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getQueueLength reports number of waiting threads
- */
- public void testGetQueueLength() {
- final Semaphore lock = new Semaphore(1, false);
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertEquals(0, lock.getQueueLength());
- lock.acquireUninterruptibly();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(2, lock.getQueueLength());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- lock.release();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(0, lock.getQueueLength());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getQueuedThreads includes waiting threads
- */
- public void testGetQueuedThreads() {
- final PublicSemaphore lock = new PublicSemaphore(1, false);
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertTrue(lock.getQueuedThreads().isEmpty());
- lock.acquireUninterruptibly();
- assertTrue(lock.getQueuedThreads().isEmpty());
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.getQueuedThreads().contains(t1));
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.getQueuedThreads().contains(t1));
- assertTrue(lock.getQueuedThreads().contains(t2));
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(lock.getQueuedThreads().contains(t1));
- assertTrue(lock.getQueuedThreads().contains(t2));
- lock.release();
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(lock.getQueuedThreads().isEmpty());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainPermits reports and removes given number of permits
- */
- public void testDrainPermits() {
- Semaphore s = new Semaphore(0, false);
- assertEquals(0, s.availablePermits());
- assertEquals(0, s.drainPermits());
- s.release(10);
- assertEquals(10, s.availablePermits());
- assertEquals(10, s.drainPermits());
- assertEquals(0, s.availablePermits());
- assertEquals(0, s.drainPermits());
- }
-
- /**
- * reducePermits reduces number of permits
- */
- public void testReducePermits() {
- PublicSemaphore s = new PublicSemaphore(10, false);
- assertEquals(10, s.availablePermits());
- s.reducePermits(1);
- assertEquals(9, s.availablePermits());
- s.reducePermits(10);
- assertEquals(-1, s.availablePermits());
- }
-
- /**
- * a deserialized serialized semaphore has same number of permits
- */
- public void testSerialization() {
- Semaphore l = new Semaphore(3, false);
- try {
- l.acquire();
- l.release();
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- Semaphore r = (Semaphore) in.readObject();
- assertEquals(3, r.availablePermits());
- assertFalse(r.isFair());
- r.acquire();
- r.release();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * Zero, negative, and positive initial values are allowed in constructor
- */
- public void testConstructor_fair() {
- Semaphore s0 = new Semaphore(0, true);
- assertEquals(0, s0.availablePermits());
- assertTrue(s0.isFair());
- Semaphore s1 = new Semaphore(-1, true);
- assertEquals(-1, s1.availablePermits());
- Semaphore s2 = new Semaphore(-1, true);
- assertEquals(-1, s2.availablePermits());
- }
-
- /**
- * tryAcquire succeeds when sufficient permits, else fails
- */
- public void testTryAcquireInSameThread_fair() {
- Semaphore s = new Semaphore(2, true);
- assertEquals(2, s.availablePermits());
- assertTrue(s.tryAcquire());
- assertTrue(s.tryAcquire());
- assertEquals(0, s.availablePermits());
- assertFalse(s.tryAcquire());
- }
-
- /**
- * tryAcquire(n) succeeds when sufficient permits, else fails
- */
- public void testTryAcquireNInSameThread_fair() {
- Semaphore s = new Semaphore(2, true);
- assertEquals(2, s.availablePermits());
- assertTrue(s.tryAcquire(2));
- assertEquals(0, s.availablePermits());
- assertFalse(s.tryAcquire());
- }
-
- /**
- * Acquire and release of semaphore succeed if initially available
- */
- public void testAcquireReleaseInSameThread_fair() {
- Semaphore s = new Semaphore(1, true);
- try {
- s.acquire();
- s.release();
- s.acquire();
- s.release();
- s.acquire();
- s.release();
- s.acquire();
- s.release();
- s.acquire();
- s.release();
- assertEquals(1, s.availablePermits());
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * Acquire(n) and release(n) of semaphore succeed if initially available
- */
- public void testAcquireReleaseNInSameThread_fair() {
- Semaphore s = new Semaphore(1, true);
- try {
- s.release(1);
- s.acquire(1);
- s.release(2);
- s.acquire(2);
- s.release(3);
- s.acquire(3);
- s.release(4);
- s.acquire(4);
- s.release(5);
- s.acquire(5);
- assertEquals(1, s.availablePermits());
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * Acquire(n) and release(n) of semaphore succeed if initially available
- */
- public void testAcquireUninterruptiblyReleaseNInSameThread_fair() {
- Semaphore s = new Semaphore(1, true);
- try {
- s.release(1);
- s.acquireUninterruptibly(1);
- s.release(2);
- s.acquireUninterruptibly(2);
- s.release(3);
- s.acquireUninterruptibly(3);
- s.release(4);
- s.acquireUninterruptibly(4);
- s.release(5);
- s.acquireUninterruptibly(5);
- assertEquals(1, s.availablePermits());
- } finally {
- }
- }
-
- /**
- * release(n) in one thread enables timed acquire(n) in another thread
- */
- public void testTimedAcquireReleaseNInSameThread_fair() {
- Semaphore s = new Semaphore(1, true);
- try {
- s.release(1);
- assertTrue(s.tryAcquire(1, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release(2);
- assertTrue(s.tryAcquire(2, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release(3);
- assertTrue(s.tryAcquire(3, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release(4);
- assertTrue(s.tryAcquire(4, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release(5);
- assertTrue(s.tryAcquire(5, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- assertEquals(1, s.availablePermits());
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * release in one thread enables timed acquire in another thread
- */
- public void testTimedAcquireReleaseInSameThread_fair() {
- Semaphore s = new Semaphore(1, true);
- try {
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release();
- assertEquals(1, s.availablePermits());
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A release in one thread enables an acquire in another thread
- */
- public void testAcquireReleaseInDifferentThreads_fair() {
- final Semaphore s = new Semaphore(0, true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.acquire();
- s.acquire();
- s.acquire();
- s.acquire();
- } catch(InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- s.release();
- s.release();
- s.release();
- s.release();
- s.release();
- s.release();
- t.join();
- assertEquals(2, s.availablePermits());
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * release(n) in one thread enables acquire(n) in another thread
- */
- public void testAcquireReleaseNInDifferentThreads_fair() {
- final Semaphore s = new Semaphore(0, true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.acquire();
- s.release(2);
- s.acquire();
- } catch(InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- s.release(2);
- s.acquire(2);
- s.release(1);
- t.join();
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * release(n) in one thread enables acquire(n) in another thread
- */
- public void testAcquireReleaseNInDifferentThreads_fair2() {
- final Semaphore s = new Semaphore(0, true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.acquire(2);
- s.acquire(2);
- s.release(4);
- } catch(InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- s.release(6);
- s.acquire(2);
- s.acquire(2);
- s.release(2);
- t.join();
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
-
-
-
-
- /**
- * release in one thread enables timed acquire in another thread
- */
- public void testTimedAcquireReleaseInDifferentThreads_fair() {
- final Semaphore s = new Semaphore(1, true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(s.tryAcquire(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
-
- } catch(InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- t.start();
- try {
- s.release();
- s.release();
- s.release();
- s.release();
- s.release();
- t.join();
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * release(n) in one thread enables timed acquire(n) in another thread
- */
- public void testTimedAcquireReleaseNInDifferentThreads_fair() {
- final Semaphore s = new Semaphore(2, true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertTrue(s.tryAcquire(2, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release(2);
- threadAssertTrue(s.tryAcquire(2, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release(2);
- } catch(InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- t.start();
- try {
- assertTrue(s.tryAcquire(2, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release(2);
- assertTrue(s.tryAcquire(2, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- s.release(2);
- t.join();
- } catch( InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A waiting acquire blocks interruptibly
- */
- public void testAcquire_InterruptedException_fair() {
- final Semaphore s = new Semaphore(0, true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.acquire();
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A waiting acquire(n) blocks interruptibly
- */
- public void testAcquireN_InterruptedException_fair() {
- final Semaphore s = new Semaphore(2, true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.acquire(3);
- threadShouldThrow();
- } catch(InterruptedException success){}
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A waiting tryAcquire blocks interruptibly
- */
- public void testTryAcquire_InterruptedException_fair() {
- final Semaphore s = new Semaphore(0, true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.tryAcquire(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(InterruptedException success){
- }
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * A waiting tryAcquire(n) blocks interruptibly
- */
- public void testTryAcquireN_InterruptedException_fair() {
- final Semaphore s = new Semaphore(1, true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- s.tryAcquire(4, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch(InterruptedException success){
- }
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * getQueueLength reports number of waiting threads
- */
- public void testGetQueueLength_fair() {
- final Semaphore lock = new Semaphore(1, true);
- Thread t1 = new Thread(new InterruptedLockRunnable(lock));
- Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
- try {
- assertEquals(0, lock.getQueueLength());
- lock.acquireUninterruptibly();
- t1.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- t2.start();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(2, lock.getQueueLength());
- t1.interrupt();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, lock.getQueueLength());
- lock.release();
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(0, lock.getQueueLength());
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * a deserialized serialized semaphore has same number of permits
- */
- public void testSerialization_fair() {
- Semaphore l = new Semaphore(3, true);
-
- try {
- l.acquire();
- l.release();
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(l);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- Semaphore r = (Semaphore) in.readObject();
- assertEquals(3, r.availablePermits());
- assertTrue(r.isFair());
- r.acquire();
- r.release();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * toString indicates current number of permits
- */
- public void testToString() {
- Semaphore s = new Semaphore(0);
- String us = s.toString();
- assertTrue(us.indexOf("Permits = 0") >= 0);
- s.release();
- String s1 = s.toString();
- assertTrue(s1.indexOf("Permits = 1") >= 0);
- s.release();
- String s2 = s.toString();
- assertTrue(s2.indexOf("Permits = 2") >= 0);
- }
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/SynchronousQueueTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/SynchronousQueueTest.java
deleted file mode 100755
index 19bdede..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/SynchronousQueueTest.java
+++ /dev/null
@@ -1,895 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class SynchronousQueueTest extends JSR166TestCase {
-
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
-
- public static Test suite() {
- return new TestSuite(SynchronousQueueTest.class);
- }
-
- /**
- * A SynchronousQueue is both empty and full
- */
- public void testEmptyFull() {
- SynchronousQueue q = new SynchronousQueue();
- assertTrue(q.isEmpty());
- assertEquals(0, q.size());
- assertEquals(0, q.remainingCapacity());
- assertFalse(q.offer(zero));
- }
-
- /**
- * A fair SynchronousQueue is both empty and full
- */
- public void testFairEmptyFull() {
- SynchronousQueue q = new SynchronousQueue(true);
- assertTrue(q.isEmpty());
- assertEquals(0, q.size());
- assertEquals(0, q.remainingCapacity());
- assertFalse(q.offer(zero));
- }
-
- /**
- * offer(null) throws NPE
- */
- public void testOfferNull() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- q.offer(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * add(null) throws NPE
- */
- public void testAddNull() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- q.add(null);
- shouldThrow();
- } catch (NullPointerException success) { }
- }
-
- /**
- * offer fails if no active taker
- */
- public void testOffer() {
- SynchronousQueue q = new SynchronousQueue();
- assertFalse(q.offer(one));
- }
-
- /**
- * add throws ISE if no active taker
- */
- public void testAdd() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- assertEquals(0, q.remainingCapacity());
- q.add(one);
- shouldThrow();
- } catch (IllegalStateException success){
- }
- }
-
- /**
- * addAll(null) throws NPE
- */
- public void testAddAll1() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- q.addAll(null);
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
-
- /**
- * addAll(this) throws IAE
- */
- public void testAddAllSelf() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- q.addAll(q);
- shouldThrow();
- }
- catch (IllegalArgumentException success) {}
- }
-
- /**
- * addAll of a collection with null elements throws NPE
- */
- public void testAddAll2() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- Integer[] ints = new Integer[1];
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (NullPointerException success) {}
- }
- /**
- * addAll throws ISE if no active taker
- */
- public void testAddAll4() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- Integer[] ints = new Integer[1];
- for (int i = 0; i < 1; ++i)
- ints[i] = new Integer(i);
- q.addAll(Arrays.asList(ints));
- shouldThrow();
- }
- catch (IllegalStateException success) {}
- }
-
- /**
- * put(null) throws NPE
- */
- public void testPutNull() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- q.put(null);
- shouldThrow();
- }
- catch (NullPointerException success){
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * put blocks interruptibly if no active taker
- */
- public void testBlockingPut() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- q.put(zero);
- threadShouldThrow();
- } catch (InterruptedException ie){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * put blocks waiting for take
- */
- public void testPutWithTake() {
- final SynchronousQueue q = new SynchronousQueue();
- Thread t = new Thread(new Runnable() {
- public void run() {
- int added = 0;
- try {
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- threadShouldThrow();
- } catch (InterruptedException e){
- assertTrue(added >= 1);
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- q.take();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * timed offer times out if elements not taken
- */
- public void testTimedOffer() {
- final SynchronousQueue q = new SynchronousQueue();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
-
- threadAssertFalse(q.offer(new Object(), SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- q.offer(new Object(), LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch (InterruptedException success){}
- }
- });
-
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * take blocks interruptibly when empty
- */
- public void testTakeFromEmpty() {
- final SynchronousQueue q = new SynchronousQueue();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){ }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * put blocks interruptibly if no active taker
- */
- public void testFairBlockingPut() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- SynchronousQueue q = new SynchronousQueue(true);
- q.put(zero);
- threadShouldThrow();
- } catch (InterruptedException ie){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * put blocks waiting for take
- */
- public void testFairPutWithTake() {
- final SynchronousQueue q = new SynchronousQueue(true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- int added = 0;
- try {
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- q.put(new Object());
- ++added;
- threadShouldThrow();
- } catch (InterruptedException e){
- assertTrue(added >= 1);
- }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- q.take();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * timed offer times out if elements not taken
- */
- public void testFairTimedOffer() {
- final SynchronousQueue q = new SynchronousQueue(true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
-
- threadAssertFalse(q.offer(new Object(), SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- q.offer(new Object(), LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch (InterruptedException success){}
- }
- });
-
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * take blocks interruptibly when empty
- */
- public void testFairTakeFromEmpty() {
- final SynchronousQueue q = new SynchronousQueue(true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.take();
- threadShouldThrow();
- } catch (InterruptedException success){ }
- }
- });
- try {
- t.start();
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * poll fails unless active taker
- */
- public void testPoll() {
- SynchronousQueue q = new SynchronousQueue();
- assertNull(q.poll());
- }
-
- /**
- * timed pool with zero timeout times out if no active taker
- */
- public void testTimedPoll0() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- assertNull(q.poll(0, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * timed pool with nonzero timeout times out if no active taker
- */
- public void testTimedPoll() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- assertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e){
- unexpectedException();
- }
- }
-
- /**
- * Interrupted timed poll throws InterruptedException instead of
- * returning timeout status
- */
- public void testInterruptedTimedPoll() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- assertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException success){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * timed poll before a delayed offer fails; after offer succeeds;
- * on interruption throws
- */
- public void testTimedPollWithOffer() {
- final SynchronousQueue q = new SynchronousQueue();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch (InterruptedException success) { }
- }
- });
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- assertTrue(q.offer(zero, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
- /**
- * Interrupted timed poll throws InterruptedException instead of
- * returning timeout status
- */
- public void testFairInterruptedTimedPoll() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- SynchronousQueue q = new SynchronousQueue(true);
- assertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- } catch (InterruptedException success){
- }
- }});
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- }
- catch (InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * timed poll before a delayed offer fails; after offer succeeds;
- * on interruption throws
- */
- public void testFairTimedPollWithOffer() {
- final SynchronousQueue q = new SynchronousQueue(true);
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);
- threadShouldThrow();
- } catch (InterruptedException success) { }
- }
- });
- try {
- t.start();
- Thread.sleep(SMALL_DELAY_MS);
- assertTrue(q.offer(zero, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
- t.interrupt();
- t.join();
- } catch (Exception e){
- unexpectedException();
- }
- }
-
-
- /**
- * peek returns null
- */
- public void testPeek() {
- SynchronousQueue q = new SynchronousQueue();
- assertNull(q.peek());
- }
-
- /**
- * element throws NSEE
- */
- public void testElement() {
- SynchronousQueue q = new SynchronousQueue();
- try {
- q.element();
- shouldThrow();
- }
- catch (NoSuchElementException success) {}
- }
-
- /**
- * remove throws NSEE if no active taker
- */
- public void testRemove() {
- SynchronousQueue q = new SynchronousQueue();
- try {
- q.remove();
- shouldThrow();
- } catch (NoSuchElementException success){
- }
- }
-
- /**
- * remove(x) returns false
- */
- public void testRemoveElement() {
- SynchronousQueue q = new SynchronousQueue();
- assertFalse(q.remove(zero));
- assertTrue(q.isEmpty());
- }
-
- /**
- * contains returns false
- */
- public void testContains() {
- SynchronousQueue q = new SynchronousQueue();
- assertFalse(q.contains(zero));
- }
-
- /**
- * clear ensures isEmpty
- */
- public void testClear() {
- SynchronousQueue q = new SynchronousQueue();
- q.clear();
- assertTrue(q.isEmpty());
- }
-
- /**
- * containsAll returns false unless empty
- */
- public void testContainsAll() {
- SynchronousQueue q = new SynchronousQueue();
- Integer[] empty = new Integer[0];
- assertTrue(q.containsAll(Arrays.asList(empty)));
- Integer[] ints = new Integer[1]; ints[0] = zero;
- assertFalse(q.containsAll(Arrays.asList(ints)));
- }
-
- /**
- * retainAll returns false
- */
- public void testRetainAll() {
- SynchronousQueue q = new SynchronousQueue();
- Integer[] empty = new Integer[0];
- assertFalse(q.retainAll(Arrays.asList(empty)));
- Integer[] ints = new Integer[1]; ints[0] = zero;
- assertFalse(q.retainAll(Arrays.asList(ints)));
- }
-
- /**
- * removeAll returns false
- */
- public void testRemoveAll() {
- SynchronousQueue q = new SynchronousQueue();
- Integer[] empty = new Integer[0];
- assertFalse(q.removeAll(Arrays.asList(empty)));
- Integer[] ints = new Integer[1]; ints[0] = zero;
- assertFalse(q.containsAll(Arrays.asList(ints)));
- }
-
-
- /**
- * toArray is empty
- */
- public void testToArray() {
- SynchronousQueue q = new SynchronousQueue();
- Object[] o = q.toArray();
- assertEquals(o.length, 0);
- }
-
- /**
- * toArray(a) is nulled at position 0
- */
- public void testToArray2() {
- SynchronousQueue q = new SynchronousQueue();
- Integer[] ints = new Integer[1];
- assertNull(ints[0]);
- }
-
- /**
- * toArray(null) throws NPE
- */
- public void testToArray_BadArg() {
- try {
- SynchronousQueue q = new SynchronousQueue();
- Object o[] = q.toArray(null);
- shouldThrow();
- } catch(NullPointerException success){}
- }
-
-
- /**
- * iterator does not traverse any elements
- */
- public void testIterator() {
- SynchronousQueue q = new SynchronousQueue();
- Iterator it = q.iterator();
- assertFalse(it.hasNext());
- try {
- Object x = it.next();
- shouldThrow();
- }
- catch (NoSuchElementException success) {}
- }
-
- /**
- * iterator remove throws ISE
- */
- public void testIteratorRemove() {
- SynchronousQueue q = new SynchronousQueue();
- Iterator it = q.iterator();
- try {
- it.remove();
- shouldThrow();
- }
- catch (IllegalStateException success) {}
- }
-
- /**
- * toString returns a non-null string
- */
- public void testToString() {
- SynchronousQueue q = new SynchronousQueue();
- String s = q.toString();
- assertNotNull(s);
- }
-
-
- /**
- * offer transfers elements across Executor tasks
- */
- public void testOfferInExecutor() {
- final SynchronousQueue q = new SynchronousQueue();
- ExecutorService executor = Executors.newFixedThreadPool(2);
- final Integer one = new Integer(1);
-
- executor.execute(new Runnable() {
- public void run() {
- threadAssertFalse(q.offer(one));
- try {
- threadAssertTrue(q.offer(one, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertEquals(0, q.remainingCapacity());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- executor.execute(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- threadAssertEquals(one, q.take());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- joinPool(executor);
-
- }
-
- /**
- * poll retrieves elements across Executor threads
- */
- public void testPollInExecutor() {
- final SynchronousQueue q = new SynchronousQueue();
- ExecutorService executor = Executors.newFixedThreadPool(2);
- executor.execute(new Runnable() {
- public void run() {
- threadAssertNull(q.poll());
- try {
- threadAssertTrue(null != q.poll(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));
- threadAssertTrue(q.isEmpty());
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- executor.execute(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SMALL_DELAY_MS);
- q.put(new Integer(1));
- }
- catch (InterruptedException e) {
- threadUnexpectedException();
- }
- }
- });
-
- joinPool(executor);
- }
-
- /**
- * a deserialized serialized queue is usable
- */
- public void testSerialization() {
- SynchronousQueue q = new SynchronousQueue();
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- SynchronousQueue r = (SynchronousQueue)in.readObject();
- assertEquals(q.size(), r.size());
- while (!q.isEmpty())
- assertEquals(q.remove(), r.remove());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainTo(null) throws NPE
- */
- public void testDrainToNull() {
- SynchronousQueue q = new SynchronousQueue();
- try {
- q.drainTo(null);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this) throws IAE
- */
- public void testDrainToSelf() {
- SynchronousQueue q = new SynchronousQueue();
- try {
- q.drainTo(q);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c) of empty queue doesn't transfer elements
- */
- public void testDrainTo() {
- SynchronousQueue q = new SynchronousQueue();
- ArrayList l = new ArrayList();
- q.drainTo(l);
- assertEquals(q.size(), 0);
- assertEquals(l.size(), 0);
- }
-
- /**
- * drainTo empties queue, unblocking a waiting put.
- */
- public void testDrainToWithActivePut() {
- final SynchronousQueue q = new SynchronousQueue();
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- q.put(new Integer(1));
- } catch (InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- try {
- t.start();
- ArrayList l = new ArrayList();
- Thread.sleep(SHORT_DELAY_MS);
- q.drainTo(l);
- assertTrue(l.size() <= 1);
- if (l.size() > 0)
- assertEquals(l.get(0), new Integer(1));
- t.join();
- assertTrue(l.size() <= 1);
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * drainTo(null, n) throws NPE
- */
- public void testDrainToNullN() {
- SynchronousQueue q = new SynchronousQueue();
- try {
- q.drainTo(null, 0);
- shouldThrow();
- } catch(NullPointerException success) {
- }
- }
-
- /**
- * drainTo(this, n) throws IAE
- */
- public void testDrainToSelfN() {
- SynchronousQueue q = new SynchronousQueue();
- try {
- q.drainTo(q, 0);
- shouldThrow();
- } catch(IllegalArgumentException success) {
- }
- }
-
- /**
- * drainTo(c, n) empties up to n elements of queue into c
- */
- public void testDrainToN() {
- final SynchronousQueue q = new SynchronousQueue();
- Thread t1 = new Thread(new Runnable() {
- public void run() {
- try {
- q.put(one);
- } catch (InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
- Thread t2 = new Thread(new Runnable() {
- public void run() {
- try {
- q.put(two);
- } catch (InterruptedException ie){
- threadUnexpectedException();
- }
- }
- });
-
- try {
- t1.start();
- t2.start();
- ArrayList l = new ArrayList();
- Thread.sleep(SHORT_DELAY_MS);
- q.drainTo(l, 1);
- assertTrue(l.size() == 1);
- q.drainTo(l, 1);
- assertTrue(l.size() == 2);
- assertTrue(l.contains(one));
- assertTrue(l.contains(two));
- t1.join();
- t2.join();
- } catch(Exception e){
- unexpectedException();
- }
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/SystemTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/SystemTest.java
deleted file mode 100644
index 4433cb1..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/SystemTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-
-public class SystemTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run(suite());
- }
-
- public static Test suite() {
- return new TestSuite(SystemTest.class);
- }
-
- /**
- * Worst case rounding for millisecs; set for 60 cycle millis clock.
- * This value might need to be changed os JVMs with coarser
- * System.currentTimeMillis clocks.
- */
- static final long MILLIS_ROUND = 17;
-
- /**
- * Nanos between readings of millis is no longer than millis (plus
- * possible rounding).
- * This shows only that nano timing not (much) worse than milli.
- */
- public void testNanoTime1() {
- try {
- long m1 = System.currentTimeMillis();
- Thread.sleep(1);
- long n1 = System.nanoTime();
- Thread.sleep(SHORT_DELAY_MS);
- long n2 = System.nanoTime();
- Thread.sleep(1);
- long m2 = System.currentTimeMillis();
- long millis = m2 - m1;
- long nanos = n2 - n1;
- assertTrue(nanos >= 0);
- long nanosAsMillis = nanos / 1000000;
- assertTrue(nanosAsMillis <= millis + MILLIS_ROUND);
- }
- catch(InterruptedException ie) {
- unexpectedException();
- }
- }
-
- /**
- * Millis between readings of nanos is less than nanos, adjusting
- * for rounding.
- * This shows only that nano timing not (much) worse than milli.
- */
- public void testNanoTime2() {
- try {
- long n1 = System.nanoTime();
- Thread.sleep(1);
- long m1 = System.currentTimeMillis();
- Thread.sleep(SHORT_DELAY_MS);
- long m2 = System.currentTimeMillis();
- Thread.sleep(1);
- long n2 = System.nanoTime();
- long millis = m2 - m1;
- long nanos = n2 - n1;
-
- assertTrue(nanos >= 0);
- long nanosAsMillis = nanos / 1000000;
- assertTrue(millis <= nanosAsMillis + MILLIS_ROUND);
- }
- catch(InterruptedException ie) {
- unexpectedException();
- }
- }
-
-}
-
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ThreadLocalTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ThreadLocalTest.java
deleted file mode 100644
index 0c2256a..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ThreadLocalTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.Semaphore;
-
-public class ThreadLocalTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run(suite());
- }
-
- public static Test suite() {
- return new TestSuite(ThreadLocalTest.class);
- }
-
- static ThreadLocal<Integer> tl = new ThreadLocal<Integer>() {
- public Integer initialValue() {
- return one;
- }
- };
-
- static InheritableThreadLocal<Integer> itl =
- new InheritableThreadLocal<Integer>() {
- protected Integer initialValue() {
- return zero;
- }
-
- protected Integer childValue(Integer parentValue) {
- return new Integer(parentValue.intValue() + 1);
- }
- };
-
- /**
- * remove causes next access to return initial value
- */
- public void testRemove() {
- assertEquals(tl.get(), one);
- tl.set(two);
- assertEquals(tl.get(), two);
- tl.remove();
- assertEquals(tl.get(), one);
- }
-
- /**
- * remove in InheritableThreadLocal causes next access to return
- * initial value
- */
- public void testRemoveITL() {
- assertEquals(itl.get(), zero);
- itl.set(two);
- assertEquals(itl.get(), two);
- itl.remove();
- assertEquals(itl.get(), zero);
- }
-
- private class ITLThread extends Thread {
- final int[] x;
- ITLThread(int[] array) { x = array; }
- public void run() {
- Thread child = null;
- if (itl.get().intValue() < x.length - 1) {
- child = new ITLThread(x);
- child.start();
- }
- Thread.currentThread().yield();
-
- int threadId = itl.get().intValue();
- for (int j = 0; j < threadId; j++) {
- x[threadId]++;
- Thread.currentThread().yield();
- }
-
- if (child != null) { // Wait for child (if any)
- try {
- child.join();
- } catch(InterruptedException e) {
- threadUnexpectedException();
- }
- }
- }
- }
-
- /**
- * InheritableThreadLocal propagates generic values.
- */
- public void testGenericITL() {
- final int threadCount = 10;
- final int x[] = new int[threadCount];
- Thread progenitor = new ITLThread(x);
- try {
- progenitor.start();
- progenitor.join();
- for(int i = 0; i < threadCount; i++) {
- assertEquals(i, x[i]);
- }
- } catch(InterruptedException e) {
- unexpectedException();
- }
- }
-}
-
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ThreadPoolExecutorTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ThreadPoolExecutorTest.java
deleted file mode 100755
index ca4ba78..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ThreadPoolExecutorTest.java
+++ /dev/null
@@ -1,1504 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import java.util.concurrent.*;
-import junit.framework.*;
-import java.util.*;
-
-public class ThreadPoolExecutorTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run (suite());
- }
- public static Test suite() {
- return new TestSuite(ThreadPoolExecutorTest.class);
- }
-
- static class ExtendedTPE extends ThreadPoolExecutor {
- volatile boolean beforeCalled = false;
- volatile boolean afterCalled = false;
- volatile boolean terminatedCalled = false;
- public ExtendedTPE() {
- super(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new SynchronousQueue<Runnable>());
- }
- protected void beforeExecute(Thread t, Runnable r) {
- beforeCalled = true;
- }
- protected void afterExecute(Runnable r, Throwable t) {
- afterCalled = true;
- }
- protected void terminated() {
- terminatedCalled = true;
- }
- }
-
- /**
- * execute successfully executes a runnable
- */
- public void testExecute() {
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- p1.execute(new Runnable() {
- public void run() {
- try {
- Thread.sleep(SHORT_DELAY_MS);
- } catch(InterruptedException e){
- threadUnexpectedException();
- }
- }
- });
- Thread.sleep(SMALL_DELAY_MS);
- } catch(InterruptedException e){
- unexpectedException();
- }
- joinPool(p1);
- }
-
- /**
- * getActiveCount increases but doesn't overestimate, when a
- * thread becomes active
- */
- public void testGetActiveCount() {
- ThreadPoolExecutor p2 = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertEquals(0, p2.getActiveCount());
- p2.execute(new MediumRunnable());
- try {
- Thread.sleep(SHORT_DELAY_MS);
- } catch(Exception e){
- unexpectedException();
- }
- assertEquals(1, p2.getActiveCount());
- joinPool(p2);
- }
-
- /**
- * prestartCoreThread starts a thread if under corePoolSize, else doesn't
- */
- public void testPrestartCoreThread() {
- ThreadPoolExecutor p2 = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertEquals(0, p2.getPoolSize());
- assertTrue(p2.prestartCoreThread());
- assertEquals(1, p2.getPoolSize());
- assertTrue(p2.prestartCoreThread());
- assertEquals(2, p2.getPoolSize());
- assertFalse(p2.prestartCoreThread());
- assertEquals(2, p2.getPoolSize());
- joinPool(p2);
- }
-
- /**
- * prestartAllCoreThreads starts all corePoolSize threads
- */
- public void testPrestartAllCoreThreads() {
- ThreadPoolExecutor p2 = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertEquals(0, p2.getPoolSize());
- p2.prestartAllCoreThreads();
- assertEquals(2, p2.getPoolSize());
- p2.prestartAllCoreThreads();
- assertEquals(2, p2.getPoolSize());
- joinPool(p2);
- }
-
- /**
- * getCompletedTaskCount increases, but doesn't overestimate,
- * when tasks complete
- */
- public void testGetCompletedTaskCount() {
- ThreadPoolExecutor p2 = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertEquals(0, p2.getCompletedTaskCount());
- p2.execute(new ShortRunnable());
- try {
- Thread.sleep(SMALL_DELAY_MS);
- } catch(Exception e){
- unexpectedException();
- }
- assertEquals(1, p2.getCompletedTaskCount());
- try { p2.shutdown(); } catch(SecurityException ok) { return; }
- joinPool(p2);
- }
-
- /**
- * getCorePoolSize returns size given in constructor if not otherwise set
- */
- public void testGetCorePoolSize() {
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertEquals(1, p1.getCorePoolSize());
- joinPool(p1);
- }
-
- /**
- * getKeepAliveTime returns value given in constructor if not otherwise set
- */
- public void testGetKeepAliveTime() {
- ThreadPoolExecutor p2 = new ThreadPoolExecutor(2, 2, 1000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertEquals(1, p2.getKeepAliveTime(TimeUnit.SECONDS));
- joinPool(p2);
- }
-
-
- /**
- * getThreadFactory returns factory in constructor if not set
- */
- public void testGetThreadFactory() {
- ThreadFactory tf = new SimpleThreadFactory();
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10), tf, new NoOpREHandler());
- assertSame(tf, p.getThreadFactory());
- joinPool(p);
- }
-
- /**
- * setThreadFactory sets the thread factory returned by getThreadFactory
- */
- public void testSetThreadFactory() {
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- ThreadFactory tf = new SimpleThreadFactory();
- p.setThreadFactory(tf);
- assertSame(tf, p.getThreadFactory());
- joinPool(p);
- }
-
-
- /**
- * setThreadFactory(null) throws NPE
- */
- public void testSetThreadFactoryNull() {
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- p.setThreadFactory(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } finally {
- joinPool(p);
- }
- }
-
- /**
- * getRejectedExecutionHandler returns handler in constructor if not set
- */
- public void testGetRejectedExecutionHandler() {
- RejectedExecutionHandler h = new NoOpREHandler();
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10), h);
- assertSame(h, p.getRejectedExecutionHandler());
- joinPool(p);
- }
-
- /**
- * setRejectedExecutionHandler sets the handler returned by
- * getRejectedExecutionHandler
- */
- public void testSetRejectedExecutionHandler() {
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- RejectedExecutionHandler h = new NoOpREHandler();
- p.setRejectedExecutionHandler(h);
- assertSame(h, p.getRejectedExecutionHandler());
- joinPool(p);
- }
-
-
- /**
- * setRejectedExecutionHandler(null) throws NPE
- */
- public void testSetRejectedExecutionHandlerNull() {
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- p.setRejectedExecutionHandler(null);
- shouldThrow();
- } catch (NullPointerException success) {
- } finally {
- joinPool(p);
- }
- }
-
-
- /**
- * getLargestPoolSize increases, but doesn't overestimate, when
- * multiple threads active
- */
- public void testGetLargestPoolSize() {
- ThreadPoolExecutor p2 = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- assertEquals(0, p2.getLargestPoolSize());
- p2.execute(new MediumRunnable());
- p2.execute(new MediumRunnable());
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(2, p2.getLargestPoolSize());
- } catch(Exception e){
- unexpectedException();
- }
- joinPool(p2);
- }
-
- /**
- * getMaximumPoolSize returns value given in constructor if not
- * otherwise set
- */
- public void testGetMaximumPoolSize() {
- ThreadPoolExecutor p2 = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertEquals(2, p2.getMaximumPoolSize());
- joinPool(p2);
- }
-
- /**
- * getPoolSize increases, but doesn't overestimate, when threads
- * become active
- */
- public void testGetPoolSize() {
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertEquals(0, p1.getPoolSize());
- p1.execute(new MediumRunnable());
- assertEquals(1, p1.getPoolSize());
- joinPool(p1);
- }
-
- /**
- * getTaskCount increases, but doesn't overestimate, when tasks submitted
- */
- public void testGetTaskCount() {
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- assertEquals(0, p1.getTaskCount());
- p1.execute(new MediumRunnable());
- Thread.sleep(SHORT_DELAY_MS);
- assertEquals(1, p1.getTaskCount());
- } catch(Exception e){
- unexpectedException();
- }
- joinPool(p1);
- }
-
- /**
- * isShutDown is false before shutdown, true after
- */
- public void testIsShutdown() {
-
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertFalse(p1.isShutdown());
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- assertTrue(p1.isShutdown());
- joinPool(p1);
- }
-
-
- /**
- * isTerminated is false before termination, true after
- */
- public void testIsTerminated() {
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertFalse(p1.isTerminated());
- try {
- p1.execute(new MediumRunnable());
- } finally {
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- }
- try {
- assertTrue(p1.awaitTermination(LONG_DELAY_MS, TimeUnit.MILLISECONDS));
- assertTrue(p1.isTerminated());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * isTerminating is not true when running or when terminated
- */
- public void testIsTerminating() {
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- assertFalse(p1.isTerminating());
- try {
- p1.execute(new SmallRunnable());
- assertFalse(p1.isTerminating());
- } finally {
- try { p1.shutdown(); } catch(SecurityException ok) { return; }
- }
- try {
- assertTrue(p1.awaitTermination(LONG_DELAY_MS, TimeUnit.MILLISECONDS));
- assertTrue(p1.isTerminated());
- assertFalse(p1.isTerminating());
- } catch(Exception e){
- unexpectedException();
- }
- }
-
- /**
- * getQueue returns the work queue, which contains queued tasks
- */
- public void testGetQueue() {
- BlockingQueue<Runnable> q = new ArrayBlockingQueue<Runnable>(10);
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, q);
- FutureTask[] tasks = new FutureTask[5];
- for(int i = 0; i < 5; i++){
- tasks[i] = new FutureTask(new MediumPossiblyInterruptedRunnable(), Boolean.TRUE);
- p1.execute(tasks[i]);
- }
- try {
- Thread.sleep(SHORT_DELAY_MS);
- BlockingQueue<Runnable> wq = p1.getQueue();
- assertSame(q, wq);
- assertFalse(wq.contains(tasks[0]));
- assertTrue(wq.contains(tasks[4]));
- } catch(Exception e) {
- unexpectedException();
- } finally {
- joinPool(p1);
- }
- }
-
- /**
- * remove(task) removes queued task, and fails to remove active task
- */
- public void testRemove() {
- BlockingQueue<Runnable> q = new ArrayBlockingQueue<Runnable>(10);
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, q);
- FutureTask[] tasks = new FutureTask[5];
- for(int i = 0; i < 5; i++){
- tasks[i] = new FutureTask(new MediumPossiblyInterruptedRunnable(), Boolean.TRUE);
- p1.execute(tasks[i]);
- }
- try {
- Thread.sleep(SHORT_DELAY_MS);
- assertFalse(p1.remove(tasks[0]));
- assertTrue(q.contains(tasks[4]));
- assertTrue(q.contains(tasks[3]));
- assertTrue(p1.remove(tasks[4]));
- assertFalse(p1.remove(tasks[4]));
- assertFalse(q.contains(tasks[4]));
- assertTrue(q.contains(tasks[3]));
- assertTrue(p1.remove(tasks[3]));
- assertFalse(q.contains(tasks[3]));
- } catch(Exception e) {
- unexpectedException();
- } finally {
- joinPool(p1);
- }
- }
-
- /**
- * purge removes cancelled tasks from the queue
- */
- public void testPurge() {
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- FutureTask[] tasks = new FutureTask[5];
- for(int i = 0; i < 5; i++){
- tasks[i] = new FutureTask(new MediumPossiblyInterruptedRunnable(), Boolean.TRUE);
- p1.execute(tasks[i]);
- }
- tasks[4].cancel(true);
- tasks[3].cancel(true);
- p1.purge();
- long count = p1.getTaskCount();
- assertTrue(count >= 2 && count < 5);
- joinPool(p1);
- }
-
- /**
- * shutDownNow returns a list containing tasks that were not run
- */
- public void testShutDownNow() {
- ThreadPoolExecutor p1 = new ThreadPoolExecutor(1, 1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- List l;
- try {
- for(int i = 0; i < 5; i++)
- p1.execute(new MediumPossiblyInterruptedRunnable());
- }
- finally {
- try {
- l = p1.shutdownNow();
- } catch (SecurityException ok) { return; }
-
- }
- assertTrue(p1.isShutdown());
- assertTrue(l.size() <= 4);
- }
-
- // Exception Tests
-
-
- /**
- * Constructor throws if corePoolSize argument is less than zero
- */
- public void testConstructor1() {
- try {
- new ThreadPoolExecutor(-1,1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if maximumPoolSize is less than zero
- */
- public void testConstructor2() {
- try {
- new ThreadPoolExecutor(1,-1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if maximumPoolSize is equal to zero
- */
- public void testConstructor3() {
- try {
- new ThreadPoolExecutor(1,0,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if keepAliveTime is less than zero
- */
- public void testConstructor4() {
- try {
- new ThreadPoolExecutor(1,2,-1L,TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if corePoolSize is greater than the maximumPoolSize
- */
- public void testConstructor5() {
- try {
- new ThreadPoolExecutor(2,1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if workQueue is set to null
- */
- public void testConstructorNullPointerException() {
- try {
- new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,null);
- shouldThrow();
- }
- catch (NullPointerException success){}
- }
-
-
-
- /**
- * Constructor throws if corePoolSize argument is less than zero
- */
- public void testConstructor6() {
- try {
- new ThreadPoolExecutor(-1,1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory());
- shouldThrow();
- } catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if maximumPoolSize is less than zero
- */
- public void testConstructor7() {
- try {
- new ThreadPoolExecutor(1,-1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if maximumPoolSize is equal to zero
- */
- public void testConstructor8() {
- try {
- new ThreadPoolExecutor(1,0,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if keepAliveTime is less than zero
- */
- public void testConstructor9() {
- try {
- new ThreadPoolExecutor(1,2,-1L,TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if corePoolSize is greater than the maximumPoolSize
- */
- public void testConstructor10() {
- try {
- new ThreadPoolExecutor(2,1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if workQueue is set to null
- */
- public void testConstructorNullPointerException2() {
- try {
- new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,null,new SimpleThreadFactory());
- shouldThrow();
- }
- catch (NullPointerException success){}
- }
-
- /**
- * Constructor throws if threadFactory is set to null
- */
- public void testConstructorNullPointerException3() {
- try {
- ThreadFactory f = null;
- new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(10),f);
- shouldThrow();
- }
- catch (NullPointerException success){}
- }
-
-
- /**
- * Constructor throws if corePoolSize argument is less than zero
- */
- public void testConstructor11() {
- try {
- new ThreadPoolExecutor(-1,1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if maximumPoolSize is less than zero
- */
- public void testConstructor12() {
- try {
- new ThreadPoolExecutor(1,-1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if maximumPoolSize is equal to zero
- */
- public void testConstructor13() {
- try {
- new ThreadPoolExecutor(1,0,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if keepAliveTime is less than zero
- */
- public void testConstructor14() {
- try {
- new ThreadPoolExecutor(1,2,-1L,TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if corePoolSize is greater than the maximumPoolSize
- */
- public void testConstructor15() {
- try {
- new ThreadPoolExecutor(2,1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if workQueue is set to null
- */
- public void testConstructorNullPointerException4() {
- try {
- new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,null,new NoOpREHandler());
- shouldThrow();
- }
- catch (NullPointerException success){}
- }
-
- /**
- * Constructor throws if handler is set to null
- */
- public void testConstructorNullPointerException5() {
- try {
- RejectedExecutionHandler r = null;
- new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(10),r);
- shouldThrow();
- }
- catch (NullPointerException success){}
- }
-
-
- /**
- * Constructor throws if corePoolSize argument is less than zero
- */
- public void testConstructor16() {
- try {
- new ThreadPoolExecutor(-1,1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory(),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if maximumPoolSize is less than zero
- */
- public void testConstructor17() {
- try {
- new ThreadPoolExecutor(1,-1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory(),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if maximumPoolSize is equal to zero
- */
- public void testConstructor18() {
- try {
- new ThreadPoolExecutor(1,0,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory(),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if keepAliveTime is less than zero
- */
- public void testConstructor19() {
- try {
- new ThreadPoolExecutor(1,2,-1L,TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory(),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if corePoolSize is greater than the maximumPoolSize
- */
- public void testConstructor20() {
- try {
- new ThreadPoolExecutor(2,1,LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory(),new NoOpREHandler());
- shouldThrow();
- }
- catch (IllegalArgumentException success){}
- }
-
- /**
- * Constructor throws if workQueue is set to null
- */
- public void testConstructorNullPointerException6() {
- try {
- new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,null,new SimpleThreadFactory(),new NoOpREHandler());
- shouldThrow();
- }
- catch (NullPointerException success){}
- }
-
- /**
- * Constructor throws if handler is set to null
- */
- public void testConstructorNullPointerException7() {
- try {
- RejectedExecutionHandler r = null;
- new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(10),new SimpleThreadFactory(),r);
- shouldThrow();
- }
- catch (NullPointerException success){}
- }
-
- /**
- * Constructor throws if ThreadFactory is set top null
- */
- public void testConstructorNullPointerException8() {
- try {
- ThreadFactory f = null;
- new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(10),f,new NoOpREHandler());
- shouldThrow();
- }
- catch (NullPointerException successdn8){}
- }
-
-
- /**
- * execute throws RejectedExecutionException
- * if saturated.
- */
- public void testSaturatedExecute() {
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1));
- try {
-
- for(int i = 0; i < 5; ++i){
- p.execute(new MediumRunnable());
- }
- shouldThrow();
- } catch(RejectedExecutionException success){}
- joinPool(p);
- }
-
- /**
- * executor using CallerRunsPolicy runs task if saturated.
- */
- public void testSaturatedExecute2() {
- RejectedExecutionHandler h = new ThreadPoolExecutor.CallerRunsPolicy();
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1), h);
- try {
-
- TrackedNoOpRunnable[] tasks = new TrackedNoOpRunnable[5];
- for(int i = 0; i < 5; ++i){
- tasks[i] = new TrackedNoOpRunnable();
- }
- TrackedLongRunnable mr = new TrackedLongRunnable();
- p.execute(mr);
- for(int i = 0; i < 5; ++i){
- p.execute(tasks[i]);
- }
- for(int i = 1; i < 5; ++i) {
- assertTrue(tasks[i].done);
- }
- try { p.shutdownNow(); } catch(SecurityException ok) { return; }
- } catch(RejectedExecutionException ex){
- unexpectedException();
- } finally {
- joinPool(p);
- }
- }
-
- /**
- * executor using DiscardPolicy drops task if saturated.
- */
- public void testSaturatedExecute3() {
- RejectedExecutionHandler h = new ThreadPoolExecutor.DiscardPolicy();
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1), h);
- try {
-
- TrackedNoOpRunnable[] tasks = new TrackedNoOpRunnable[5];
- for(int i = 0; i < 5; ++i){
- tasks[i] = new TrackedNoOpRunnable();
- }
- p.execute(new TrackedLongRunnable());
- for(int i = 0; i < 5; ++i){
- p.execute(tasks[i]);
- }
- for(int i = 0; i < 5; ++i){
- assertFalse(tasks[i].done);
- }
- try { p.shutdownNow(); } catch(SecurityException ok) { return; }
- } catch(RejectedExecutionException ex){
- unexpectedException();
- } finally {
- joinPool(p);
- }
- }
-
- /**
- * executor using DiscardOldestPolicy drops oldest task if saturated.
- */
- public void testSaturatedExecute4() {
- RejectedExecutionHandler h = new ThreadPoolExecutor.DiscardOldestPolicy();
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1), h);
- try {
- p.execute(new TrackedLongRunnable());
- TrackedLongRunnable r2 = new TrackedLongRunnable();
- p.execute(r2);
- assertTrue(p.getQueue().contains(r2));
- TrackedNoOpRunnable r3 = new TrackedNoOpRunnable();
- p.execute(r3);
- assertFalse(p.getQueue().contains(r2));
- assertTrue(p.getQueue().contains(r3));
- try { p.shutdownNow(); } catch(SecurityException ok) { return; }
- } catch(RejectedExecutionException ex){
- unexpectedException();
- } finally {
- joinPool(p);
- }
- }
-
- /**
- * execute throws RejectedExecutionException if shutdown
- */
- public void testRejectedExecutionExceptionOnShutdown() {
- ThreadPoolExecutor tpe =
- new ThreadPoolExecutor(1,1,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(1));
- try { tpe.shutdown(); } catch(SecurityException ok) { return; }
- try {
- tpe.execute(new NoOpRunnable());
- shouldThrow();
- } catch(RejectedExecutionException success){}
-
- joinPool(tpe);
- }
-
- /**
- * execute using CallerRunsPolicy drops task on shutdown
- */
- public void testCallerRunsOnShutdown() {
- RejectedExecutionHandler h = new ThreadPoolExecutor.CallerRunsPolicy();
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1), h);
-
- try { p.shutdown(); } catch(SecurityException ok) { return; }
- try {
- TrackedNoOpRunnable r = new TrackedNoOpRunnable();
- p.execute(r);
- assertFalse(r.done);
- } catch(RejectedExecutionException success){
- unexpectedException();
- } finally {
- joinPool(p);
- }
- }
-
- /**
- * execute using DiscardPolicy drops task on shutdown
- */
- public void testDiscardOnShutdown() {
- RejectedExecutionHandler h = new ThreadPoolExecutor.DiscardPolicy();
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1), h);
-
- try { p.shutdown(); } catch(SecurityException ok) { return; }
- try {
- TrackedNoOpRunnable r = new TrackedNoOpRunnable();
- p.execute(r);
- assertFalse(r.done);
- } catch(RejectedExecutionException success){
- unexpectedException();
- } finally {
- joinPool(p);
- }
- }
-
-
- /**
- * execute using DiscardOldestPolicy drops task on shutdown
- */
- public void testDiscardOldestOnShutdown() {
- RejectedExecutionHandler h = new ThreadPoolExecutor.DiscardOldestPolicy();
- ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1), h);
-
- try { p.shutdown(); } catch(SecurityException ok) { return; }
- try {
- TrackedNoOpRunnable r = new TrackedNoOpRunnable();
- p.execute(r);
- assertFalse(r.done);
- } catch(RejectedExecutionException success){
- unexpectedException();
- } finally {
- joinPool(p);
- }
- }
-
-
- /**
- * execute (null) throws NPE
- */
- public void testExecuteNull() {
- ThreadPoolExecutor tpe = null;
- try {
- tpe = new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(10));
- tpe.execute(null);
- shouldThrow();
- } catch(NullPointerException success){}
-
- joinPool(tpe);
- }
-
- /**
- * setCorePoolSize of negative value throws IllegalArgumentException
- */
- public void testCorePoolSizeIllegalArgumentException() {
- ThreadPoolExecutor tpe = null;
- try {
- tpe = new ThreadPoolExecutor(1,2,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(10));
- } catch(Exception e){}
- try {
- tpe.setCorePoolSize(-1);
- shouldThrow();
- } catch(IllegalArgumentException success){
- } finally {
- try { tpe.shutdown(); } catch(SecurityException ok) { return; }
- }
- joinPool(tpe);
- }
-
- /**
- * setMaximumPoolSize(int) throws IllegalArgumentException if
- * given a value less the core pool size
- */
- public void testMaximumPoolSizeIllegalArgumentException() {
- ThreadPoolExecutor tpe = null;
- try {
- tpe = new ThreadPoolExecutor(2,3,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(10));
- } catch(Exception e){}
- try {
- tpe.setMaximumPoolSize(1);
- shouldThrow();
- } catch(IllegalArgumentException success){
- } finally {
- try { tpe.shutdown(); } catch(SecurityException ok) { return; }
- }
- joinPool(tpe);
- }
-
- /**
- * setMaximumPoolSize throws IllegalArgumentException
- * if given a negative value
- */
- public void testMaximumPoolSizeIllegalArgumentException2() {
- ThreadPoolExecutor tpe = null;
- try {
- tpe = new ThreadPoolExecutor(2,3,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(10));
- } catch(Exception e){}
- try {
- tpe.setMaximumPoolSize(-1);
- shouldThrow();
- } catch(IllegalArgumentException success){
- } finally {
- try { tpe.shutdown(); } catch(SecurityException ok) { return; }
- }
- joinPool(tpe);
- }
-
-
- /**
- * setKeepAliveTime throws IllegalArgumentException
- * when given a negative value
- */
- public void testKeepAliveTimeIllegalArgumentException() {
- ThreadPoolExecutor tpe = null;
- try {
- tpe = new ThreadPoolExecutor(2,3,LONG_DELAY_MS, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(10));
- } catch(Exception e){}
-
- try {
- tpe.setKeepAliveTime(-1,TimeUnit.MILLISECONDS);
- shouldThrow();
- } catch(IllegalArgumentException success){
- } finally {
- try { tpe.shutdown(); } catch(SecurityException ok) { return; }
- }
- joinPool(tpe);
- }
-
- /**
- * terminated() is called on termination
- */
- public void testTerminated() {
- ExtendedTPE tpe = new ExtendedTPE();
- try { tpe.shutdown(); } catch(SecurityException ok) { return; }
- assertTrue(tpe.terminatedCalled);
- joinPool(tpe);
- }
-
- /**
- * beforeExecute and afterExecute are called when executing task
- */
- public void testBeforeAfter() {
- ExtendedTPE tpe = new ExtendedTPE();
- try {
- TrackedNoOpRunnable r = new TrackedNoOpRunnable();
- tpe.execute(r);
- Thread.sleep(SHORT_DELAY_MS);
- assertTrue(r.done);
- assertTrue(tpe.beforeCalled);
- assertTrue(tpe.afterCalled);
- try { tpe.shutdown(); } catch(SecurityException ok) { return; }
- }
- catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(tpe);
- }
- }
-
- /**
- * completed submit of callable returns result
- */
- public void testSubmitCallable() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- Future<String> future = e.submit(new StringTask());
- String result = future.get();
- assertSame(TEST_STRING, result);
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * completed submit of runnable returns successfully
- */
- public void testSubmitRunnable() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- Future<?> future = e.submit(new NoOpRunnable());
- future.get();
- assertTrue(future.isDone());
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * completed submit of (runnable, result) returns result
- */
- public void testSubmitRunnable2() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- Future<String> future = e.submit(new NoOpRunnable(), TEST_STRING);
- String result = future.get();
- assertSame(TEST_STRING, result);
- }
- catch (ExecutionException ex) {
- unexpectedException();
- }
- catch (InterruptedException ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
-
-
-
-
- /**
- * invokeAny(null) throws NPE
- */
- public void testInvokeAny1() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- e.invokeAny(null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(empty collection) throws IAE
- */
- public void testInvokeAny2() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- e.invokeAny(new ArrayList<Callable<String>>());
- } catch (IllegalArgumentException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(c) throws NPE if c has null elements
- */
- public void testInvokeAny3() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAny(l);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(c) throws ExecutionException if no task completes
- */
- public void testInvokeAny4() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- e.invokeAny(l);
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAny(c) returns result of some task
- */
- public void testInvokeAny5() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- String result = e.invokeAny(l);
- assertSame(TEST_STRING, result);
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(null) throws NPE
- */
- public void testInvokeAll1() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- e.invokeAll(null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(empty collection) returns empty collection
- */
- public void testInvokeAll2() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>());
- assertTrue(r.isEmpty());
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(c) throws NPE if c has null elements
- */
- public void testInvokeAll3() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAll(l);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * get of element of invokeAll(c) throws exception on failed task
- */
- public void testInvokeAll4() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- List<Future<String>> result = e.invokeAll(l);
- assertEquals(1, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- it.next().get();
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * invokeAll(c) returns results of all completed tasks
- */
- public void testInvokeAll5() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- List<Future<String>> result = e.invokeAll(l);
- assertEquals(2, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- assertSame(TEST_STRING, it.next().get());
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
-
-
- /**
- * timed invokeAny(null) throws NPE
- */
- public void testTimedInvokeAny1() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- e.invokeAny(null, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(,,null) throws NPE
- */
- public void testTimedInvokeAnyNullTimeUnit() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- e.invokeAny(l, MEDIUM_DELAY_MS, null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(empty collection) throws IAE
- */
- public void testTimedInvokeAny2() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- e.invokeAny(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (IllegalArgumentException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(c) throws NPE if c has null elements
- */
- public void testTimedInvokeAny3() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- ex.printStackTrace();
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(c) throws ExecutionException if no task completes
- */
- public void testTimedInvokeAny4() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAny(c) returns result of some task
- */
- public void testTimedInvokeAny5() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- String result = e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertSame(TEST_STRING, result);
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(null) throws NPE
- */
- public void testTimedInvokeAll1() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- e.invokeAll(null, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(,,null) throws NPE
- */
- public void testTimedInvokeAllNullTimeUnit() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- e.invokeAll(l, MEDIUM_DELAY_MS, null);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(empty collection) returns empty collection
- */
- public void testTimedInvokeAll2() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertTrue(r.isEmpty());
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(c) throws NPE if c has null elements
- */
- public void testTimedInvokeAll3() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(null);
- e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- } catch (NullPointerException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * get of element of invokeAll(c) throws exception on failed task
- */
- public void testTimedInvokeAll4() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new NPETask());
- List<Future<String>> result = e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertEquals(1, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- it.next().get();
- } catch(ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(c) returns results of all completed tasks
- */
- public void testTimedInvokeAll5() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(new StringTask());
- List<Future<String>> result = e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
- assertEquals(2, result.size());
- for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
- assertSame(TEST_STRING, it.next().get());
- } catch (ExecutionException success) {
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
- /**
- * timed invokeAll(c) cancels tasks not completed by timeout
- */
- public void testTimedInvokeAll6() {
- ExecutorService e = new ThreadPoolExecutor(2, 2, LONG_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
- try {
- ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
- l.add(new StringTask());
- l.add(Executors.callable(new MediumPossiblyInterruptedRunnable(), TEST_STRING));
- l.add(new StringTask());
- List<Future<String>> result = e.invokeAll(l, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
- assertEquals(3, result.size());
- Iterator<Future<String>> it = result.iterator();
- Future<String> f1 = it.next();
- Future<String> f2 = it.next();
- Future<String> f3 = it.next();
- assertTrue(f1.isDone());
- assertTrue(f2.isDone());
- assertTrue(f3.isDone());
- assertFalse(f1.isCancelled());
- assertTrue(f2.isCancelled());
- } catch(Exception ex) {
- unexpectedException();
- } finally {
- joinPool(e);
- }
- }
-
-
-}
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/ThreadTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/ThreadTest.java
deleted file mode 100755
index a5c63d9..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/ThreadTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-
-public class ThreadTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run(suite());
- }
-
- public static Test suite() {
- return new TestSuite(ThreadTest.class);
- }
-
- static class MyHandler implements Thread.UncaughtExceptionHandler {
- public void uncaughtException(Thread t, Throwable e) {
- e.printStackTrace();
- }
- }
-
- /**
- * getUncaughtExceptionHandler returns ThreadGroup unless set,
- * otherwise returning value of last setUncaughtExceptionHandler.
- */
- public void testGetAndSetUncaughtExceptionHandler() {
- // these must be done all at once to avoid state
- // dependencies across tests
- Thread current = Thread.currentThread();
- ThreadGroup tg = current.getThreadGroup();
- MyHandler eh = new MyHandler();
- assertEquals(tg, current.getUncaughtExceptionHandler());
- current.setUncaughtExceptionHandler(eh);
- assertEquals(eh, current.getUncaughtExceptionHandler());
- current.setUncaughtExceptionHandler(null);
- assertEquals(tg, current.getUncaughtExceptionHandler());
- }
-
- /**
- * getDefaultUncaughtExceptionHandler returns value of last
- * setDefaultUncaughtExceptionHandler.
- */
- public void testGetAndSetDefaultUncaughtExceptionHandler() {
- assertEquals(null, Thread.getDefaultUncaughtExceptionHandler());
- // failure due to securityException is OK.
- // Would be nice to explicitly test both ways, but cannot yet.
- try {
- Thread current = Thread.currentThread();
- ThreadGroup tg = current.getThreadGroup();
- MyHandler eh = new MyHandler();
- Thread.setDefaultUncaughtExceptionHandler(eh);
- assertEquals(eh, Thread.getDefaultUncaughtExceptionHandler());
- Thread.setDefaultUncaughtExceptionHandler(null);
- }
- catch(SecurityException ok) {
- }
- assertEquals(null, Thread.getDefaultUncaughtExceptionHandler());
- }
-
-
- // How to test actually using UEH within junit?
-
-}
-
diff --git a/concurrent/src/test/java/tests/api/java/util/concurrent/TimeUnitTest.java b/concurrent/src/test/java/tests/api/java/util/concurrent/TimeUnitTest.java
deleted file mode 100755
index 1a9a04a..0000000
--- a/concurrent/src/test/java/tests/api/java/util/concurrent/TimeUnitTest.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- * Other contributors include Andrew Wright, Jeffrey Hayes,
- * Pat Fisher, Mike Judd.
- */
-
-package tests.api.java.util.concurrent;
-
-import junit.framework.*;
-import java.util.concurrent.*;
-import java.io.*;
-
-public class TimeUnitTest extends JSR166TestCase {
- public static void main(String[] args) {
- junit.textui.TestRunner.run(suite());
- }
-
- public static Test suite() {
- return new TestSuite(TimeUnitTest.class);
- }
-
- /**
- * convert correctly converts sample values across the four units
- */
- public void testConvert() {
- for (long t = 0; t < 10; ++t) {
- assertEquals(t,
- TimeUnit.SECONDS.convert(t,
- TimeUnit.SECONDS));
- assertEquals(t,
- TimeUnit.SECONDS.convert(1000 * t,
- TimeUnit.MILLISECONDS));
- assertEquals(t,
- TimeUnit.SECONDS.convert(1000000 * t,
- TimeUnit.MICROSECONDS));
- assertEquals(t,
- TimeUnit.SECONDS.convert(1000000000 * t,
- TimeUnit.NANOSECONDS));
- assertEquals(1000 * t,
- TimeUnit.MILLISECONDS.convert(t,
- TimeUnit.SECONDS));
- assertEquals(t,
- TimeUnit.MILLISECONDS.convert(t,
- TimeUnit.MILLISECONDS));
- assertEquals(t,
- TimeUnit.MILLISECONDS.convert(1000 * t,
- TimeUnit.MICROSECONDS));
- assertEquals(t,
- TimeUnit.MILLISECONDS.convert(1000000 * t,
- TimeUnit.NANOSECONDS));
- assertEquals(1000000 * t,
- TimeUnit.MICROSECONDS.convert(t,
- TimeUnit.SECONDS));
- assertEquals(1000 * t,
- TimeUnit.MICROSECONDS.convert(t,
- TimeUnit.MILLISECONDS));
- assertEquals(t,
- TimeUnit.MICROSECONDS.convert(t,
- TimeUnit.MICROSECONDS));
- assertEquals(t,
- TimeUnit.MICROSECONDS.convert(1000 * t,
- TimeUnit.NANOSECONDS));
- assertEquals(1000000000 * t,
- TimeUnit.NANOSECONDS.convert(t,
- TimeUnit.SECONDS));
- assertEquals(1000000 * t,
- TimeUnit.NANOSECONDS.convert(t,
- TimeUnit.MILLISECONDS));
- assertEquals(1000 * t,
- TimeUnit.NANOSECONDS.convert(t,
- TimeUnit.MICROSECONDS));
- assertEquals(t,
- TimeUnit.NANOSECONDS.convert(t,
- TimeUnit.NANOSECONDS));
- }
- }
-
- /**
- * toNanos correctly converts sample values in different units to
- * nanoseconds
- */
- public void testToNanos() {
- for (long t = 0; t < 10; ++t) {
- assertEquals(1000000000 * t,
- TimeUnit.SECONDS.toNanos(t));
-
- assertEquals(1000000 * t,
- TimeUnit.MILLISECONDS.toNanos(t));
- assertEquals(1000 * t,
- TimeUnit.MICROSECONDS.toNanos(t));
- assertEquals(t,
- TimeUnit.NANOSECONDS.toNanos(t));
- }
- }
-
- /**
- * toMicros correctly converts sample values in different units to
- * microseconds
- */
- public void testToMicros() {
- for (long t = 0; t < 10; ++t) {
- assertEquals(1000000 * t,
- TimeUnit.SECONDS.toMicros(t));
-
- assertEquals(1000 * t,
- TimeUnit.MILLISECONDS.toMicros(t));
- assertEquals(t,
- TimeUnit.MICROSECONDS.toMicros(t));
- assertEquals(t,
- TimeUnit.NANOSECONDS.toMicros(t * 1000));
- }
- }
-
- /**
- * toMillis correctly converts sample values in different units to
- * milliseconds
- */
- public void testToMillis() {
- for (long t = 0; t < 10; ++t) {
- assertEquals(1000 * t,
- TimeUnit.SECONDS.toMillis(t));
-
- assertEquals(t,
- TimeUnit.MILLISECONDS.toMillis(t));
- assertEquals(t,
- TimeUnit.MICROSECONDS.toMillis(t * 1000));
- assertEquals(t,
- TimeUnit.NANOSECONDS.toMillis(t * 1000000));
- }
- }
-
- /**
- * toSeconds correctly converts sample values in different units to
- * seconds
- */
- public void testToSeconds() {
- for (long t = 0; t < 10; ++t) {
- assertEquals(t,
- TimeUnit.SECONDS.toSeconds(t));
-
- assertEquals(t,
- TimeUnit.MILLISECONDS.toSeconds(t * 1000));
- assertEquals(t,
- TimeUnit.MICROSECONDS.toSeconds(t * 1000000));
- assertEquals(t,
- TimeUnit.NANOSECONDS.toSeconds(t * 1000000000));
- }
- }
-
-
- /**
- * convert saturates positive too-large values to Long.MAX_VALUE
- * and negative to LONG.MIN_VALUE
- */
- public void testConvertSaturate() {
- assertEquals(Long.MAX_VALUE,
- TimeUnit.NANOSECONDS.convert(Long.MAX_VALUE / 2,
- TimeUnit.SECONDS));
- assertEquals(Long.MIN_VALUE,
- TimeUnit.NANOSECONDS.convert(-Long.MAX_VALUE / 4,
- TimeUnit.SECONDS));
- }
-
- /**
- * toNanos saturates positive too-large values to Long.MAX_VALUE
- * and negative to LONG.MIN_VALUE
- */
- public void testToNanosSaturate() {
- assertEquals(Long.MAX_VALUE,
- TimeUnit.MILLISECONDS.toNanos(Long.MAX_VALUE / 2));
- assertEquals(Long.MIN_VALUE,
- TimeUnit.MILLISECONDS.toNanos(-Long.MAX_VALUE / 3));
- }
-
-
- /**
- * toString returns string containing common name of unit
- */
- public void testToString() {
- String s = TimeUnit.SECONDS.toString();
- assertTrue(s.indexOf("ECOND") >= 0);
- }
-
-
- /**
- * Timed wait without holding lock throws
- * IllegalMonitorStateException
- */
- public void testTimedWait_IllegalMonitorException() {
- //created a new thread with anonymous runnable
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- Object o = new Object();
- TimeUnit tu = TimeUnit.MILLISECONDS;
- try {
- tu.timedWait(o,LONG_DELAY_MS);
- threadShouldThrow();
- }
- catch (InterruptedException ie) {
- threadUnexpectedException();
- }
- catch(IllegalMonitorStateException success) {
- }
-
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * timedWait throws InterruptedException when interrupted
- */
- public void testTimedWait() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- Object o = new Object();
-
- TimeUnit tu = TimeUnit.MILLISECONDS;
- try {
- synchronized(o) {
- tu.timedWait(o,MEDIUM_DELAY_MS);
- }
- threadShouldThrow();
- }
- catch(InterruptedException success) {}
- catch(IllegalMonitorStateException failure) {
- threadUnexpectedException();
- }
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(Exception e) {
- unexpectedException();
- }
- }
-
-
- /**
- * timedJoin throws InterruptedException when interrupted
- */
- public void testTimedJoin() {
- Thread t = new Thread(new Runnable() {
- public void run() {
- TimeUnit tu = TimeUnit.MILLISECONDS;
- try {
- Thread s = new Thread(new Runnable() {
- public void run() {
- try {
- Thread.sleep(MEDIUM_DELAY_MS);
- } catch(InterruptedException success){}
- }
- });
- s.start();
- tu.timedJoin(s,MEDIUM_DELAY_MS);
- threadShouldThrow();
- }
- catch(Exception e) {}
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * timedSleep throws InterruptedException when interrupted
- */
- public void testTimedSleep() {
- //created a new thread with anonymous runnable
-
- Thread t = new Thread(new Runnable() {
- public void run() {
- TimeUnit tu = TimeUnit.MILLISECONDS;
- try {
- tu.sleep(MEDIUM_DELAY_MS);
- threadShouldThrow();
- }
- catch(InterruptedException success) {}
- }
- });
- t.start();
- try {
- Thread.sleep(SHORT_DELAY_MS);
- t.interrupt();
- t.join();
- } catch(Exception e) {
- unexpectedException();
- }
- }
-
- /**
- * a deserialized serialized unit is equal
- */
- public void testSerialization() {
- TimeUnit q = TimeUnit.MILLISECONDS;
-
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
- ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
- out.writeObject(q);
- out.close();
-
- ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
- ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
- TimeUnit r = (TimeUnit)in.readObject();
-
- assertEquals(q.toString(), r.toString());
- } catch(Exception e){
- e.printStackTrace();
- unexpectedException();
- }
- }
-
-}
diff --git a/concurrent/src/test/java/tests/concurrent/AllTests.java b/concurrent/src/test/java/tests/concurrent/AllTests.java
deleted file mode 100644
index d2ebbeb..0000000
--- a/concurrent/src/test/java/tests/concurrent/AllTests.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * 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 tests.concurrent;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test suite for the concurrent module
- */
-public class AllTests {
-
- public static void main(String[] args) {
- junit.textui.TestRunner.run(suite());
- }
-
- /**
- * Collects all JSR166 unit tests as one suite
- */
- public static Test suite ( ) {
- TestSuite suite = tests.TestSuiteFactory.createTestSuite("JSR166 Unit Tests");
-
- suite.addTest(tests.api.java.util.concurrent.JSR166TestCase.suite());
-
- return suite;
- }
-}