Skip to content

Commit 9a24885

Browse files
committed
test: Moar tests
1 parent 8a7d7ea commit 9a24885

File tree

3 files changed

+110
-9
lines changed

3 files changed

+110
-9
lines changed

src/test/java/com/spotify/github/tracing/OpenCensusSpanTest.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,40 @@ public void failOnServerError() {
6666
verify(wrapped).end();
6767
}
6868

69+
@Test
70+
@SuppressWarnings("deprecation")
71+
public void succeedDeprecated() {
72+
final Span span = new com.spotify.github.opencensus.OpenCensusSpan(wrapped);
73+
span.success();
74+
span.close();
75+
76+
verify(wrapped).setStatus(Status.OK);
77+
verify(wrapped).end();
78+
}
79+
80+
@Test
81+
@SuppressWarnings("deprecation")
82+
public void failDeprecated() {
83+
final Span span = new com.spotify.github.opencensus.OpenCensusSpan(wrapped);
84+
span.failure(new RequestNotOkException("method", "path", 404, "Not found", Collections.emptyMap()));
85+
span.close();
86+
87+
verify(wrapped).setStatus(Status.UNKNOWN);
88+
verify(wrapped).putAttribute("http.status_code", AttributeValue.longAttributeValue(404));
89+
verify(wrapped).end();
90+
}
91+
92+
@Test
93+
@SuppressWarnings("deprecation")
94+
public void failOnServerErrorDeprecated() {
95+
final Span span = new com.spotify.github.opencensus.OpenCensusSpan(wrapped);
96+
span.failure(new RequestNotOkException("method", "path", 500, "Internal Server Error", Collections.emptyMap()));
97+
span.close();
98+
99+
verify(wrapped).setStatus(Status.UNKNOWN);
100+
verify(wrapped).putAttribute("http.status_code", AttributeValue.longAttributeValue(500));
101+
verify(wrapped).putAttribute("error", AttributeValue.booleanAttributeValue(true));
102+
verify(wrapped).end();
103+
}
104+
69105
}

src/test/java/com/spotify/github/tracing/OpenCensusTracerTest.java

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
import io.opencensus.trace.samplers.Samplers;
3232
import io.opencensus.trace.unsafe.ContextUtils;
3333
import okhttp3.Call;
34+
import okhttp3.HttpUrl;
3435
import okhttp3.OkHttpClient;
36+
import okhttp3.Request;
3537
import org.junit.jupiter.api.BeforeAll;
3638
import org.junit.jupiter.api.BeforeEach;
3739
import org.junit.jupiter.api.Test;
@@ -43,6 +45,8 @@
4345
import static io.opencensus.trace.AttributeValue.stringAttributeValue;
4446
import static org.junit.jupiter.api.Assertions.assertEquals;
4547
import static org.junit.jupiter.api.Assertions.assertNotNull;
48+
import static org.mockito.Mockito.mock;
49+
import static org.mockito.Mockito.when;
4650

