Skip to content

Commit

Permalink
WIP SimpleSpan
Browse files Browse the repository at this point in the history
  • Loading branch information
Adrian Cole committed Jul 19, 2017
1 parent a9c1795 commit 4e7ff56
Show file tree
Hide file tree
Showing 14 changed files with 1,682 additions and 15 deletions.
27 changes: 27 additions & 0 deletions benchmarks/src/main/java/zipkin/benchmarks/CodecBenchmarks.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
import org.openjdk.jmh.runner.options.OptionsBuilder;
import zipkin.Codec;
import zipkin.Endpoint;
import zipkin.simplespan.SimpleSpan;
import zipkin.simplespan.SimpleSpans;
import zipkin.Span;

/**
Expand Down Expand Up @@ -154,6 +156,31 @@ public byte[] writeClientSpan_thrift_libthrift() throws TException {
return serialize(clientSpanLibThrift);
}

static final byte[] simpleSpanJson = read("/span-simple.json");
static final SimpleSpan simpleSpan = SimpleSpans.fromJson(simpleSpanJson);
static final List<SimpleSpan> tenSimpleSpans = Collections.nCopies(10, simpleSpan);
static final byte[] tenSimpleSpansJson = SimpleSpans.toJson(tenSimpleSpans);

@Benchmark
public SimpleSpan readClientSpan_json_zipkin_simple() {
return SimpleSpans.fromJson(simpleSpanJson);
}

@Benchmark
public List<SimpleSpan> readTenClientSpans_json_zipkin_simple() {
return SimpleSpans.fromJsonList(tenSimpleSpansJson);
}

@Benchmark
public byte[] writeClientSpan_json_zipkin_simple() {
return SimpleSpans.toJson(simpleSpan);
}

@Benchmark
public byte[] writeTenClientSpans_json_zipkin_simple() {
return SimpleSpans.toJson(tenSimpleSpans);
}

static final byte[] rpcSpanJson = read("/span-rpc.json");
static final Span rpcSpan = Codec.JSON.readSpan(rpcSpanJson);
static final byte[] rpcSpanThrift = Codec.THRIFT.writeSpan(rpcSpan);
Expand Down
36 changes: 36 additions & 0 deletions benchmarks/src/main/java/zipkin/benchmarks/SpanBenchmarks.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import zipkin.BinaryAnnotation;
import zipkin.Constants;
import zipkin.Endpoint;
import zipkin.simplespan.SimpleSpan;
import zipkin.Span;
import zipkin.TraceKeys;
import zipkin.internal.Util;
Expand All @@ -50,9 +51,11 @@ public class SpanBenchmarks {
Endpoint.builder().serviceName("app").ipv4(172 << 24 | 17 << 16 | 2).port(8080).build();

final Span.Builder sharedBuilder;
final SimpleSpan.Builder sharedSimpleSpanBuilder;

public SpanBenchmarks() {
sharedBuilder = buildClientOnlySpan(Span.builder()).toBuilder();
sharedSimpleSpanBuilder = buildClientSimpleSpan().toBuilder();
}

@Benchmark
Expand Down Expand Up @@ -104,6 +107,39 @@ public Span buildClientOnlySpan_clear() {
return buildClientOnlySpan(sharedBuilder.clear());
}

@Benchmark
public SimpleSpan buildClientSimpleSpan() {
return buildClientSimpleSpan(SimpleSpan.builder());
}

static SimpleSpan buildClientSimpleSpan(SimpleSpan.Builder builder) {
return builder
.traceId(traceId)
.parentId(traceId)
.id(spanId)
.name("get")
.kind(SimpleSpan.Kind.CLIENT)
.localEndpoint(frontend)
.remoteEndpoint(backend)
.startTimestamp(1472470996199000L)
.finishTimestamp(1472470996199000L + 207000L)
.addAnnotation(1472470996238000L, Constants.WIRE_SEND)
.addAnnotation(1472470996403000L, Constants.WIRE_RECV)
.putTag(TraceKeys.HTTP_PATH, "/api")
.putTag("clnt/finagle.version", "6.45.0")
.build();
}

@Benchmark
public SimpleSpan buildClientSimpleSpan_clear() {
return buildClientSimpleSpan(sharedSimpleSpanBuilder.clear());
}

@Benchmark
public SimpleSpan buildClientSimpleSpan_clone() {
return sharedSimpleSpanBuilder.clone().build();
}

@Benchmark
public Span buildRpcSpan() {
return Span.builder() // web calls app
Expand Down
18 changes: 4 additions & 14 deletions benchmarks/src/main/resources/span-client.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,25 +40,16 @@
}
],
"binaryAnnotations": [
{
"key": "ca",
"value": true,
"endpoint": {
"serviceName": "frontend",
"ipv4": "127.0.0.1",
"port": 49504
}
},
{
"key": "clnt/finagle.version",
"value": "6.36.0",
"value": "6.45.0",
"endpoint": {
"serviceName": "frontend",
"ipv4": "127.0.0.1"
}
},
{
"key": "http.uri",
"key": "http.path",
"value": "/api",
"endpoint": {
"serviceName": "frontend",
Expand All @@ -70,10 +61,9 @@
"value": true,
"endpoint": {
"serviceName": "backend",
"ipv4": "127.0.0.1",
"ipv4": "192.168.99.101",
"port": 9000
}
}
],
"debug": false
]
}
32 changes: 32 additions & 0 deletions benchmarks/src/main/resources/span-simple.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"traceId": "86154a4ba6e91385",
"parentId": "86154a4ba6e91385",
"id": "4d1e00c0db9010db",
"kind": "CLIENT",
"name": "get",
"startTimestamp": 1472470996199000,
"finishTimestamp": 1472470996406000,
"localEndpoint": {
"serviceName": "frontend",
"ipv4": "127.0.0.1"
},
"remoteEndpoint": {
"serviceName": "backend",
"ipv4": "192.168.99.101",
"port": 9000
},
"annotations": [
{
"timestamp": 1472470996238000,
"value": "ws"
},
{
"timestamp": 1472470996403000,
"value": "wr"
}
],
"tags": {
"http.path": "/api",
"clnt/finagle.version": "6.45.0"
}
}
3 changes: 2 additions & 1 deletion zipkin/bnd.bnd
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ Export-Package: \
zipkin,\
zipkin.collector,\
zipkin.internal,\
zipkin.storage
zipkin.simplespan,\
zipkin.storage
6 changes: 6 additions & 0 deletions zipkin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@
</properties>

<dependencies>
<dependency>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
Expand Down
2 changes: 2 additions & 0 deletions zipkin/src/main/java/zipkin/Span.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import zipkin.internal.Nullable;
import zipkin.storage.StorageComponent;

import static zipkin.Constants.LOCAL_COMPONENT;
import static zipkin.internal.Util.UTF_8;
import static zipkin.internal.Util.checkNotNull;
import static zipkin.internal.Util.equal;
Expand Down
Loading

0 comments on commit 4e7ff56

Please sign in to comment.