ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/BlockingQueueTest.java
(Generate patch)

Comparing jsr166/src/test/tck/BlockingQueueTest.java (file contents):
Revision 1.1 by jsr166, Wed Oct 6 07:49:22 2010 UTC vs.
Revision 1.3 by jsr166, Fri Oct 29 07:00:32 2010 UTC

# Line 71 | Line 71 | public abstract class BlockingQueueTest
71          awaitTermination(t, MEDIUM_DELAY_MS);
72      }
73  
74 +    /**
75 +     * take() blocks interruptibly when empty
76 +     */
77 +    public void testTakeFromEmptyBlocksInterruptibly()
78 +            throws InterruptedException {
79 +        final BlockingQueue q = emptyCollection();
80 +        final CountDownLatch threadStarted = new CountDownLatch(1);
81 +        Thread t = newStartedThread(new CheckedRunnable() {
82 +            public void realRun() {
83 +                long t0 = System.nanoTime();
84 +                threadStarted.countDown();
85 +                try {
86 +                    q.take();
87 +                    shouldThrow();
88 +                } catch (InterruptedException success) {}
89 +                assertTrue(millisElapsedSince(t0) >= SHORT_DELAY_MS);
90 +            }});
91 +
92 +        threadStarted.await();
93 +        Thread.sleep(SHORT_DELAY_MS);
94 +        assertTrue(t.isAlive());
95 +        t.interrupt();
96 +        awaitTermination(t, MEDIUM_DELAY_MS);
97 +    }
98 +
99 +    /**
100 +     * take() throws InterruptedException immediately if interrupted
101 +     * before waiting
102 +     */
103 +    public void testTakeFromEmptyAfterInterrupt()
104 +            throws InterruptedException {
105 +        final BlockingQueue q = emptyCollection();
106 +        Thread t = newStartedThread(new CheckedRunnable() {
107 +            public void realRun() {
108 +                long t0 = System.nanoTime();
109 +                Thread.currentThread().interrupt();
110 +                try {
111 +                    q.take();
112 +                    shouldThrow();
113 +                } catch (InterruptedException success) {}
114 +                assertTrue(millisElapsedSince(t0) < SHORT_DELAY_MS);
115 +            }});
116 +
117 +        awaitTermination(t, MEDIUM_DELAY_MS);
118 +    }
119 +
120      /** For debugging. */
121      public void XXXXtestFails() {
122          fail(emptyCollection().getClass().toString());

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines