Skip to content

Commit

Permalink
add tracer provider test
Browse files Browse the repository at this point in the history
  • Loading branch information
samvaity committed Dec 12, 2019
1 parent 9647c15 commit daa9bdf
Show file tree
Hide file tree
Showing 10 changed files with 63 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,11 @@ public Context extractContext(String diagnosticId, Context context) {
*
* @param context Additional metadata containing the span name for creating the span builer.
*/
public Context getSpanBuilder(Context context) {
public Context getSharedSpanBuilder(Context context) {
Context local = Objects.requireNonNull(context, "'context' cannot be null.");
String spanName = getSpanName(ProcessKind.SEND);
for (Tracer tracer : tracers) {
local = tracer.getSpanBuilder(spanName, local);
local = tracer.getSharedSpanBuilder(spanName, local);
}
return local;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.never;
Expand Down Expand Up @@ -194,4 +195,40 @@ public void addSpanLinks() {
// Act
assertThrows(NullPointerException.class, () -> tracerProvider.addSpanLinks(null));
}

@Test
public void getSpanBuilderReturnsUpdatedContext() {
// Arrange
final String spanBuilderKey = "spanBuilder-key";
final String spanBuilderValue = "spanBuilder-value";

final String spanBuilderKey1 = "spanBuilder-key1";
final String spanBuilderValue1 = "spanBuilder-value1";
final Context startingContext = Context.NONE;

when(tracer.getSharedSpanBuilder(anyString(), any())).thenAnswer(
invocation -> {
Context passed = invocation.getArgument(1, Context.class);
return passed.addData(spanBuilderKey, spanBuilderValue);
}
);
when(tracer2.getSharedSpanBuilder(anyString(), any())).thenAnswer(
invocation -> {
Context passed = invocation.getArgument(1, Context.class);
return passed.addData(spanBuilderKey1, spanBuilderValue1);
}
);

// Act
final Context updatedContext = tracerProvider.getSharedSpanBuilder(startingContext);

// Assert
final Optional<Object> spanBuilderData = updatedContext.getData(spanBuilderKey);
Assertions.assertTrue(spanBuilderData.isPresent());
Assertions.assertEquals(spanBuilderValue, spanBuilderData.get());

final Optional<Object> spanBuilderData1 = updatedContext.getData(spanBuilderKey1);
Assertions.assertTrue(spanBuilderData1.isPresent());
Assertions.assertEquals(spanBuilderValue1, spanBuilderData1.get());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,12 @@ public Context extractContext(String diagnosticId, Context context) {
return AmqpPropagationFormatUtil.extractContext(diagnosticId, context);
}

@Override
public Context getSharedSpanBuilder(String spanName, Context context) {
return Context.NONE;
// Remove OpenCensus support for tracing in https://github.com/Azure/azure-sdk-for-java/issues/6781
}

/**
* Starts a new child {@link Span} with parent being the remote and uses the {@link Span} is in the current Context,
* to return an object that represents that scope.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public Context start(String spanName, Context context) {
Objects.requireNonNull(spanName, "'spanName' cannot be null.");
Objects.requireNonNull(context, "'context' cannot be null.");

Builder spanBuilder = getParentSpanBuilder(spanName, context);
Builder spanBuilder = getSpanBuilder(spanName, context);
Span span = spanBuilder.startSpan();

return context.addData(PARENT_SPAN_KEY, span);
Expand Down Expand Up @@ -78,7 +78,7 @@ public Context start(String spanName, Context context, ProcessKind processKind)
}
return context.addData(PARENT_SPAN_KEY, span);
case MESSAGE:
spanBuilder = getParentSpanBuilder(spanName, context);
spanBuilder = getSpanBuilder(spanName, context);
span = spanBuilder.startSpan();
// Add diagnostic Id and trace-headers to Context
context = setContextData(span);
Expand Down Expand Up @@ -177,8 +177,8 @@ public Context extractContext(String diagnosticId, Context context) {
}

@Override
public Context getSpanBuilder(String spanName, Context context) {
return context.addData(SPAN_BUILDER_KEY, getParentSpanBuilder(spanName, context));
public Context getSharedSpanBuilder(String spanName, Context context) {
return context.addData(SPAN_BUILDER_KEY, getSpanBuilder(spanName, context));
}

/**
Expand All @@ -197,7 +197,7 @@ private Context startScopedSpan(String spanName, Context context) {
if (spanContext != null) {
span = startSpanWithRemoteParent(spanName, spanContext);
} else {
Builder spanBuilder = getParentSpanBuilder(spanName, context);
Builder spanBuilder = getSpanBuilder(spanName, context);
span = spanBuilder.setSpanKind(Span.Kind.SERVER).startSpan();
}
return context.addData(PARENT_SPAN_KEY, span).addData("scope", TRACER.withSpan(span));
Expand Down Expand Up @@ -274,7 +274,7 @@ private static String parseComponentValue(String spanName) {
* @param context The context containing the span and the span name.
* @return A {@code Span.Builder} to create and start a new {@code Span}.
*/
private Builder getParentSpanBuilder(String spanName, Context context) {
private Builder getSpanBuilder(String spanName, Context context) {
Span parentSpan = getOrDefault(context, PARENT_SPAN_KEY, null, Span.class);
String spanNameKey = getOrDefault(context, USER_SPAN_NAME_KEY, null, String.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ public void startSpanProcessKindProcess() {
@Test
public void getSpanBuilderTest() {
// Act
final Context updatedContext = openTelemetryTracer.getSpanBuilder(METHOD_NAME, Context.NONE);
final Context updatedContext = openTelemetryTracer.getSharedSpanBuilder(METHOD_NAME, Context.NONE);

assertTrue(updatedContext.getData(SPAN_BUILDER_KEY).isPresent());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,13 @@ public interface Tracer {
* <p><strong>Code samples</strong></p>
*
* <p>Returns a builder with the provided span name.</p>
* {@codesnippet com.azure.core.util.tracing.getSpanBuilder#string-context}
* {@codesnippet com.azure.core.util.tracing.getSharedSpanBuilder#string-context}
*
* @param spanName Name to give the span for the created builder.
* @param context Additional metadata that is passed through the call stack.
*
* @return The updated {@link Context} object containing the span builder.
* @throws NullPointerException if {@code context} or {@code spanName} is {@code null}.
*/
Context getSpanBuilder(String spanName, Context context);
Context getSharedSpanBuilder(String spanName, Context context);
}
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,13 @@ public void extractContext() {
}

/**
* Code snippet for {@link Tracer#getSpanBuilder(String, Context)}
* Code snippet for {@link Tracer#getSharedSpanBuilder(String, Context)}
*/
public void getSpanBuilder() {
public void getSharedSpanBuilder() {
// BEGIN: com.azure.core.util.tracing.getSpanBuilder#string-context
// Returns a span builder with the provided name
String methodName = "message-span";
Context spanContext = tracer.getSpanBuilder(methodName, Context.NONE);
Context spanContext = tracer.getSharedSpanBuilder(methodName, Context.NONE);
System.out.printf("Span context of the current tracing span: %s%n", spanContext.getData(SPAN_BUILDER_KEY).get());
// END: com.azure.core.util.tracing.getSpanBuilder#string-context
}
Expand Down Expand Up @@ -176,7 +176,7 @@ public Context extractContext(String diagnosticId, Context context) {
}

@Override
public Context getSpanBuilder(String spanName, Context context) { return null;
public Context getSharedSpanBuilder(String spanName, Context context) { return null;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ public Mono<Void> send(EventDataBatch batch) {
if (isFirst.getAndSet(false)) {
parentContext.set(event.getContext());
// get shared span builder for all links
sharedContext.set(tracerProvider.getSpanBuilder(parentContext.get()));
sharedContext.set(tracerProvider.getSharedSpanBuilder(parentContext.get()));
}
Context sharedSpanBuilderContext = sharedContext.get();
tracerProvider.addSpanLinks(sharedSpanBuilderContext.addData(SPAN_CONTEXT_KEY, event.getContext()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ public void sendStartSpanSingleMessage() {
}
);

when(tracer1.getSpanBuilder(eq("Azure.eventhubs.send"), any())).thenAnswer(
when(tracer1.getSharedSpanBuilder(eq("Azure.eventhubs.send"), any())).thenAnswer(
invocation -> {
Context passed = invocation.getArgument(1, Context.class);
return passed.addData(SPAN_BUILDER_KEY, "value");
Expand Down Expand Up @@ -303,7 +303,7 @@ public void sendMessageRetrySpanTest() {
}
);

when(tracer1.getSpanBuilder(eq("Azure.eventhubs.send"), any())).thenAnswer(
when(tracer1.getSharedSpanBuilder(eq("Azure.eventhubs.send"), any())).thenAnswer(
invocation -> {
Context passed = invocation.getArgument(1, Context.class);
return passed.addData(SPAN_BUILDER_KEY, "value");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ public void sendStartSpanSingleMessage() {
return passed.addData(PARENT_SPAN_KEY, "value").addData(DIAGNOSTIC_ID_KEY, "value2");
}
);
when(tracer1.getSpanBuilder(eq("Azure.eventhubs.send"), any())).thenAnswer(
when(tracer1.getSharedSpanBuilder(eq("Azure.eventhubs.send"), any())).thenAnswer(
invocation -> {
Context passed = invocation.getArgument(1, Context.class);
return passed.addData(SPAN_BUILDER_KEY, "value");
Expand Down Expand Up @@ -217,7 +217,7 @@ public void sendMessageRetrySpanTest() {
}
);

when(tracer1.getSpanBuilder(eq("Azure.eventhubs.send"), any())).thenAnswer(
when(tracer1.getSharedSpanBuilder(eq("Azure.eventhubs.send"), any())).thenAnswer(
invocation -> {
Context passed = invocation.getArgument(1, Context.class);
return passed.addData(SPAN_BUILDER_KEY, "value");
Expand Down

0 comments on commit daa9bdf

Please sign in to comment.