You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zipkin.apache.org by ad...@apache.org on 2019/05/01 04:16:52 UTC

[incubator-zipkin] branch collector-normalization updated: backfills scribe metrics assertions

This is an automated email from the ASF dual-hosted git repository.

adriancole pushed a commit to branch collector-normalization
in repository https://gitbox.apache.org/repos/asf/incubator-zipkin.git


The following commit(s) were added to refs/heads/collector-normalization by this push:
     new 51c4f91  backfills scribe metrics assertions
51c4f91 is described below

commit 51c4f911ff38b56b55b45581466abde073e97c5b
Author: Adrian Cole <ac...@pivotal.io>
AuthorDate: Wed May 1 12:16:41 2019 +0800

    backfills scribe metrics assertions
---
 .../collector/scribe/ScribeSpanConsumerTest.java   | 102 +++++++++++++--------
 .../main/java/zipkin2/junit/ZipkinDispatcher.java  |  28 +++---
 .../test/java/zipkin2/junit/ZipkinRuleTest.java    |  13 +--
 3 files changed, 80 insertions(+), 63 deletions(-)

diff --git a/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeSpanConsumerTest.java b/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeSpanConsumerTest.java
index 10fa92b..567b87f 100644
--- a/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeSpanConsumerTest.java
+++ b/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeSpanConsumerTest.java
@@ -19,9 +19,7 @@ package zipkin2.collector.scribe;
 import java.util.Arrays;
 import java.util.Base64;
 import java.util.concurrent.ExecutionException;
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import zipkin2.Call;
 import zipkin2.Callback;
 import zipkin2.CheckResult;
