Skip to content

Commit

Permalink
Remove dependency on Hamcrest
Browse files Browse the repository at this point in the history
  • Loading branch information
joschi committed Dec 14, 2023
1 parent d00c267 commit eecb898
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 119 deletions.
6 changes: 0 additions & 6 deletions metrics-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,6 @@
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>${hamcrest.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package io.dropwizard.metrics5;

import static io.dropwizard.metrics5.SlidingTimeWindowMovingAverages.NUMBER_OF_BUCKETS;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.time.Instant;

import io.dropwizard.metrics5.SlidingTimeWindowMovingAverages;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static io.dropwizard.metrics5.SlidingTimeWindowMovingAverages.NUMBER_OF_BUCKETS;
import static org.assertj.core.api.Assertions.assertThat;

class SlidingTimeWindowMovingAveragesTest {

Expand All @@ -29,25 +26,25 @@ void normalizeIndex() {

SlidingTimeWindowMovingAverages stwm = new SlidingTimeWindowMovingAverages();

assertThat(stwm.normalizeIndex(0), is(0));
assertThat(stwm.normalizeIndex(900), is(0));
assertThat(stwm.normalizeIndex(9000), is(0));
assertThat(stwm.normalizeIndex(-900), is(0));
assertThat(stwm.normalizeIndex(0)).isEqualTo(0);
assertThat(stwm.normalizeIndex(900)).isEqualTo(0);
assertThat(stwm.normalizeIndex(9000)).isEqualTo(0);
assertThat(stwm.normalizeIndex(-900)).isEqualTo(0);

assertThat(stwm.normalizeIndex(1), is(1));
assertThat(stwm.normalizeIndex(1)).isEqualTo(1);

assertThat(stwm.normalizeIndex(899), is(899));
assertThat(stwm.normalizeIndex(-1), is(899));
assertThat(stwm.normalizeIndex(-901), is(899));
assertThat(stwm.normalizeIndex(899)).isEqualTo(899);
assertThat(stwm.normalizeIndex(-1)).isEqualTo(899);
assertThat(stwm.normalizeIndex(-901)).isEqualTo(899);
}

@Test
void calculateIndexOfTick() {

SlidingTimeWindowMovingAverages stwm = new SlidingTimeWindowMovingAverages(clock);

assertThat(stwm.calculateIndexOfTick(Instant.ofEpochSecond(0L)), is(0));
assertThat(stwm.calculateIndexOfTick(Instant.ofEpochSecond(1L)), is(1));
assertThat(stwm.calculateIndexOfTick(Instant.ofEpochSecond(0L))).isEqualTo(0);
assertThat(stwm.calculateIndexOfTick(Instant.ofEpochSecond(1L))).isEqualTo(1);
}

@Test
Expand All @@ -64,11 +61,11 @@ void mark_max_without_cleanup() {
}

// verify that no cleanup happened yet
assertThat(movingAverages.oldestBucketTime, is(Instant.ofEpochSecond(0L)));
assertThat(movingAverages.oldestBucketTime).isEqualTo(Instant.ofEpochSecond(0L));

assertThat(meter.getOneMinuteRate(), is(60.0));
assertThat(meter.getFiveMinuteRate(), is(300.0));
assertThat(meter.getFifteenMinuteRate(), is(900.0));
assertThat(meter.getOneMinuteRate()).isEqualTo(60.0);
assertThat(meter.getFiveMinuteRate()).isEqualTo(300.0);
assertThat(meter.getFifteenMinuteRate()).isEqualTo(900.0);
}

@Test
Expand All @@ -85,11 +82,11 @@ void mark_first_cleanup() {
}

// verify that at least one cleanup happened
assertThat(movingAverages.oldestBucketTime, not(is(Instant.ofEpochSecond(0L))));
assertThat(movingAverages.oldestBucketTime).isNotEqualTo(Instant.EPOCH);

assertThat(meter.getOneMinuteRate(), is(60.0));
assertThat(meter.getFiveMinuteRate(), is(300.0));
assertThat(meter.getFifteenMinuteRate(), is(900.0));
assertThat(meter.getOneMinuteRate()).isEqualTo(60.0);
assertThat(meter.getFiveMinuteRate()).isEqualTo(300.0);
assertThat(meter.getFifteenMinuteRate()).isEqualTo(900.0);
}

@Test
Expand All @@ -103,10 +100,10 @@ void mark_10_values() {
meter.mark();
}

assertThat(meter.getCount(), is(10L));
assertThat(meter.getOneMinuteRate(), is(10.0));
assertThat(meter.getFiveMinuteRate(), is(10.0));
assertThat(meter.getFifteenMinuteRate(), is(10.0));
assertThat(meter.getCount()).isEqualTo(10L);
assertThat(meter.getOneMinuteRate()).isEqualTo(10.0);
assertThat(meter.getFiveMinuteRate()).isEqualTo(10.0);
assertThat(meter.getFifteenMinuteRate()).isEqualTo(10.0);
}

