private void verifySleepTime(long expectedDelayTimeNanos) throws InterruptedException { Mockito.verify(executor).sleep(expectedDelayTimeNanos); } }
if (pendingNanos > 0) { try { pendingNanos = sleep(pendingNanos); } catch (InterruptedException e) { Thread.currentThread().interrupt();
if (pendingNanos > 0) { try { pendingNanos = sleep(pendingNanos); } catch (InterruptedException e) { Thread.currentThread().interrupt();
if (pendingNanos > 0) { try { pendingNanos = sleep(pendingNanos); } catch (InterruptedException e) { Thread.currentThread().interrupt();
if (pendingNanos > 0) { try { pendingNanos = sleep(pendingNanos); } catch (InterruptedException e) { Thread.currentThread().interrupt();
if (pendingNanos > 0) { try { pendingNanos = sleep(pendingNanos); } catch (InterruptedException e) { Thread.currentThread().interrupt();
private void setActualSleepTime(long actualDelayTimeNanos) throws InterruptedException { Mockito.when(executor.sleep(Mockito.anyLong())).thenAnswer(invocation -> (long) invocation.getArguments()[0] - actualDelayTimeNanos); }
@Test public void test100PercentWorkRate() throws InterruptedException { setWorkTime(TimeUnit.MILLISECONDS.toNanos(5)); executor.execute(NO_OP); assertEquals(0L, executor.getPendingNanos()); // At 100% work rate sleep should not be called Mockito.verify(executor, Mockito.never()).sleep(Mockito.anyLong()); }
@Test public void testNegativePendingNanos() throws InterruptedException { executor.setWorkFactor(0.5); executor.setPendingNanos(-1000); assertEquals(-1000, executor.getPendingNanos()); // Note: we do not expect the delay time to be used because work time + pending delay is // negative. setWorkTime(500); executor.execute(NO_OP); // Sleep should not be called with negative pending nanos Mockito.verify(executor, Mockito.never()).sleep(Mockito.anyLong()); assertEquals(-1000 + 500, executor.getPendingNanos()); }