From be1b986becc35eb69c1c6a5ab3c0335e35cf7c70 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Wed, 24 Feb 2016 12:56:04 +0800 Subject: [PATCH] Refactors HTTP SpanReporter tests to use ZipkinRule This replaces direct usage of MockWebServer with ZipkinRule. --- spring-cloud-sleuth-dependencies/pom.xml | 7 +++- spring-cloud-sleuth-samples/pom.xml | 4 +-- spring-cloud-sleuth-zipkin/pom.xml | 5 ++- .../zipkin/HttpZipkinSpanReporterTest.java | 35 ++++++++----------- 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/spring-cloud-sleuth-dependencies/pom.xml b/spring-cloud-sleuth-dependencies/pom.xml index 65e9461f5..f189a865b 100644 --- a/spring-cloud-sleuth-dependencies/pom.xml +++ b/spring-cloud-sleuth-dependencies/pom.xml @@ -17,7 +17,7 @@ 3.4.0 1.1.0.BUILD-SNAPSHOT 1.8.4 - 0.5.3 + 0.5.5 @@ -88,6 +88,11 @@ spanstore-jdbc ${zipkin-java.version} + + io.zipkin.java + zipkin-junit + ${zipkin-java.version} + diff --git a/spring-cloud-sleuth-samples/pom.xml b/spring-cloud-sleuth-samples/pom.xml index 08e5d0944..95cc70d70 100644 --- a/spring-cloud-sleuth-samples/pom.xml +++ b/spring-cloud-sleuth-samples/pom.xml @@ -62,12 +62,12 @@ io.zipkin.java zipkin - 0.5.3 + 0.5.5 io.zipkin.java zipkin-server - 0.5.3 + 0.5.5 diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml index 25b12f09f..580d30f49 100644 --- a/spring-cloud-sleuth-zipkin/pom.xml +++ b/spring-cloud-sleuth-zipkin/pom.xml @@ -56,9 +56,8 @@ test - com.squareup.okhttp3 - mockwebserver - 3.0.0 + io.zipkin.java + zipkin-junit test diff --git a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/HttpZipkinSpanReporterTest.java b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/HttpZipkinSpanReporterTest.java index b42bd18c1..e8ebf0f7f 100644 --- a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/HttpZipkinSpanReporterTest.java +++ b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/HttpZipkinSpanReporterTest.java @@ -1,36 +1,33 @@ package org.springframework.cloud.sleuth.zipkin; -import okhttp3.mockwebserver.MockResponse; -import okhttp3.mockwebserver.MockWebServer; -import okhttp3.mockwebserver.RecordedRequest; -import okhttp3.mockwebserver.SocketPolicy; import org.junit.Rule; import org.junit.Test; import org.springframework.cloud.sleuth.metric.CounterServiceBasedSpanReporterService; import org.springframework.cloud.sleuth.metric.SpanReporterService; -import zipkin.Codec; import zipkin.Span; -import java.util.List; +import zipkin.junit.HttpFailure; +import zipkin.junit.ZipkinRule; +import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; public class HttpZipkinSpanReporterTest { - @Rule public final MockWebServer server = new MockWebServer(); + @Rule public final ZipkinRule zipkin = new ZipkinRule(); InMemorySpanCounter inMemorySpanCounter = new InMemorySpanCounter(); SpanReporterService spanReporterService = new CounterServiceBasedSpanReporterService("accepted", "dropped", this.inMemorySpanCounter); // set flush interval to 0 so that tests can drive flushing explicitly HttpZipkinSpanReporter reporter = new HttpZipkinSpanReporter( - this.server.url("").toString(), 0, this.spanReporterService); + this.zipkin.httpUrl(), 0, this.spanReporterService); @Test public void reportDoesntDoIO() throws Exception { this.reporter.report(span(1L, "foo")); - assertThat(this.server.getRequestCount()).isZero(); + assertThat(this.zipkin.httpRequestCount()).isZero(); } @Test @@ -52,26 +49,23 @@ public class HttpZipkinSpanReporterTest { @Test public void postsSpans() throws Exception { - this.server.enqueue(new MockResponse()); - this.reporter.report(span(1L, "foo")); this.reporter.report(span(2L, "bar")); this.reporter.flush(); // manually flush the spans - // Ensure a proper request was sent - RecordedRequest request = this.server.takeRequest(); - assertThat(request.getRequestLine()).isEqualTo("POST /api/v1/spans HTTP/1.1"); - assertThat(request.getHeader("Content-Type")).isEqualTo("application/json"); + // Ensure only one request was sent + assertThat(this.zipkin.httpRequestCount()).isEqualTo(1); - // Now, let's read back the spans we sent! - List zipkinSpans = Codec.JSON.readSpans(request.getBody().readByteArray()); - assertThat(zipkinSpans).containsExactly(span(1L, "foo"), span(2L, "bar")); + assertThat(this.zipkin.getTraces()).containsExactly( + asList(span(1L, "foo")), + asList(span(2L, "bar")) + ); } @Test public void incrementsDroppedSpansWhenServerErrors() throws Exception { - this.server.enqueue(new MockResponse().setResponseCode(500)); + this.zipkin.enqueueFailure(HttpFailure.sendErrorResponse(500, "Ouch")); this.reporter.report(span(1L, "foo")); this.reporter.report(span(2L, "bar")); @@ -83,8 +77,7 @@ public class HttpZipkinSpanReporterTest { @Test public void incrementsDroppedSpansWhenServerDisconnects() throws Exception { - this.server.enqueue(new MockResponse() - .setSocketPolicy(SocketPolicy.DISCONNECT_AFTER_REQUEST)); + this.zipkin.enqueueFailure(HttpFailure.disconnectDuringBody()); this.reporter.report(span(1L, "foo")); this.reporter.report(span(2L, "bar"));