@Test
Expand All @@ -118,9 +115,9 @@ void mark_1000_values() {
}

// only 60/300/900 of the 1000 events took place in the last 1/5/15 minute(s)
assertThat(meter.getOneMinuteRate(), is(60.0));
assertThat(meter.getFiveMinuteRate(), is(300.0));
assertThat(meter.getFifteenMinuteRate(), is(900.0));
assertThat(meter.getOneMinuteRate()).isEqualTo(60.0);
assertThat(meter.getFiveMinuteRate()).isEqualTo(300.0);
assertThat(meter.getFifteenMinuteRate()).isEqualTo(900.0);
}

@Test
Expand All @@ -130,9 +127,9 @@ void cleanup_pause_shorter_than_window() {

// no mark for three minutes
clock.addSeconds(180);
assertThat(meter.getOneMinuteRate(), is(0.0));
assertThat(meter.getFiveMinuteRate(), is(10.0));
assertThat(meter.getFifteenMinuteRate(), is(10.0));
assertThat(meter.getOneMinuteRate()).isEqualTo(0.0);
assertThat(meter.getFiveMinuteRate()).isEqualTo(10.0);
assertThat(meter.getFifteenMinuteRate()).isEqualTo(10.0);
}

@Test
Expand All @@ -144,15 +141,15 @@ void cleanup_window_wrap_around() {

// and query at 15:30 minutes (the bucket index must have wrapped around)
clock.addSeconds(50);
assertThat(meter.getOneMinuteRate(), is(10.0));
assertThat(meter.getFiveMinuteRate(), is(10.0));
assertThat(meter.getFifteenMinuteRate(), is(10.0));
assertThat(meter.getOneMinuteRate()).isEqualTo(10.0);
assertThat(meter.getFiveMinuteRate()).isEqualTo(10.0);
assertThat(meter.getFifteenMinuteRate()).isEqualTo(10.0);

// and query at 30:10 minutes (the bucket index must have wrapped around for the second time)
clock.addSeconds(880);
assertThat(meter.getOneMinuteRate(), is(0.0));
assertThat(meter.getFiveMinuteRate(), is(0.0));
assertThat(meter.getFifteenMinuteRate(), is(0.0));
assertThat(meter.getOneMinuteRate()).isEqualTo(0.0);
assertThat(meter.getFiveMinuteRate()).isEqualTo(0.0);
assertThat(meter.getFifteenMinuteRate()).isEqualTo(0.0);
}

