You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/07/01 05:07:47 UTC
[james-project] 01/03: JAMES-3170 Correctly test MetricFactory
reactive integration
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit e84e7a439d19ba82a2d71a43ae2528afd800320e
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Jun 30 13:04:10 2020 +0700
JAMES-3170 Correctly test MetricFactory reactive integration
Testing wrapping in a Flux or a Mono. We highlight the fact that wrapping
the metric factory with a Mono fails at recording the timings, and record
zero instead.
---
.../dropwizard/DropWizardMetricFactoryTest.java | 32 ++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/metrics/metrics-dropwizard/src/test/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactoryTest.java b/metrics/metrics-dropwizard/src/test/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactoryTest.java
index 968095e..87455bf 100644
--- a/metrics/metrics-dropwizard/src/test/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactoryTest.java
+++ b/metrics/metrics-dropwizard/src/test/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactoryTest.java
@@ -28,6 +28,7 @@ import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.metrics.api.MetricFactoryContract;
import org.assertj.core.api.SoftAssertions;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import com.codahale.metrics.MetricRegistry;
@@ -61,6 +62,37 @@ class DropWizardMetricFactoryTest implements MetricFactoryContract {
}
@Test
+ void decoratePublisherWithTimerMetricShouldRecordAtLeastTheMonoDelayWhenWrappedInAFlux() {
+ Duration duration = Duration.ofMillis(100);
+ Flux.from(testee.decoratePublisherWithTimerMetric("any", Mono.delay(duration)))
+ .blockLast();
+
+ assertThat(testee.timer("any").getTimer().getSnapshot().get99thPercentile())
+ .isGreaterThan(duration.get(ChronoUnit.NANOS));
+ }
+
+ @Disabled("Recorded timing is 0")
+ @Test
+ void decoratePublisherWithTimerMetricShouldRecordAtLeastTheMonoDelayWhenWrappedInAMono() {
+ Duration duration = Duration.ofMillis(100);
+ Mono.from(testee.decoratePublisherWithTimerMetric("any", Mono.delay(duration)))
+ .block();
+
+ assertThat(testee.timer("any").getTimer().getSnapshot().get99thPercentile())
+ .isGreaterThan(duration.get(ChronoUnit.NANOS));
+ }
+
+ @Test
+ void decoratePublisherWithTimerMetricShouldRecordAtLeastTheFluxDelayWhenWrappedInAFlux() {
+ Duration duration = Duration.ofMillis(100);
+ Flux.from(testee.decoratePublisherWithTimerMetric("any", Flux.interval(duration).take(1)))
+ .blockLast();
+
+ assertThat(testee.timer("any").getTimer().getSnapshot().get99thPercentile())
+ .isGreaterThan(duration.get(ChronoUnit.NANOS));
+ }
+
+ @Test
void decoratePublisherWithTimerMetricLogP99ShouldRecordANewValueForEachRetry() {
Duration duration = Duration.ofMillis(100);
Mono.from(testee.decoratePublisherWithTimerMetricLogP99("any", Mono.delay(duration)))
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org