use of com.datastax.oss.driver.api.core.metrics.SessionMetric in project java-driver by datastax.
the class MicrometerSessionMetricUpdaterTest method should_create_timer.
@Test
@UseDataProvider(value = "timerMetrics")
public void should_create_timer(SessionMetric metric, DriverOption lowest, DriverOption highest, DriverOption digits, DriverOption sla) {
// given
InternalDriverContext context = mock(InternalDriverContext.class);
DriverExecutionProfile profile = mock(DriverExecutionProfile.class);
DriverConfig config = mock(DriverConfig.class);
MetricIdGenerator generator = mock(MetricIdGenerator.class);
Set<SessionMetric> enabledMetrics = Collections.singleton(metric);
// when
when(context.getSessionName()).thenReturn("prefix");
when(context.getConfig()).thenReturn(config);
when(config.getDefaultProfile()).thenReturn(profile);
when(context.getMetricIdGenerator()).thenReturn(generator);
when(profile.getDuration(DefaultDriverOption.METRICS_NODE_EXPIRE_AFTER)).thenReturn(Duration.ofHours(1));
when(profile.getDuration(lowest)).thenReturn(Duration.ofMillis(10));
when(profile.getDuration(highest)).thenReturn(Duration.ofSeconds(1));
when(profile.getInt(digits)).thenReturn(5);
when(profile.isDefined(sla)).thenReturn(true);
when(profile.getDurationList(sla)).thenReturn(Arrays.asList(Duration.ofMillis(100), Duration.ofMillis(500)));
when(generator.sessionMetricId(metric)).thenReturn(METRIC_ID);
SimpleMeterRegistry registry = spy(new SimpleMeterRegistry());
MicrometerSessionMetricUpdater updater = new MicrometerSessionMetricUpdater(context, enabledMetrics, registry);
for (int i = 0; i < 10; i++) {
updater.updateTimer(metric, null, 100, TimeUnit.MILLISECONDS);
}
// then
Timer timer = registry.find(METRIC_ID.getName()).timer();
assertThat(timer).isNotNull();
assertThat(timer.count()).isEqualTo(10);
HistogramSnapshot snapshot = timer.takeSnapshot();
assertThat(snapshot.histogramCounts()).hasSize(2);
}
Aggregations