private void sampleCallbacks() { if (cancelCriterion.isCancelInProgress()) { executor.shutdown(); } int errors = 0; int suppliers = 0; long start = System.nanoTime(); try { for (Statistics stats : statisticsManager.getStatsList()) { StatisticsImpl statistics = (StatisticsImpl) stats; errors += statistics.invokeSuppliers(); suppliers += statistics.getSupplierCount(); } } catch (VirtualMachineError e) { SystemFailure.initiateFailure(e); } catch (Throwable throwable) { logger.error("Error invoking statistic suppliers", throwable); } finally { long end = System.nanoTime(); statSamplerStats.incSampleCallbackDuration(TimeUnit.NANOSECONDS.toMillis(end - start)); statSamplerStats.incSampleCallbackErrors(errors); statSamplerStats.setSampleCallbacks(suppliers); } }
@Test public void taskShouldSampleStatistics() { Runnable sampleTask = invokeStartAndGetTask(); StatisticsImpl stats1 = mock(StatisticsImpl.class); StatisticsImpl stats2 = mock(StatisticsImpl.class); when(stats1.invokeSuppliers()).thenReturn(3); when(stats2.invokeSuppliers()).thenReturn(2); when(stats1.getSupplierCount()).thenReturn(7); when(stats2.getSupplierCount()).thenReturn(8); when(statisticsManager.getStatsList()).thenReturn(Arrays.asList(stats1, stats2)); sampleTask.run(); verify(statSamplerStats).setSampleCallbacks(eq(15)); verify(statSamplerStats).incSampleCallbackErrors(5); verify(statSamplerStats).incSampleCallbackDuration(anyLong()); }
@Test public void getSupplierCountShouldReturnCorrectCount() { IntSupplier supplier1 = mock(IntSupplier.class); stats.setIntSupplier(4, supplier1); assertEquals(1, stats.getSupplierCount()); }