@Test
Expand All @@ -162,8 +159,8 @@ void cleanup_pause_longer_than_two_windows() {

// after forty minutes all rates should be zero
clock.addSeconds(2400);
assertThat(meter.getOneMinuteRate(), is(0.0));
assertThat(meter.getFiveMinuteRate(), is(0.0));
assertThat(meter.getFifteenMinuteRate(), is(0.0));
assertThat(meter.getOneMinuteRate()).isEqualTo(0.0);
assertThat(meter.getFiveMinuteRate()).isEqualTo(0.0);
assertThat(meter.getFifteenMinuteRate()).isEqualTo(0.0);
}
}
6 changes: 0 additions & 6 deletions metrics-httpclient/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,6 @@
<artifactId>httpclient</artifactId>
<version>${http-client.version}</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>${hamcrest.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,92 +16,89 @@
import static io.dropwizard.metrics5.httpclient.HttpClientMetricNameStrategies.METHOD_ONLY;
import static io.dropwizard.metrics5.httpclient.HttpClientMetricNameStrategies.PATH_AND_METHOD;
import static io.dropwizard.metrics5.httpclient.HttpClientMetricNameStrategies.QUERYLESS_URL_AND_METHOD;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.assertj.core.api.Assertions.assertThat;

class HttpClientMetricNameStrategiesTest {

@Test
void methodOnlyWithName() {
assertThat(METHOD_ONLY.getNameFor("some-service", new HttpGet("/whatever")),
is(MetricName.build("org.apache.http.client.HttpClient.some-service.get-requests")));
assertThat(METHOD_ONLY.getNameFor("some-service", new HttpGet("/whatever")))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.some-service.get-requests"));
}

@Test
void methodOnlyWithoutName() {
assertThat(METHOD_ONLY.getNameFor(null, new HttpGet("/whatever")),
is(MetricName.build("org.apache.http.client.HttpClient.get-requests")));
assertThat(METHOD_ONLY.getNameFor(null, new HttpGet("/whatever")))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.get-requests"));
}

@Test
void hostAndMethodWithName() {
assertThat(HOST_AND_METHOD.getNameFor("some-service", new HttpPost("http://my.host.com/whatever")),
is(MetricName.build("org.apache.http.client.HttpClient.some-service.my.host.com.post-requests")));
assertThat(HOST_AND_METHOD.getNameFor("some-service", new HttpPost("http://my.host.com/whatever")))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.some-service.my.host.com.post-requests"));
}

@Test
void hostAndMethodWithoutName() {
assertThat(HOST_AND_METHOD.getNameFor(null, new HttpPost("http://my.host.com/whatever")),
is(MetricName.build("org.apache.http.client.HttpClient.my.host.com.post-requests")));
assertThat(HOST_AND_METHOD.getNameFor(null, new HttpPost("http://my.host.com/whatever")))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.my.host.com.post-requests"));
}

@Test
void hostAndMethodWithNameInWrappedRequest() throws URISyntaxException {
HttpRequest request = rewriteRequestURI(new HttpPost("http://my.host.com/whatever"));

assertThat(HOST_AND_METHOD.getNameFor("some-service", request),
is(MetricName.build("org.apache.http.client.HttpClient.some-service.my.host.com.post-requests")));
assertThat(HOST_AND_METHOD.getNameFor("some-service", request))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.some-service.my.host.com.post-requests"));
}

@Test
void hostAndMethodWithoutNameInWrappedRequest() throws URISyntaxException {
HttpRequest request = rewriteRequestURI(new HttpPost("http://my.host.com/whatever"));

assertThat(HOST_AND_METHOD.getNameFor(null, request),
is(MetricName.build("org.apache.http.client.HttpClient.my.host.com.post-requests")));
assertThat(HOST_AND_METHOD.getNameFor(null, request))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.my.host.com.post-requests"));
}

@Test
void pathAndMethodWithName() {
assertThat(PATH_AND_METHOD.getNameFor("some-service", new HttpPost("http://my.host.com/whatever/happens")),
is(MetricName.build("org.apache.http.client.HttpClient.some-service./whatever/happens.post-requests")));
assertThat(PATH_AND_METHOD.getNameFor("some-service", new HttpPost("http://my.host.com/whatever/happens")))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.some-service./whatever/happens.post-requests"));
}

@Test
void pathAndMethodWithoutName() {
assertThat(PATH_AND_METHOD.getNameFor(null, new HttpPost("http://my.host.com/whatever/happens")),
is(MetricName.build("org.apache.http.client.HttpClient./whatever/happens.post-requests")));
assertThat(PATH_AND_METHOD.getNameFor(null, new HttpPost("http://my.host.com/whatever/happens")))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient./whatever/happens.post-requests"));
}

@Test
void pathAndMethodWithNameInWrappedRequest() throws URISyntaxException {
HttpRequest request = rewriteRequestURI(new HttpPost("http://my.host.com/whatever/happens"));
assertThat(PATH_AND_METHOD.getNameFor("some-service", request),
is(MetricName.build("org.apache.http.client.HttpClient.some-service./whatever/happens.post-requests")));
assertThat(PATH_AND_METHOD.getNameFor("some-service", request))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.some-service./whatever/happens.post-requests"));
}

@Test
void pathAndMethodWithoutNameInWrappedRequest() throws URISyntaxException {
HttpRequest request = rewriteRequestURI(new HttpPost("http://my.host.com/whatever/happens"));
assertThat(PATH_AND_METHOD.getNameFor(null, request),
is(MetricName.build("org.apache.http.client.HttpClient./whatever/happens.post-requests")));
assertThat(PATH_AND_METHOD.getNameFor(null, request))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient./whatever/happens.post-requests"));
}

@Test
void querylessUrlAndMethodWithName() {
assertThat(QUERYLESS_URL_AND_METHOD.getNameFor(
"some-service",
new HttpPut("https://thing.com:8090/my/path?ignore=this&and=this")),
is(MetricName.build("org.apache.http.client.HttpClient.some-service.https://thing.com:8090/my/path.put-requests")));
"some-service",
new HttpPut("https://thing.com:8090/my/path?ignore=this&and=this")))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.some-service.https://thing.com:8090/my/path.put-requests"));
}

@Test
void querylessUrlAndMethodWithNameInWrappedRequest() throws URISyntaxException {
HttpRequest request = rewriteRequestURI(new HttpPut("https://thing.com:8090/my/path?ignore=this&and=this"));
assertThat(QUERYLESS_URL_AND_METHOD.getNameFor(
"some-service",
request),
is(MetricName.build("org.apache.http.client.HttpClient.some-service.https://thing.com:8090/my/path.put-requests")));
assertThat(QUERYLESS_URL_AND_METHOD.getNameFor("some-service", request))
.isEqualTo(MetricName.build("org.apache.http.client.HttpClient.some-service.https://thing.com:8090/my/path.put-requests"));
}

private static HttpRequest rewriteRequestURI(HttpRequest request) throws URISyntaxException {
Expand Down
6 changes: 0 additions & 6 deletions metrics-httpclient5/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,6 @@
<groupId>org.apache.httpcomponents.core5</groupId>
<artifactId>httpcore5</artifactId>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>${hamcrest.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
Expand Down
Loading

0 comments on commit eecb898

Please sign in to comment.