public Sample start(MeterRegistry registry) { if (longTask) { LongTaskTimer.Sample sample = LongTaskTimer.builder(name) .description(description) .tags(tags) .register(registry) .start(); return () -> sample.stop(); } Timer.Sample sample = Timer.start(registry); Timer timer = Timer.builder(name) .description(description) .tags(tags) .publishPercentileHistogram(histogram) .publishPercentiles(percentiles) .register(registry); return () -> sample.stop(timer); }
private Collection<LongTaskTimer.Sample> getLongTaskTimerSamples( HttpServletRequest request, Object handler, Set<Timed> annotations) { List<LongTaskTimer.Sample> samples = new ArrayList<>(); annotations.stream().filter(Timed::longTask).forEach((annotation) -> { Iterable<Tag> tags = this.tagsProvider.getLongRequestTags(request, handler); LongTaskTimer.Builder builder = LongTaskTimer.builder(annotation).tags(tags); LongTaskTimer timer = builder.register(this.registry); samples.add(timer.start()); }); return samples; }
private Object recordThrowable(LongTaskTimer timer, ThrowableCallable f) throws Throwable { LongTaskTimer.Sample timing = timer.start(); try { return f.call(); } finally { timing.stop(); } }
TimingSampleContext(HttpServletRequest request, Object handlerObject) { timedAnnotations = annotations(handlerObject); timerSample = Timer.start(registry); longTaskTimerSamples = timedAnnotations.stream() .filter(Timed::longTask) .map(t -> LongTaskTimer.builder(t) .tags(tagsProvider.httpLongRequestTags(request, handlerObject)) .register(registry) .start()) .collect(Collectors.toList()); }
@Test @DisplayName("total time is preserved for a single timing") default void record(MeterRegistry registry) { LongTaskTimer t = registry.more().longTaskTimer("myTimer"); LongTaskTimer.Sample sample = t.start(); clock(registry).add(10, TimeUnit.NANOSECONDS); assertAll(() -> assertEquals(10, t.duration(TimeUnit.NANOSECONDS)), () -> assertEquals(0.01, t.duration(TimeUnit.MICROSECONDS)), () -> assertEquals(10, sample.duration(TimeUnit.NANOSECONDS)), () -> assertEquals(0.01, sample.duration(TimeUnit.MICROSECONDS)), () -> assertEquals(1, t.activeTasks())); clock(registry).add(10, TimeUnit.NANOSECONDS); sample.stop(); assertAll(() -> assertEquals(0, t.duration(TimeUnit.NANOSECONDS)), () -> assertEquals(-1, sample.duration(TimeUnit.NANOSECONDS)), () -> assertEquals(0, t.activeTasks())); } }