4751
public class OpenCensusTracerTest {
4852

@@ -56,7 +60,7 @@ public class OpenCensusTracerTest {
5660
* rootSpan set as the parent.
5761
*/
5862
@Test
59-
public void testTrace_CompletionStage_Simple() throws Exception {
63+
public void traceCompletionStageSimple() throws Exception {
6064
io.opencensus.trace.Span rootSpan = startRootSpan();
6165
final CompletableFuture<String> future = new CompletableFuture<>();
6266
OpenCensusTracer tracer = new OpenCensusTracer();
@@ -82,7 +86,7 @@ public void testTrace_CompletionStage_Simple() throws Exception {
8286
}
8387

8488
@Test
85-
public void testTrace_CompletionStage_Fails() throws Exception {
89+
public void traceCompletionStageFails() throws Exception {
8690
io.opencensus.trace.Span rootSpan = startRootSpan();
8791
final CompletableFuture<String> future = new CompletableFuture<>();
8892
OpenCensusTracer tracer = new OpenCensusTracer();
@@ -108,13 +112,45 @@ public void testTrace_CompletionStage_Fails() throws Exception {
108112
}
109113

110114
@Test
111-
public void test_createTracedClient() {
115+
public void traceCompletionStageWithRequest() throws Exception {
116+
io.opencensus.trace.Span rootSpan = startRootSpan();
117+
OpenCensusTracer tracer = new OpenCensusTracer();
118+
final CompletableFuture<String> future = new CompletableFuture<>();
119+
Request mockRequest = mock(Request.class);
120+
when(mockRequest.url()).thenReturn(HttpUrl.parse("https://api.github.com/repos/spotify/github-java-client"));
121+
when(mockRequest.method()).thenReturn("GET");
122+
123+
try(com.spotify.github.tracing.Span span = tracer.span(mockRequest)){
124+
tracer.attachSpanToFuture(span, future);
125+
future.complete("all done");
126+
}
127+
rootSpan.end();
128+
129+
List<SpanData> exportedSpans = spanExporterHandler.waitForSpansToBeExported(2);
130+
assertEquals(2, exportedSpans.size());
131+
132+
SpanData root = findSpan(exportedSpans, rootSpanName);
133+
SpanData inner = findSpan(exportedSpans, "GitHub Request");
134+
135+
assertEquals(root.getContext().getTraceId(), inner.getContext().getTraceId());
136+
assertEquals(root.getContext().getSpanId(), inner.getParentSpanId());
137+
final Map<String, AttributeValue> attributes = inner.getAttributes().getAttributeMap();
138+
assertEquals(stringAttributeValue("github-api-client"), attributes.get("component"));
139+
assertEquals(stringAttributeValue("github"), attributes.get("peer.service"));
140+
assertEquals(stringAttributeValue("https://api.github.com/repos/spotify/github-java-client"), attributes.get("http.url"));
141+
assertEquals(stringAttributeValue("GET"), attributes.get("method"));
142+
assertEquals(Status.OK, inner.getStatus());
143+
}
144+
145+
@Test
146+
public void createTracedClient() {
112147
OpenCensusTracer tracer = new OpenCensusTracer();
113148
OkHttpClient client = new OkHttpClient.Builder().build();
114149
Call.Factory callFactory = tracer.createTracedClient(client);
115150
assertNotNull(callFactory);
116151
}
117152

153+
@SuppressWarnings("deprecation")
118154
private io.opencensus.trace.Span startRootSpan() {
119155
Span rootSpan = Tracing.getTracer().spanBuilder(rootSpanName).startSpan();
120156
Context context = ContextUtils.withValue(Context.current(), rootSpan);

src/test/java/com/spotify/github/tracing/OpenTelemetryTracerTest.java

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@
3535
import io.opentelemetry.sdk.trace.data.SpanData;
3636
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
3737
import io.opentelemetry.sdk.trace.samplers.Sampler;
38-
import okhttp3.Call;
39-
import okhttp3.Interceptor;
40-
import okhttp3.OkHttpClient;
38+
import okhttp3.*;
4139
import org.junit.jupiter.api.AfterEach;
4240
import org.junit.jupiter.api.BeforeAll;
4341
import org.junit.jupiter.api.Test;
@@ -65,7 +63,7 @@ public class OpenTelemetryTracerTest {
6563
* rootSpan set as the parent.
6664
*/
6765
@Test
68-
public void testTrace_CompletionStage_Simple() throws Exception {
66+
public void traceCompletionStageSimple() throws Exception {
6967
Span rootSpan = startRootSpan();
7068
final CompletableFuture<String> future = new CompletableFuture<>();
7169
OpenTelemetryTracer tracer = new OpenTelemetryTracer();
@@ -91,7 +89,7 @@ public void testTrace_CompletionStage_Simple() throws Exception {
9189
}
9290

9391
@Test
94-
public void testTrace_CompletionStage_Fails() throws Exception {
92+
public void traceCompletionStageFails() throws Exception {
9593
Span rootSpan = startRootSpan();
9694
final CompletableFuture<String> future = new CompletableFuture<>();
9795
OpenTelemetryTracer tracer = new OpenTelemetryTracer();
@@ -117,7 +115,38 @@ public void testTrace_CompletionStage_Fails() throws Exception {
117115
}
118116

119117
@Test
120-
public void test_createTracedClient() throws IOException {
118+
public void traceCompletionStageWithRequest() throws Exception {
119+
Span rootSpan = startRootSpan();
120+
final CompletableFuture<String> future = new CompletableFuture<>();
121+
OpenTelemetryTracer tracer = new OpenTelemetryTracer();
122+
Request mockRequest = mock(Request.class);
123+
when(mockRequest.url()).thenReturn(HttpUrl.parse("https://api.github.com/repos/spotify/github-java-client"));
124+
when(mockRequest.method()).thenReturn("GET");
125+
126+
try(com.spotify.github.tracing.Span span = tracer.span(mockRequest)){
127+
tracer.attachSpanToFuture(span, future);
128+
future.complete("all done");
129+
}
130+
rootSpan.end();
131+
132+
List<SpanData> exportedSpans = spanExporterHandler.waitForSpansToBeExported(2);
133+
assertEquals(2, exportedSpans.size());
134+
135+
SpanData root = findSpan(exportedSpans, rootSpanName);
136+
SpanData inner = findSpan(exportedSpans, "GitHub Request");
137+
138+
assertEquals(root.getSpanContext().getTraceId(), inner.getSpanContext().getTraceId());
139+
assertEquals(root.getSpanContext().getSpanId(), inner.getParentSpanId());
140+
final Attributes attributes = inner.getAttributes();
141+
assertEquals("github-api-client", attributes.get(AttributeKey.stringKey("component")));
142+
assertEquals("github", attributes.get(AttributeKey.stringKey("peer.service")));
143+
assertEquals("https://api.github.com/repos/spotify/github-java-client", attributes.get(AttributeKey.stringKey("http.url")));
144+
assertEquals("GET", attributes.get(AttributeKey.stringKey("method")));
145+
assertEquals(StatusCode.OK, inner.getStatus().getStatusCode());
146+
}
147+
148+
@Test
149+
public void createTracedClient() throws IOException {
121150
OpenTelemetryTracer tracer = new OpenTelemetryTracer(openTelemetry);
122151
OkHttpClient.Builder mockBuilder = mock(OkHttpClient.Builder.class);
123152
OkHttpClient mockClient = mock(OkHttpClient.class);

0 commit comments

Comments
 (0)