< prev index next >

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

Print this page
8197531: Miscellaneous changes imported from jsr166 CVS 2018-04
Reviewed-by: martin, psandoz


 344             return bos.toByteArray();
 345         } catch (Exception fail) {
 346             throw new AssertionError(fail);
 347         }
 348     }
 349 
 350     @SuppressWarnings("unchecked")
 351     <T> T serialClone(T o) {
 352         try {
 353             ObjectInputStream ois = new ObjectInputStream
 354                 (new ByteArrayInputStream(serialBytes(o)));
 355             T clone = (T) ois.readObject();
 356             assertNotSame(o, clone);
 357             assertSame(o.getClass(), clone.getClass());
 358             return clone;
 359         } catch (Exception fail) {
 360             throw new AssertionError(fail);
 361         }
 362     }
 363 

 364     public void testSerialization() {
 365         LinkedTransferQueue q = serialClone(new LinkedTransferQueue());
 366         assertInvariants(q);
 367     }
 368 
 369     public void cancelledNodeSweeping() throws Throwable {
 370         assertEquals(SWEEP_THRESHOLD & (SWEEP_THRESHOLD - 1), 0);
 371         LinkedTransferQueue q = new LinkedTransferQueue();
 372         Thread blockHead = null;
 373         if (rnd.nextBoolean()) {
 374             blockHead = new Thread(
 375                 () -> { try { q.take(); } catch (InterruptedException ok) {}});
 376             blockHead.start();
 377             while (nodeCount(q) != 2) { Thread.yield(); }
 378             assertTrue(q.hasWaitingConsumer());
 379             assertEquals(q.getWaitingConsumerCount(), 1);
 380         }
 381         int initialNodeCount = nodeCount(q);
 382 
 383         // Some dead nodes do in fact accumulate ...




 344             return bos.toByteArray();
 345         } catch (Exception fail) {
 346             throw new AssertionError(fail);
 347         }
 348     }
 349 
 350     @SuppressWarnings("unchecked")
 351     <T> T serialClone(T o) {
 352         try {
 353             ObjectInputStream ois = new ObjectInputStream
 354                 (new ByteArrayInputStream(serialBytes(o)));
 355             T clone = (T) ois.readObject();
 356             assertNotSame(o, clone);
 357             assertSame(o.getClass(), clone.getClass());
 358             return clone;
 359         } catch (Exception fail) {
 360             throw new AssertionError(fail);
 361         }
 362     }
 363 
 364     @Test
 365     public void testSerialization() {
 366         LinkedTransferQueue q = serialClone(new LinkedTransferQueue());
 367         assertInvariants(q);
 368     }
 369 
 370     public void cancelledNodeSweeping() throws Throwable {
 371         assertEquals(SWEEP_THRESHOLD & (SWEEP_THRESHOLD - 1), 0);
 372         LinkedTransferQueue q = new LinkedTransferQueue();
 373         Thread blockHead = null;
 374         if (rnd.nextBoolean()) {
 375             blockHead = new Thread(
 376                 () -> { try { q.take(); } catch (InterruptedException ok) {}});
 377             blockHead.start();
 378             while (nodeCount(q) != 2) { Thread.yield(); }
 379             assertTrue(q.hasWaitingConsumer());
 380             assertEquals(q.getWaitingConsumerCount(), 1);
 381         }
 382         int initialNodeCount = nodeCount(q);
 383 
 384         // Some dead nodes do in fact accumulate ...


< prev index next >