/** Constructs an instance of TraceServiceClient with default settings. */ public static final TraceServiceClient create() throws IOException { return create(TraceServiceSettings.newBuilder().build()); }
public static void executeNoCatch(String projectId) throws Exception { try (TraceServiceClient client = TraceServiceClient.create()) { ProjectName name = ProjectName.of(projectId); List<Span> spans = new ArrayList<>(); client.batchWriteSpans(name, spans); } }
/** * Constructs an instance of TraceServiceClient, using the given settings. The channels are * created based on the settings passed in, or defaults for any settings that are not set. */ public static final TraceServiceClient create(TraceServiceSettings settings) throws IOException { return new TraceServiceClient(settings); }
/** * Sends new spans to new or existing traces. You cannot update existing spans. * * <p>Sample code: * * <pre><code> * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) { * ProjectName name = ProjectName.of("[PROJECT]"); * List<Span> spans = new ArrayList<>(); * traceServiceClient.batchWriteSpans(name.toString(), spans); * } * </code></pre> * * @param name Required. The name of the project where the spans belong. The format is * `projects/[PROJECT_ID]`. * @param spans A list of new spans. The span names must not match existing spans, or the results * are undefined. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void batchWriteSpans(String name, List<Span> spans) { BatchWriteSpansRequest request = BatchWriteSpansRequest.newBuilder().setName(name).addAllSpans(spans).build(); batchWriteSpans(request); }
/** * Sends new spans to new or existing traces. You cannot update existing spans. * * <p>Sample code: * * <pre><code> * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) { * ProjectName name = ProjectName.of("[PROJECT]"); * List<Span> spans = new ArrayList<>(); * BatchWriteSpansRequest request = BatchWriteSpansRequest.newBuilder() * .setName(name.toString()) * .addAllSpans(spans) * .build(); * traceServiceClient.batchWriteSpans(request); * } * </code></pre> * * @param request The request object containing all of the parameters for the API call. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void batchWriteSpans(BatchWriteSpansRequest request) { batchWriteSpansCallable().call(request); }
/** * Creates a new span. * * <p>Sample code: * * <pre><code> * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) { * SpanName name = SpanName.of("[PROJECT]", "[TRACE]", "[SPAN]"); * String spanId = ""; * TruncatableString displayName = TruncatableString.newBuilder().build(); * Timestamp startTime = Timestamp.newBuilder().build(); * Timestamp endTime = Timestamp.newBuilder().build(); * Span request = Span.newBuilder() * .setName(name.toString()) * .setSpanId(spanId) * .setDisplayName(displayName) * .setStartTime(startTime) * .setEndTime(endTime) * .build(); * Span response = traceServiceClient.createSpan(request); * } * </code></pre> * * @param request The request object containing all of the parameters for the API call. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Span createSpan(Span request) { return createSpanCallable().call(request); }
@After public void tearDown() throws Exception { client.close(); }
/** * Sends new spans to new or existing traces. You cannot update existing spans. * * <p>Sample code: * * <pre><code> * try (TraceServiceClient traceServiceClient = TraceServiceClient.create()) { * ProjectName name = ProjectName.of("[PROJECT]"); * List<Span> spans = new ArrayList<>(); * traceServiceClient.batchWriteSpans(name, spans); * } * </code></pre> * * @param name Required. The name of the project where the spans belong. The format is * `projects/[PROJECT_ID]`. * @param spans A list of new spans. The span names must not match existing spans, or the results * are undefined. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void batchWriteSpans(ProjectName name, List<Span> spans) { BatchWriteSpansRequest request = BatchWriteSpansRequest.newBuilder() .setName(name == null ? null : name.toString()) .addAllSpans(spans) .build(); batchWriteSpans(request); }
@Before public void setUp() throws IOException { serviceHelper.reset(); channelProvider = serviceHelper.createChannelProvider(); TraceServiceSettings settings = TraceServiceSettings.newBuilder() .setTransportChannelProvider(channelProvider) .setCredentialsProvider(NoCredentialsProvider.create()) .build(); client = TraceServiceClient.create(settings); }
@Test @SuppressWarnings("all") public void batchWriteSpansExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); mockTraceService.addException(exception); try { ProjectName name = ProjectName.of("[PROJECT]"); List<Span> spans = new ArrayList<>(); client.batchWriteSpans(name, spans); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception } } }
/** * Constructs an instance of TraceServiceClient, using the given stub for making calls. This is * for advanced usage - prefer to use TraceServiceSettings}. */ @BetaApi("A restructuring of stub classes is planned, so this may break in the future") public static final TraceServiceClient create(TraceServiceStub stub) { return new TraceServiceClient(stub); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); // TODO(@Hailong): TraceServiceClient.create(TraceServiceStub) is a beta API and might change // in the future. traceServiceClient = TraceServiceClient.create(traceServiceStub); handler = StackdriverV2ExporterHandler.createWithStub( PROJECT_ID, traceServiceClient, Collections.<String, AttributeValue>emptyMap()); }
@Test @SuppressWarnings("all") public void batchWriteSpansTest() { Empty expectedResponse = Empty.newBuilder().build(); mockTraceService.addResponse(expectedResponse); ProjectName name = ProjectName.of("[PROJECT]"); List<Span> spans = new ArrayList<>(); client.batchWriteSpans(name, spans); List<GeneratedMessageV3> actualRequests = mockTraceService.getRequests(); Assert.assertEquals(1, actualRequests.size()); BatchWriteSpansRequest actualRequest = (BatchWriteSpansRequest) actualRequests.get(0); Assert.assertEquals(name, ProjectName.parse(actualRequest.getName())); Assert.assertEquals(spans, actualRequest.getSpansList()); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern())); }
static StackdriverV2ExporterHandler createWithCredentials( String projectId, Credentials credentials, @javax.annotation.Nullable Map<String, io.opencensus.trace.AttributeValue> fixedAttributes) throws IOException { TraceServiceSettings traceServiceSettings = TraceServiceSettings.newBuilder() .setCredentialsProvider( FixedCredentialsProvider.create(checkNotNull(credentials, "credentials"))) .build(); return new StackdriverV2ExporterHandler( projectId, TraceServiceClient.create(traceServiceSettings), fixedAttributes); }
@Override public void export(Collection<SpanData> spanDataList) { // Start a new span with explicit 1/10000 sampling probability to avoid the case when user // sets the default sampler to always sample and we get the gRPC span of the stackdriver // export call always sampled and go to an infinite loop. io.opencensus.trace.Span span = tracer .spanBuilder(EXPORT_STACKDRIVER_TRACES) .setSampler(probabilitySampler) .setRecordEvents(true) .startSpan(); Scope scope = tracer.withSpan(span); try { List<Span> spans = new ArrayList<>(spanDataList.size()); for (SpanData spanData : spanDataList) { spans.add(generateSpan(spanData, RESOURCE_LABELS, fixedAttributes)); } // Sync call because it is already called for a batch of data, and on a separate thread. // TODO(bdrutu): Consider to make this async in the future. traceServiceClient.batchWriteSpans(projectName, spans); } finally { scope.close(); span.end(END_SPAN_OPTIONS); } } }
static StackdriverV2ExporterHandler createWithCredentials( String projectId, Credentials credentials, @javax.annotation.Nullable Map<String, io.opencensus.trace.AttributeValue> fixedAttributes) throws IOException { TraceServiceSettings traceServiceSettings = TraceServiceSettings.newBuilder() .setCredentialsProvider( FixedCredentialsProvider.create(checkNotNull(credentials, "credentials"))) .build(); return new StackdriverV2ExporterHandler( projectId, TraceServiceClient.create(traceServiceSettings), fixedAttributes); }
@Override public void export(Collection<SpanData> spanDataList) { // Start a new span with explicit 1/10000 sampling probability to avoid the case when user // sets the default sampler to always sample and we get the gRPC span of the stackdriver // export call always sampled and go to an infinite loop. io.opencensus.trace.Span span = tracer .spanBuilder(EXPORT_STACKDRIVER_TRACES) .setSampler(probabilitySampler) .setRecordEvents(true) .startSpan(); Scope scope = tracer.withSpan(span); try { List<Span> spans = new ArrayList<>(spanDataList.size()); for (SpanData spanData : spanDataList) { spans.add(generateSpan(spanData, RESOURCE_LABELS, fixedAttributes)); } // Sync call because it is already called for a batch of data, and on a separate thread. // TODO(bdrutu): Consider to make this async in the future. traceServiceClient.batchWriteSpans(projectName, spans); } finally { scope.close(); span.end(END_SPAN_OPTIONS); } } }
handler = StackdriverV2ExporterHandler.createWithStub( projectId, TraceServiceClient.create(stub), configuration.getFixedAttributes());
handler = StackdriverV2ExporterHandler.createWithStub( projectId, TraceServiceClient.create(stub), configuration.getFixedAttributes());