@Before public void givenAnEventMetricCollector() { MockitoAnnotations.initMocks(this); Map<Object, EventCounters> perEventCounters = Maps.newHashMap(); perEventCounters.put(TOP_LEVEL_GROUP, topLevelCounter); perEventCounters.put(NESTED_GROUP, nestedCounter); collector = new EventMetricCollector(perEventCounters, newArrayList(stepMeasurementSink)); when(topLevelCounter.getEventGroupName()).thenReturn(TOP_LEVEL_GROUP); when(nestedCounter.getEventGroupName()).thenReturn(NESTED_GROUP); EventMetricCounters invocationCounter = mock(EventMetricCounters.class); when(topLevelCounter.getInvocationCounter()).thenReturn(invocationCounter); ThreadMetric threadMetric = mock(ThreadMetric.class); when(topLevelCounter.getMetricSources()).thenReturn(newArrayList(threadMetric)); when(topLevelCounter.getCounterForMetric(threadMetric)).thenReturn(topLevelMetricCounters); }
EventMetricCounters counter = counters.getCounterForMetric(metric .getMetricSource()); if (counter != null) {
@Test public void itShouldIncrementCountersForSingleCollectors() { collector.startTiming(TOP_LEVEL_GROUP, "topLevelEvent"); collector.stopTiming(); verify(topLevelCounter).getCounterForMetric(any(ThreadMetric.class)); verify(topLevelMetricCounters).incrementCounters(anyLong()); }
@Test public void itShouldNotIncrementNestedCountersForNestedCollectors() { collector.startTiming(TOP_LEVEL_GROUP, "topLevelEvent"); collector.startTiming(NESTED_GROUP, "nestedEvent"); collector.stopTiming(); collector.stopTiming(); verify(nestedCounter, never()).getCounterForMetric(any(ThreadMetric.class)); }
@Test public void itShouldIncrementTopLevelCountersForNestedCollectors() { collector.startTiming(TOP_LEVEL_GROUP, "topLevelEvent"); collector.startTiming(NESTED_GROUP, "nestedEvent"); collector.stopTiming(); collector.stopTiming(); verify(topLevelCounter).getCounterForMetric(any(ThreadMetric.class)); verify(topLevelMetricCounters).incrementCounters(anyLong()); }