Skip to content

Commit 24635e6

Browse files
authored
The counter indicator increases by 2 each time (on happy path) (OpenFeign#1548)
* The counter indicator increases by 2 each time (on happy path). * Add test coverage * Make test beaty again * Fix license header * Move new tests to the common abstract class
1 parent afc1d67 commit 24635e6

6 files changed

Lines changed: 62 additions & 1 deletion

File tree

dropwizard-metrics4/src/test/java/feign/metrics4/Metrics4CapabilityTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
*/
1414
package feign.metrics4;
1515

16+
import com.codahale.metrics.Metered;
1617
import com.codahale.metrics.Metric;
1718
import com.codahale.metrics.MetricRegistry;
1819
import feign.Capability;
@@ -99,4 +100,14 @@ protected boolean doesMetricIncludeUri(String metricId, String uri) {
99100
return metricId.contains(uri);
100101
}
101102

103+
@Override
104+
protected boolean doesMetricHasCounter(Metric metric) {
105+
return metric instanceof Metered;
106+
}
107+
108+
@Override
109+
protected long getMetricCounter(Metric metric) {
110+
return ((Metered) metric).getCount();
111+
}
112+
102113
}

dropwizard-metrics5/src/test/java/feign/metrics5/Metrics5CapabilityTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import feign.Capability;
2121
import feign.Util;
2222
import feign.micrometer.AbstractMetricsTestBase;
23+
import io.dropwizard.metrics5.Metered;
2324
import io.dropwizard.metrics5.Metric;
2425
import io.dropwizard.metrics5.MetricName;
2526
import io.dropwizard.metrics5.MetricRegistry;
@@ -103,4 +104,14 @@ protected boolean doesMetricIncludeUri(MetricName metricId, String uri) {
103104
return uri.equals(metricId.getTags().get("uri"));
104105
}
105106

107+
@Override
108+
protected boolean doesMetricHasCounter(Metric metric) {
109+
return metric instanceof Metered;
110+
}
111+
112+
@Override
113+
protected long getMetricCounter(Metric metric) {
114+
return ((Metered) metric).getCount();
115+
}
116+
106117
}

micrometer/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@
4444
<artifactId>micrometer-core</artifactId>
4545
<version>1.3.5</version>
4646
</dependency>
47+
<dependency>
48+
<groupId>org.mockito</groupId>
49+
<artifactId>mockito-core</artifactId>
50+
<version>${mockito.version}</version>
51+
<scope>test</scope>
52+
</dependency>
4753
<dependency>
4854
<groupId>org.hamcrest</groupId>
4955
<artifactId>hamcrest</artifactId>

micrometer/src/main/java/feign/micrometer/MeteredClient.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ public Response execute(Request request, Options options) throws IOException {
5454
final Response response = client.execute(request, options);
5555
countResponseCode(request, response, options, response.status(), null);
5656
timer = createTimer(request, response, options, null);
57-
sample.stop(timer);
5857
return response;
5958
} catch (FeignException e) {
6059
timer = createTimer(request, null, options, e);

micrometer/src/test/java/feign/micrometer/AbstractMetricsTestBase.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ public final void addMetricsCapability() {
6565
metrics.keySet().forEach(metricId -> assertThat(
6666
"Expect all metric names to include host name:" + metricId,
6767
doesMetricIncludeHost(metricId)));
68+
69+
final Map<METRIC_ID, METRIC> clientMetrics = getFeignMetrics().entrySet().stream()
70+
.filter(entry -> isClientMetric(entry.getKey()))
71+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
72+
73+
clientMetrics.values().stream()
74+
.filter(this::doesMetricHasCounter)
75+
.forEach(metric -> assertEquals(1, getMetricCounter(metric)));
76+
6877
}
6978

7079
protected abstract boolean doesMetricIncludeHost(METRIC_ID metricId);
@@ -221,4 +230,8 @@ public void decoderExceptionCounterHasUriLabelWithPathExpression() {
221230

222231
protected abstract boolean doesMetricIncludeUri(METRIC_ID metricId, String uri);
223232

233+
protected abstract boolean doesMetricHasCounter(METRIC metric);
234+
235+
protected abstract long getMetricCounter(METRIC metric);
236+
224237
}

micrometer/src/test/java/feign/micrometer/MicrometerCapabilityTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import feign.Capability;
1717
import feign.Util;
18+
import io.micrometer.core.instrument.Measurement;
1819
import io.micrometer.core.instrument.Meter;
1920
import io.micrometer.core.instrument.Meter.Id;
2021
import io.micrometer.core.instrument.MockClock;
@@ -113,4 +114,24 @@ protected boolean doesMetricIncludeUri(Id metricId, String uri) {
113114
return uri.equals(metricId.getTag("uri"));
114115
}
115116

117+
@Override
118+
protected boolean doesMetricHasCounter(Meter meter) {
119+
for (Measurement measurement : meter.measure()) {
120+
if ("COUNT".equals(measurement.getStatistic().name())) {
121+
return true;
122+
}
123+
}
124+
return false;
125+
}
126+
127+
@Override
128+
protected long getMetricCounter(Meter meter) {
129+
for (Measurement measurement : meter.measure()) {
130+
if ("COUNT".equals(measurement.getStatistic().name())) {
131+
return (long) measurement.getValue();
132+
}
133+
}
134+
return 0;
135+
}
136+
116137
}

0 commit comments

Comments
 (0)