< prev index next >

test/jdk/java/util/concurrent/LinkedTransferQueue/WhiteBox.java

Print this page
8246677: LinkedTransferQueue and SynchronousQueue synchronization updates
Reviewed-by: martin

@@ -59,24 +59,20 @@
 
 @Test
 public class WhiteBox {
     final ThreadLocalRandom rnd = ThreadLocalRandom.current();
     final VarHandle HEAD, TAIL, ITEM, NEXT;
-    final int SWEEP_THRESHOLD;
 
     public WhiteBox() throws ReflectiveOperationException {
         Class<?> qClass = LinkedTransferQueue.class;
         Class<?> nodeClass = Class.forName(qClass.getName() + "$Node");
         MethodHandles.Lookup lookup
             = MethodHandles.privateLookupIn(qClass, MethodHandles.lookup());
         HEAD = lookup.findVarHandle(qClass, "head", nodeClass);
         TAIL = lookup.findVarHandle(qClass, "tail", nodeClass);
         NEXT = lookup.findVarHandle(nodeClass, "next", nodeClass);
         ITEM = lookup.findVarHandle(nodeClass, "item", Object.class);
-        SWEEP_THRESHOLD = (int)
-            lookup.findStaticVarHandle(qClass, "SWEEP_THRESHOLD", int.class)
-            .get();
     }
 
     Object head(LinkedTransferQueue q) { return HEAD.getVolatile(q); }
     Object tail(LinkedTransferQueue q) { return TAIL.getVolatile(q); }
     Object item(Object node)           { return ITEM.getVolatile(node); }

@@ -365,40 +361,10 @@
     public void testSerialization() {
         LinkedTransferQueue q = serialClone(new LinkedTransferQueue());
         assertInvariants(q);
     }
 
-    public void cancelledNodeSweeping() throws Throwable {
-        assertEquals(SWEEP_THRESHOLD & (SWEEP_THRESHOLD - 1), 0);
-        LinkedTransferQueue q = new LinkedTransferQueue();
-        Thread blockHead = null;
-        if (rnd.nextBoolean()) {
-            blockHead = new Thread(
-                () -> { try { q.take(); } catch (InterruptedException ok) {}});
-            blockHead.start();
-            while (nodeCount(q) != 2) { Thread.yield(); }
-            assertTrue(q.hasWaitingConsumer());
-            assertEquals(q.getWaitingConsumerCount(), 1);
-        }
-        int initialNodeCount = nodeCount(q);
-
-        // Some dead nodes do in fact accumulate ...
-        if (blockHead != null)
-            while (nodeCount(q) < initialNodeCount + SWEEP_THRESHOLD / 2)
-                q.poll(1L, TimeUnit.MICROSECONDS);
-
-        // ... but no more than SWEEP_THRESHOLD nodes accumulate
-        for (int i = rnd.nextInt(SWEEP_THRESHOLD * 10); i-->0; )
-            q.poll(1L, TimeUnit.MICROSECONDS);
-        assertTrue(nodeCount(q) <= initialNodeCount + SWEEP_THRESHOLD);
-
-        if (blockHead != null) {
-            blockHead.interrupt();
-            blockHead.join();
-        }
-    }
-
     /** Checks conditions which should always be true. */
     void assertInvariants(LinkedTransferQueue q) {
         assertNotNull(head(q));
         assertNotNull(tail(q));
         // head is never self-linked (but tail may!)
< prev index next >