Skip to content

Commit 59f96a2

Browse files
authored
Merge pull request #249 from DataDog/corentin.chary/fix-distrib-sampling
2 parents 1efa4fd + 495fb83 commit 59f96a2

3 files changed

Lines changed: 19 additions & 21 deletions

File tree

src/main/java/com/timgroup/statsd/NoOpDirectStatsDClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* A No-Op {@link NonBlockingDirectStatsDClient}, which can be substituted in when metrics are not
55
* required.
66
*/
7-
public final class NoOpDirectStatsDClient extends NoOpStatsDClient implements DirectStatsDClient {
7+
public class NoOpDirectStatsDClient extends NoOpStatsDClient implements DirectStatsDClient {
88
@Override public void recordDistributionValues(String aspect, double[] values, double sampleRate, String... tags) { }
99

1010
@Override public void recordDistributionValues(String aspect, long[] values, double sampleRate, String... tags) { }

src/main/java/com/timgroup/statsd/NonBlockingDirectStatsDClient.java

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,22 @@
11
package com.timgroup.statsd;
22

3-
import static java.nio.charset.StandardCharsets.UTF_8;
4-
5-
final class NonBlockingDirectStatsDClient extends NonBlockingStatsDClient implements DirectStatsDClient {
3+
class NonBlockingDirectStatsDClient extends NonBlockingStatsDClient implements DirectStatsDClient {
64

75
public NonBlockingDirectStatsDClient(final NonBlockingStatsDClientBuilder builder) throws StatsDClientException {
86
super(builder);
97
}
108

119
@Override
1210
public void recordDistributionValues(String aspect, double[] values, double sampleRate, String... tags) {
13-
if ((Double.isNaN(sampleRate) || !isInvalidSample(sampleRate)) && values != null && values.length > 0) {
14-
if (values.length == 1) {
15-
recordDistributionValue(aspect, values[0], sampleRate, tags);
16-
} else {
17-
sendMetric(new DoublesStatsDMessage(aspect, Message.Type.DISTRIBUTION, values, sampleRate, 0, tags));
18-
}
11+
if (values != null && values.length > 0) {
12+
sendMetric(new DoublesStatsDMessage(aspect, Message.Type.DISTRIBUTION, values, sampleRate, 0, tags));
1913
}
2014
}
2115

2216
@Override
2317
public void recordDistributionValues(String aspect, long[] values, double sampleRate, String... tags) {
24-
if ((Double.isNaN(sampleRate) || !isInvalidSample(sampleRate)) && values != null && values.length > 0) {
25-
if (values.length == 1) {
26-
recordDistributionValue(aspect, values[0], sampleRate, tags);
27-
} else {
28-
sendMetric(new LongsStatsDMessage(aspect, Message.Type.DISTRIBUTION, values, sampleRate, 0, tags));
29-
}
18+
if (values != null && values.length > 0) {
19+
sendMetric(new LongsStatsDMessage(aspect, Message.Type.DISTRIBUTION, values, sampleRate, 0, tags));
3020
}
3121
}
3222

src/test/java/com/timgroup/statsd/NonBlockingDirectStatsDClientTest.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ public void sends_multivalued_distribution_to_statsd_with_sampling_rate() {
8686
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:423:234|d|@1.000000")));
8787
}
8888

89+
@Test(timeout = 5000L)
90+
public void sends_multivalued_distribution_to_statsd_with_non_1_sampling_rate() {
91+
client.recordDistributionValues("mydistribution", new long[] { 423L, 234L }, 0.1);
92+
server.waitForMessage("my.prefix");
93+
94+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:423:234|d|@0.100000")));
95+
}
96+
8997
@Test(timeout = 5000L)
9098
public void sends_multivalued_distribution_to_statsd_with_tags_and_sampling_rate() {
9199
client.recordDistributionValues("mydistribution", new long[] { 423L, 234L }, 1, "foo:bar", "baz");
@@ -97,19 +105,19 @@ public void sends_multivalued_distribution_to_statsd_with_tags_and_sampling_rate
97105
@Test(timeout = 5000L)
98106
public void sends_too_long_multivalued_distribution_to_statsd() {
99107
long[] values = {423L, 234L, 456L, 512L, 345L, 898L, 959876543123L, 667L};
100-
client.recordDistributionValues("mydistribution", values, 1, "foo:bar", "baz");
108+
client.recordDistributionValues("mydistribution", values, 0.4, "foo:bar", "baz");
101109

102110
server.waitForMessage("my.prefix");
103-
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:423:234:456|d|@1.000000|#baz,foo:bar")));
111+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:423:234:456|d|@0.400000|#baz,foo:bar")));
104112

105113
server.waitForMessage("my.prefix");
106-
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:512:345:898|d|@1.000000|#baz,foo:bar")));
114+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:512:345:898|d|@0.400000|#baz,foo:bar")));
107115

108116
server.waitForMessage("my.prefix");
109-
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:959876543123|d|@1.000000|#baz,foo:bar")));
117+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:959876543123|d|@0.400000|#baz,foo:bar")));
110118

111119
server.waitForMessage("my.prefix");
112-
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:667|d|@1.000000|#baz,foo:bar")));
120+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:667|d|@0.400000|#baz,foo:bar")));
113121
}
114122

115123
}

0 commit comments

Comments
 (0)