/// <summary>Snippet for CreateSpanAsync</summary> public async Task CreateSpanRequestObjectAsync() { // Snippet: CreateSpanAsync(Span, CallSettings) // Additional: CreateSpanAsync(Span, CancellationToken) // Create client TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync(); // Initialize request argument(s) Span request = new Span { SpanName = SpanName.FromProjectTraceSpan("[PROJECT]", "[TRACE]", "[SPAN]"), SpanId = "", ParentSpanId = "", DisplayName = new TruncatableString(), StartTime = new Timestamp(), EndTime = new Timestamp(), Attributes = new Span.Types.Attributes(), StackTrace = new StackTrace(), TimeEvents = new Span.Types.TimeEvents(), Links = new Span.Types.Links(), Status = new Status(), SameProcessAsParentSpan = false, ChildSpanCount = 0, }; // Make the request Span response = await traceServiceClient.CreateSpanAsync(request); // End snippet }
/// <summary>Snippet for CreateSpan</summary> public void CreateSpanRequestObject() { // Snippet: CreateSpan(Span, CallSettings) // Create client TraceServiceClient traceServiceClient = TraceServiceClient.Create(); // Initialize request argument(s) Span request = new Span { SpanName = SpanName.FromProjectTraceSpan("[PROJECT]", "[TRACE]", "[SPAN]"), SpanId = "", ParentSpanId = "", DisplayName = new TruncatableString(), StartTime = new Timestamp(), EndTime = new Timestamp(), Attributes = new Span.Types.Attributes(), StackTrace = new StackTrace(), TimeEvents = new Span.Types.TimeEvents(), Links = new Span.Types.Links(), Status = new Status(), SameProcessAsParentSpan = new bool?(), ChildSpanCount = new int?(), }; // Make the request Span response = traceServiceClient.CreateSpan(request); // End snippet }
public async stt::Task CreateSpanRequestObjectAsync() { moq::Mock <TraceService.TraceServiceClient> mockGrpcClient = new moq::Mock <TraceService.TraceServiceClient>(moq::MockBehavior.Strict); Span request = new Span { SpanName = SpanName.FromProjectTraceSpan("[PROJECT]", "[TRACE]", "[SPAN]"), SpanId = "span_id47c232d3", ParentSpanId = "parent_span_ide637f6a2", DisplayName = new TruncatableString(), StartTime = new wkt::Timestamp(), EndTime = new wkt::Timestamp(), Attributes = new Span.Types.Attributes(), StackTrace = new StackTrace(), TimeEvents = new Span.Types.TimeEvents(), Links = new Span.Types.Links(), Status = new gr::Status(), SameProcessAsParentSpan = false, ChildSpanCount = -1491694397, SpanKind = Span.Types.SpanKind.Consumer, }; Span expectedResponse = new Span { SpanName = SpanName.FromProjectTraceSpan("[PROJECT]", "[TRACE]", "[SPAN]"), SpanId = "span_id47c232d3", ParentSpanId = "parent_span_ide637f6a2", DisplayName = new TruncatableString(), StartTime = new wkt::Timestamp(), EndTime = new wkt::Timestamp(), Attributes = new Span.Types.Attributes(), StackTrace = new StackTrace(), TimeEvents = new Span.Types.TimeEvents(), Links = new Span.Types.Links(), Status = new gr::Status(), SameProcessAsParentSpan = false, ChildSpanCount = -1491694397, SpanKind = Span.Types.SpanKind.Consumer, }; mockGrpcClient.Setup(x => x.CreateSpanAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <Span>(stt::Task.FromResult(expectedResponse), null, null, null, null)); TraceServiceClient client = new TraceServiceClientImpl(mockGrpcClient.Object, null); Span responseCallSettings = await client.CreateSpanAsync(request, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None)); xunit::Assert.Same(expectedResponse, responseCallSettings); Span responseCancellationToken = await client.CreateSpanAsync(request, st::CancellationToken.None); xunit::Assert.Same(expectedResponse, responseCancellationToken); mockGrpcClient.VerifyAll(); }
public void CreateSpanRequestObject() { moq::Mock <TraceService.TraceServiceClient> mockGrpcClient = new moq::Mock <TraceService.TraceServiceClient>(moq::MockBehavior.Strict); Span request = new Span { SpanName = SpanName.FromProjectTraceSpan("[PROJECT]", "[TRACE]", "[SPAN]"), SpanId = "span_id47c232d3", ParentSpanId = "parent_span_ide637f6a2", DisplayName = new TruncatableString(), StartTime = new wkt::Timestamp(), EndTime = new wkt::Timestamp(), Attributes = new Span.Types.Attributes(), StackTrace = new StackTrace(), TimeEvents = new Span.Types.TimeEvents(), Links = new Span.Types.Links(), Status = new gr::Status(), SameProcessAsParentSpan = new bool?(), ChildSpanCount = new int?(), }; Span expectedResponse = new Span { SpanName = SpanName.FromProjectTraceSpan("[PROJECT]", "[TRACE]", "[SPAN]"), SpanId = "span_id47c232d3", ParentSpanId = "parent_span_ide637f6a2", DisplayName = new TruncatableString(), StartTime = new wkt::Timestamp(), EndTime = new wkt::Timestamp(), Attributes = new Span.Types.Attributes(), StackTrace = new StackTrace(), TimeEvents = new Span.Types.TimeEvents(), Links = new Span.Types.Links(), Status = new gr::Status(), SameProcessAsParentSpan = new bool?(), ChildSpanCount = new int?(), }; mockGrpcClient.Setup(x => x.CreateSpan(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(expectedResponse); TraceServiceClient client = new TraceServiceClientImpl(mockGrpcClient.Object, null); Span response = client.CreateSpan(request); xunit::Assert.Same(expectedResponse, response); mockGrpcClient.VerifyAll(); }
private void AddTrace(HttpListenerContext _Context, bool _bNewSpan, Action <string> _ErrorMessageAction = null) { //Start if (_bNewSpan) { _Context.Request.Headers.Set("span-start-time", DateTime.Now.ToString()); } //End else { var TraceID = _Context.Request.Headers.Get("trace-id"); if (TraceID == null || TraceID.Length == 0) { //It is a new trace TraceID = Guid.NewGuid().ToString("N"); } string ParentSpanID = null; string SpanID = _Context.Request.Headers.Get("span-id"); if (SpanID != null && SpanID.Length > 0) { ParentSpanID = SpanID; } SpanID = GetRandomHexNumber(16); _Context.Request.Headers.Set("trace-id", TraceID); _Context.Request.Headers.Set("span-id", SpanID); var LegitSpanName = new SpanName(ProjectName.ProjectId, TraceID, SpanID); var TruncString = new TruncatableString { Value = _Context.Request.HttpMethod + "->" + _Context.Request.Url.AbsolutePath, TruncatedByteCount = 0 }; Timestamp StartTime = null; try { StartTime = Timestamp.FromDateTimeOffset(DateTime.Parse(_Context.Request.Headers.Get("span-start-time"))); } catch (Exception ex) { _ErrorMessageAction?.Invoke("BTracingServiceGC->AddTrace: " + ex.Message + ", Trace: " + ex.StackTrace); } var Span = new Span { SpanName = LegitSpanName, DisplayName = TruncString, SpanId = SpanID, StartTime = StartTime ?? Timestamp.FromDateTimeOffset(DateTime.Now), EndTime = Timestamp.FromDateTimeOffset(DateTime.Now), Attributes = new Span.Types.Attributes() }; if (ParentSpanID != null) { Span.ParentSpanId = ParentSpanID; } AddEntryToSpan(Span, "Service Name", ProgramUniqueID); AddEntryToSpan(Span, "HTTP Method", _Context.Request.HttpMethod); AddEntryToSpan(Span, "HTTP URL", _Context.Request.Url.AbsoluteUri); AddEntryToSpan(Span, "HTTP Path", _Context.Request.Url.AbsolutePath); lock (Spans) { Spans.Add(Span); } } }
public override int GetHashCode() { int hash = 1; if (TraceId.Length != 0) { hash ^= TraceId.GetHashCode(); } if (SpanId.Length != 0) { hash ^= SpanId.GetHashCode(); } if (ParentSpanId.Length != 0) { hash ^= ParentSpanId.GetHashCode(); } if (SpanName.Length != 0) { hash ^= SpanName.GetHashCode(); } if (startTime_ != null) { hash ^= StartTime.GetHashCode(); } if (endTime_ != null) { hash ^= EndTime.GetHashCode(); } hash ^= SpanTags.GetHashCode(); if (HttpStatusCode != 0L) { hash ^= HttpStatusCode.GetHashCode(); } if (ClientSpan != false) { hash ^= ClientSpan.GetHashCode(); } if (RewriteClientSpanId != false) { hash ^= RewriteClientSpanId.GetHashCode(); } if (SourceName.Length != 0) { hash ^= SourceName.GetHashCode(); } if (sourceIp_ != null) { hash ^= SourceIp.GetHashCode(); } if (DestinationName.Length != 0) { hash ^= DestinationName.GetHashCode(); } if (destinationIp_ != null) { hash ^= DestinationIp.GetHashCode(); } if (RequestSize != 0L) { hash ^= RequestSize.GetHashCode(); } if (RequestTotalSize != 0L) { hash ^= RequestTotalSize.GetHashCode(); } if (ResponseSize != 0L) { hash ^= ResponseSize.GetHashCode(); } if (ResponseTotalSize != 0L) { hash ^= ResponseTotalSize.GetHashCode(); } if (ApiProtocol.Length != 0) { hash ^= ApiProtocol.GetHashCode(); } if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }