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 f46871bf1ecaed70d30b1d2495480506fc72d70d
Author: Benoit Tellier <btell...@linagora.com>
AuthorDate: Tue Jun 30 13:04:54 2020 +0700

    JAMES-3170 MetricFactory::decoratePublisherWithTimerMetric should rely on 
Flux::using
---
 .../james/metrics/dropwizard/DropWizardMetricFactory.java   | 13 ++++++-------
 .../metrics/dropwizard/DropWizardMetricFactoryTest.java     |  2 --
 .../apache/james/metrics/logger/DefaultMetricFactory.java   | 13 ++++++-------
 .../apache/james/metrics/tests/RecordingMetricFactory.java  | 13 ++++++-------
 4 files changed, 18 insertions(+), 23 deletions(-)

diff --git 
a/metrics/metrics-dropwizard/src/main/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactory.java
 
b/metrics/metrics-dropwizard/src/main/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactory.java
index 78f8a65..8a87b88 100644
--- 
a/metrics/metrics-dropwizard/src/main/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactory.java
+++ 
b/metrics/metrics-dropwizard/src/main/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactory.java
@@ -36,7 +36,6 @@ import com.codahale.metrics.SlidingTimeWindowMovingAverages;
 import com.codahale.metrics.jmx.JmxReporter;
 
 import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
 
 public class DropWizardMetricFactory implements MetricFactory, Startable {
 
@@ -62,16 +61,16 @@ public class DropWizardMetricFactory implements 
MetricFactory, Startable {
 
     @Override
     public <T> Publisher<T> decoratePublisherWithTimerMetric(String name, 
Publisher<T> publisher) {
-        return Mono.fromCallable(() -> timer(name))
-            .flatMapMany(timer ->  Flux.from(publisher)
-                .doOnComplete(timer::stopAndPublish));
+        return Flux.using(() -> timer(name),
+            any -> Flux.from(publisher),
+            DropWizardTimeMetric::stopAndPublish);
     }
 
     @Override
     public <T> Publisher<T> decoratePublisherWithTimerMetricLogP99(String 
name, Publisher<T> publisher) {
-        return Mono.fromCallable(() -> timer(name))
-            .flatMapMany(timer ->  Flux.from(publisher)
-                .doOnComplete(() -> 
timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD)));
+        return Flux.using(() -> timer(name),
+            any -> Flux.from(publisher),
+            timer -> 
timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD));
     }
 
     @PostConstruct
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 87455bf..2aba50c 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,7 +28,6 @@ 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;
@@ -71,7 +70,6 @@ class DropWizardMetricFactoryTest implements 
MetricFactoryContract {
             .isGreaterThan(duration.get(ChronoUnit.NANOS));
     }
 
-    @Disabled("Recorded timing is 0")
     @Test
     void 
decoratePublisherWithTimerMetricShouldRecordAtLeastTheMonoDelayWhenWrappedInAMono()
 {
         Duration duration = Duration.ofMillis(100);
diff --git 
a/metrics/metrics-logger/src/main/java/org/apache/james/metrics/logger/DefaultMetricFactory.java
 
b/metrics/metrics-logger/src/main/java/org/apache/james/metrics/logger/DefaultMetricFactory.java
index e0aa75f..b253392 100644
--- 
a/metrics/metrics-logger/src/main/java/org/apache/james/metrics/logger/DefaultMetricFactory.java
+++ 
b/metrics/metrics-logger/src/main/java/org/apache/james/metrics/logger/DefaultMetricFactory.java
@@ -28,7 +28,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
 
 public class DefaultMetricFactory implements MetricFactory {
 
@@ -46,15 +45,15 @@ public class DefaultMetricFactory implements MetricFactory {
 
     @Override
     public <T> Publisher<T> decoratePublisherWithTimerMetric(String name, 
Publisher<T> publisher) {
-        return Mono.fromCallable(() -> timer(name))
-            .flatMapMany(timer ->  Flux.from(publisher)
-                .doOnComplete(timer::stopAndPublish));
+        return Flux.using(() -> timer(name),
+            any -> Flux.from(publisher),
+            TimeMetric::stopAndPublish);
     }
 
     @Override
     public <T> Publisher<T> decoratePublisherWithTimerMetricLogP99(String 
name, Publisher<T> publisher) {
-        return Mono.fromCallable(() -> timer(name))
-            .flatMapMany(timer ->  Flux.from(publisher)
-                .doOnComplete(() -> 
timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD)));
+        return Flux.using(() -> timer(name),
+            any -> Flux.from(publisher),
+            timer -> 
timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD));
     }
 }
diff --git 
a/metrics/metrics-tests/src/main/java/org/apache/james/metrics/tests/RecordingMetricFactory.java
 
b/metrics/metrics-tests/src/main/java/org/apache/james/metrics/tests/RecordingMetricFactory.java
index 78aeecd..f355e56 100644
--- 
a/metrics/metrics-tests/src/main/java/org/apache/james/metrics/tests/RecordingMetricFactory.java
+++ 
b/metrics/metrics-tests/src/main/java/org/apache/james/metrics/tests/RecordingMetricFactory.java
@@ -38,7 +38,6 @@ import com.google.common.collect.Multimap;
 import com.google.common.collect.Multimaps;
 
 import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
 
 public class RecordingMetricFactory implements MetricFactory {
     private final Multimap<String, Duration> executionTimes = 
Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
@@ -64,16 +63,16 @@ public class RecordingMetricFactory implements 
MetricFactory {
 
     @Override
     public <T> Publisher<T> decoratePublisherWithTimerMetric(String name, 
Publisher<T> publisher) {
-        return Mono.fromCallable(() -> timer(name))
-            .flatMapMany(timer ->  Flux.from(publisher)
-                .doOnComplete(timer::stopAndPublish));
+        return Flux.using(() -> timer(name),
+            any -> Flux.from(publisher),
+            TimeMetric::stopAndPublish);
     }
 
     @Override
     public <T> Publisher<T> decoratePublisherWithTimerMetricLogP99(String 
name, Publisher<T> publisher) {
-        return Mono.fromCallable(() -> timer(name))
-            .flatMapMany(timer ->  Flux.from(publisher)
-                .doOnComplete(() -> 
timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD)));
+        return Flux.using(() -> timer(name),
+            any -> Flux.from(publisher),
+            timer -> 
timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD));
     }
 
     public Collection<Duration> executionTimesFor(String name) {


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to