@@ -39,11 +37,9 @@ import zipkin2.v1.V1SpanConverter;
 import static com.google.common.base.Charsets.UTF_8;
 import static java.util.Arrays.asList;
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.hamcrest.core.Is.isA;
+import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;
 
 public class ScribeSpanConsumerTest {
-
-  @Rule public ExpectedException thrown = ExpectedException.none();
   // scope to scribe as we aren't creating the consumer with the builder.
   InMemoryCollectorMetrics scribeMetrics = new InMemoryCollectorMetrics().forTransport("scribe");
 
@@ -98,16 +94,17 @@ public class ScribeSpanConsumerTest {
     assertThat(storage.getTraces()).containsExactly(asList(v2));
 
     assertThat(scribeMetrics.messages()).isEqualTo(1);
+    assertThat(scribeMetrics.messagesDropped()).isZero();
     assertThat(scribeMetrics.bytes()).isEqualTo(bytes.length);
     assertThat(scribeMetrics.spans()).isEqualTo(1);
+    assertThat(scribeMetrics.spansDropped()).isZero();
   }
 
   @Test
   public void entriesWithoutSpansAreSkipped() throws Exception {
-    SpanConsumer consumer =
-        (callback) -> {
-          throw new AssertionError(); // as we shouldn't get here.
-        };
+    SpanConsumer consumer = (callback) -> {
+      throw new AssertionError(); // as we shouldn't get here.
+    };
 
     ScribeSpanConsumer scribe = newScribeSpanConsumer("zipkin", consumer);
 
@@ -117,8 +114,11 @@ public class ScribeSpanConsumerTest {
 
     scribe.log(asList(entry)).get();
 
+    assertThat(scribeMetrics.messages()).isEqualTo(1);
+    assertThat(scribeMetrics.messagesDropped()).isZero();
     assertThat(scribeMetrics.bytes()).isZero();
     assertThat(scribeMetrics.spans()).isZero();
+    assertThat(scribeMetrics.spansDropped()).isZero();
   }
 
   @Test
@@ -129,10 +129,18 @@ public class ScribeSpanConsumerTest {
     entry.category = "zipkin";
     entry.message = "notbase64";
 
-    thrown.expect(ExecutionException.class); // from dereferenced future
-    thrown.expectCause(isA(IllegalArgumentException.class));
+    try {
+      scribe.log(asList(entry)).get();
+      failBecauseExceptionWasNotThrown(ExecutionException.class);
+    } catch (ExecutionException e) {
+      assertThat(e.getCause()).isInstanceOf(IllegalArgumentException.class);
+    }
 
-    scribe.log(asList(entry)).get();
+    assertThat(scribeMetrics.messages()).isEqualTo(1);
+    assertThat(scribeMetrics.messagesDropped()).isEqualTo(1);
+    assertThat(scribeMetrics.bytes()).isZero();
+    assertThat(scribeMetrics.spans()).isZero();
+    assertThat(scribeMetrics.spansDropped()).isZero();
   }
 
   @Test
@@ -147,10 +155,18 @@ public class ScribeSpanConsumerTest {
     entry.category = "zipkin";
     entry.message = encodedSpan;
 
-    thrown.expect(ExecutionException.class); // from dereferenced future
-    thrown.expectMessage("endpoint was null");
+    try {
+      scribe.log(asList(entry)).get();
+      failBecauseExceptionWasNotThrown(ExecutionException.class);
+    } catch (ExecutionException e) {
+      assertThat(e.getCause()).hasMessage("endpoint was null");
+    }
 
-    scribe.log(asList(entry)).get();
+    assertThat(scribeMetrics.messages()).isEqualTo(1);
+    assertThat(scribeMetrics.messagesDropped()).isZero();
+    assertThat(scribeMetrics.bytes()).isEqualTo(bytes.length);
+    assertThat(scribeMetrics.spans()).isEqualTo(1);
+    assertThat(scribeMetrics.spansDropped()).isEqualTo(1);
   }
 
   /**
@@ -182,6 +198,10 @@ public class ScribeSpanConsumerTest {
 
     scribe.log(asList(entry)).get();
 
+    assertThat(scribeMetrics.messages()).isEqualTo(1);
+    assertThat(scribeMetrics.messagesDropped()).isZero();
+    assertThat(scribeMetrics.bytes()).isEqualTo(bytes.length);
+    assertThat(scribeMetrics.spans()).isEqualTo(1);
     assertThat(scribeMetrics.spansDropped()).isEqualTo(1);
   }
 
@@ -197,34 +217,36 @@ public class ScribeSpanConsumerTest {
     newScribeSpanConsumer(entry.category, consumer).log(asList(entry)).get();
 
     assertThat(storage.getTraces()).containsExactly(asList(v2));
+
+    assertThat(scribeMetrics.messages()).isEqualTo(1);
+    assertThat(scribeMetrics.messagesDropped()).isZero();
+    assertThat(scribeMetrics.bytes())
+      .isEqualTo(Base64.getMimeDecoder().decode(entry.message).length);
+    assertThat(scribeMetrics.spans()).isEqualTo(1);
+    assertThat(scribeMetrics.spansDropped()).isZero();
   }
 
   ScribeSpanConsumer newScribeSpanConsumer(String category, SpanConsumer consumer) {
     return new ScribeSpanConsumer(
-        ScribeCollector.newBuilder()
-            .category(category)
-            .metrics(scribeMetrics)
-            .storage(
-                new StorageComponent() {
-                  @Override
-                  public SpanStore spanStore() {
-                    throw new AssertionError();
-                  }
-
-                  @Override
-                  public SpanConsumer spanConsumer() {
-                    return consumer;
-                  }
-
-                  @Override
-                  public CheckResult check() {
-                    return CheckResult.OK;
-                  }
-
-                  @Override
-                  public void close() {
-                    throw new AssertionError();
-                  }
-                }));
+      ScribeCollector.newBuilder()
+        .category(category)
+        .metrics(scribeMetrics)
+        .storage(new StorageComponent() {
+          @Override public SpanStore spanStore() {
+            throw new AssertionError();
+          }
+
+          @Override public SpanConsumer spanConsumer() {
+            return consumer;
+          }
+
+          @Override public CheckResult check() {
+            return CheckResult.OK;
+          }
+
+          @Override public void close() {
+            throw new AssertionError();
+          }
+        }));
   }
 }
diff --git a/zipkin-junit/src/main/java/zipkin2/junit/ZipkinDispatcher.java b/zipkin-junit/src/main/java/zipkin2/junit/ZipkinDispatcher.java
index 7f1ccda..a79d22b 100644
--- a/zipkin-junit/src/main/java/zipkin2/junit/ZipkinDispatcher.java
+++ b/zipkin-junit/src/main/java/zipkin2/junit/ZipkinDispatcher.java
@@ -66,8 +66,8 @@ final class ZipkinDispatcher extends Dispatcher {
   }
 
   MockResponse acceptSpans(RecordedRequest request, SpanBytesDecoder decoder) {
-    metrics.incrementMessages();
     byte[] body = request.getBody().readByteArray();
+    metrics.incrementMessages();
     String encoding = request.getHeader("Content-Encoding");
     if (encoding != null && encoding.contains("gzip")) {
       try {
@@ -80,23 +80,21 @@ final class ZipkinDispatcher extends Dispatcher {
         return new MockResponse().setResponseCode(400).setBody("Cannot gunzip spans");
       }
     }
+    metrics.incrementBytes(body.length);
 
     final MockResponse result = new MockResponse();
-    consumer.acceptSpans(
-        body,
-        decoder,
-        new Callback<Void>() {
-          @Override
-          public void onSuccess(Void value) {
-            result.setResponseCode(202);
-          }
+    if (body.length == 0) return result.setResponseCode(202); // lenient on empty
 
-          @Override
-          public void onError(Throwable t) {
-            String message = t.getMessage();
-            result.setBody(message).setResponseCode(message.startsWith("Cannot store") ? 500 : 400);
-          }
-        });
+    consumer.acceptSpans(body, decoder, new Callback<Void>() {
+      @Override public void onSuccess(Void value) {
+        result.setResponseCode(202);
+      }
+
+      @Override public void onError(Throwable t) {
+        String message = t.getMessage();
+        result.setBody(message).setResponseCode(message.startsWith("Cannot store") ? 500 : 400);
+      }
+    });
     return result;
   }
 }
diff --git a/zipkin-junit/src/test/java/zipkin2/junit/ZipkinRuleTest.java b/zipkin-junit/src/test/java/zipkin2/junit/ZipkinRuleTest.java
index 0e01c38..be379c7 100644
--- a/zipkin-junit/src/test/java/zipkin2/junit/ZipkinRuleTest.java
+++ b/zipkin-junit/src/test/java/zipkin2/junit/ZipkinRuleTest.java
@@ -178,14 +178,11 @@ public class ZipkinRuleTest {
     gzipSink.close();
     ByteString gzippedJson = sink.readByteString();
 
-    client
-        .newCall(
-            new Request.Builder()
-                .url(zipkin.httpUrl() + "/api/v1/spans")
-                .addHeader("Content-Encoding", "gzip")
-                .post(RequestBody.create(MediaType.parse("application/json"), gzippedJson))
-                .build())
-        .execute();
+    client.newCall(new Request.Builder()
+      .url(zipkin.httpUrl() + "/api/v1/spans")
+      .addHeader("Content-Encoding", "gzip")
+      .post(RequestBody.create(MediaType.parse("application/json"), gzippedJson))
+      .build()).execute();
 
     assertThat(zipkin.collectorMetrics().bytes()).isEqualTo(spansInJson.length);
   }