Skip to content

Commit 809ed22

Browse files
authored
Exporter/OcAgent: Add methods for getting and applying config. (census-instrumentation#1488)
1 parent b1ce784 commit 809ed22

2 files changed

Lines changed: 61 additions & 14 deletions

File tree

exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/TraceProtoUtils.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.opencensus.common.Function;
2424
import io.opencensus.common.Functions;
2525
import io.opencensus.common.Timestamp;
26+
import io.opencensus.proto.agent.trace.v1.UpdatedLibraryConfig;
2627
import io.opencensus.proto.trace.v1.AttributeValue;
2728
import io.opencensus.proto.trace.v1.ConstantSampler;
2829
import io.opencensus.proto.trace.v1.ProbabilitySampler;
@@ -58,12 +59,8 @@
5859
import org.checkerframework.checker.nullness.qual.Nullable;
5960
*/
6061

61-
/**
62-
* Utilities for converting the Tracing data models in OpenCensus Java to/from OpenCensus Proto.
63-
*
64-
* @since 0.17
65-
*/
66-
public final class TraceProtoUtils {
62+
/** Utilities for converting the Tracing data models in OpenCensus Java to/from OpenCensus Proto. */
63+
final class TraceProtoUtils {
6764

6865
// Constant functions for AttributeValue.
6966
private static final Function<String, /*@Nullable*/ AttributeValue> stringAttributeValueFunction =
@@ -106,10 +103,8 @@ public AttributeValue apply(Double doubleValue) {
106103
*
107104
* @param spanData the {@code SpanData}.
108105
* @return proto representation of {@code Span}.
109-
* @since 0.17
110106
*/
111-
@SuppressWarnings("DefaultCharset")
112-
public static Span toSpanProto(SpanData spanData) {
107+
static Span toSpanProto(SpanData spanData) {
113108
SpanContext spanContext = spanData.getContext();
114109
TraceId traceId = spanContext.getTraceId();
115110
SpanId spanId = spanContext.getSpanId();
@@ -298,7 +293,6 @@ private static Link.Type toLinkTypeProto(io.opencensus.trace.Link.Type type) {
298293
}
299294
}
300295

301-
@SuppressWarnings("DefaultCharset")
302296
private static Link toLinkProto(io.opencensus.trace.Link link) {
303297
return Link.newBuilder()
304298
.setTraceId(toByteString(link.getTraceId().getBytes()))
@@ -322,9 +316,8 @@ private static Links toLinksProto(io.opencensus.trace.export.SpanData.Links link
322316
*
323317
* @param traceParams the {@code TraceParams}.
324318
* @return {@code TraceConfig}.
325-
* @since 0.17
326319
*/
327-
public static TraceConfig toTraceConfigProto(TraceParams traceParams) {
320+
static TraceConfig toTraceConfigProto(TraceParams traceParams) {
328321
TraceConfig.Builder traceConfigProtoBuilder = TraceConfig.newBuilder();
329322
Sampler librarySampler = traceParams.getSampler();
330323

@@ -360,7 +353,7 @@ private static double parseSamplingProbability(Sampler sampler) {
360353
* @return updated {@code TraceParams}.
361354
* @since 0.17
362355
*/
363-
public static TraceParams fromTraceConfigProto(
356+
static TraceParams fromTraceConfigProto(
364357
TraceConfig traceConfigProto, TraceParams currentTraceParams) {
365358
TraceParams.Builder builder = currentTraceParams.toBuilder();
366359
if (traceConfigProto.hasConstantSampler()) {
@@ -378,5 +371,20 @@ public static TraceParams fromTraceConfigProto(
378371
return builder.build();
379372
}
380373

374+
// Creates a TraceConfig proto message with current TraceParams.
375+
static TraceConfig getCurrentTraceConfig(io.opencensus.trace.config.TraceConfig traceConfig) {
376+
TraceParams traceParams = traceConfig.getActiveTraceParams();
377+
return toTraceConfigProto(traceParams);
378+
}
379+
380+
// Creates an updated TraceParams with the given UpdatedLibraryConfig message and current
381+
// TraceParams, then applies the updated TraceParams.
382+
static TraceParams getUpdatedTraceParams(
383+
UpdatedLibraryConfig config, io.opencensus.trace.config.TraceConfig traceConfig) {
384+
TraceParams currentParams = traceConfig.getActiveTraceParams();
385+
TraceConfig traceConfigProto = config.getConfig();
386+
return fromTraceConfigProto(traceConfigProto, currentParams);
387+
}
388+
381389
private TraceProtoUtils() {}
382390
}

exporters/trace/ocagent/src/test/java/io/opencensus/exporter/trace/ocagent/TraceProtoUtilsTest.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.google.protobuf.BoolValue;
2626
import com.google.protobuf.UInt32Value;
2727
import io.opencensus.common.Timestamp;
28+
import io.opencensus.proto.agent.trace.v1.UpdatedLibraryConfig;
2829
import io.opencensus.proto.trace.v1.AttributeValue;
2930
import io.opencensus.proto.trace.v1.ConstantSampler;
3031
import io.opencensus.proto.trace.v1.ProbabilitySampler;
@@ -49,14 +50,20 @@
4950
import io.opencensus.trace.export.SpanData.TimedEvents;
5051
import io.opencensus.trace.samplers.Samplers;
5152
import java.util.List;
53+
import org.junit.Before;
5254
import org.junit.Test;
5355
import org.junit.runner.RunWith;
5456
import org.junit.runners.JUnit4;
57+
import org.mockito.Mock;
58+
import org.mockito.Mockito;
59+
import org.mockito.MockitoAnnotations;
5560

5661
/** Tests for {@link TraceProtoUtils}. */
5762
@RunWith(JUnit4.class)
5863
public class TraceProtoUtilsTest {
5964

65+
@Mock private io.opencensus.trace.config.TraceConfig mockTraceConfig;
66+
6067
private static final TraceParams DEFAULT_PARAMS = TraceParams.DEFAULT;
6168

6269
private static final Timestamp startTimestamp = Timestamp.create(123, 456);
@@ -126,7 +133,15 @@ public class TraceProtoUtilsTest {
126133
TimedEvents.create(networkEventsList, DROPPED_NETWORKEVENTS_COUNT);
127134
private static final SpanData.Links links = SpanData.Links.create(linksList, DROPPED_LINKS_COUNT);
128135

129-
@SuppressWarnings("DefaultCharset")
136+
@Before
137+
public void setUp() {
138+
MockitoAnnotations.initMocks(this);
139+
Mockito.when(mockTraceConfig.getActiveTraceParams()).thenReturn(DEFAULT_PARAMS);
140+
Mockito.doNothing()
141+
.when(mockTraceConfig)
142+
.updateActiveTraceParams(Mockito.any(TraceParams.class));
143+
}
144+
130145
@Test
131146
public void toSpanProto() {
132147
SpanData spanData =
@@ -312,6 +327,30 @@ public void fromTraceConfigProto_ProbabilitySampler() {
312327
.isEqualTo(Samplers.probabilitySampler(0.01));
313328
}
314329

330+
@Test
331+
public void getCurrentTraceConfig() {
332+
TraceConfig configProto = TraceProtoUtils.toTraceConfigProto(DEFAULT_PARAMS);
333+
assertThat(TraceProtoUtils.getCurrentTraceConfig(mockTraceConfig)).isEqualTo(configProto);
334+
Mockito.verify(mockTraceConfig, Mockito.times(1)).getActiveTraceParams();
335+
}
336+
337+
@Test
338+
public void applyUpdatedConfig() {
339+
TraceConfig configProto =
340+
TraceConfig.newBuilder()
341+
.setProbabilitySampler(
342+
ProbabilitySampler.newBuilder().setSamplingProbability(0.01).build())
343+
.build();
344+
UpdatedLibraryConfig updatedLibraryConfig =
345+
UpdatedLibraryConfig.newBuilder().setConfig(configProto).build();
346+
TraceParams traceParams =
347+
TraceProtoUtils.getUpdatedTraceParams(updatedLibraryConfig, mockTraceConfig);
348+
TraceParams expectedParams =
349+
DEFAULT_PARAMS.toBuilder().setSampler(Samplers.probabilitySampler(0.01)).build();
350+
Mockito.verify(mockTraceConfig, Mockito.times(1)).getActiveTraceParams();
351+
assertThat(traceParams).isEqualTo(expectedParams);
352+
}
353+
315354
private static TraceParams getTraceParams(Sampler sampler) {
316355
return DEFAULT_PARAMS.toBuilder().setSampler(sampler).build();
317356
}

0 commit comments

Comments
 (0)