public void Start_ActivityOperationRootSpanChecks() { // Create an activity var activity = new System.Diagnostics.Activity("foo") .SetIdFormat(System.Diagnostics.ActivityIdFormat.W3C) .Start(); try { // matching root operation name var spanBuilderMock = GetDefaultSpanBuilderMock(); var shim = new SpanBuilderShim(GetDefaultTracer(spanBuilderMock), "foo", new List <string> { "foo" }); shim.Start(); spanBuilderMock.Verify(o => o.SetCreateChild(false), Times.Once); // mis-matched root operation name spanBuilderMock = GetDefaultSpanBuilderMock(); shim = new SpanBuilderShim(GetDefaultTracer(spanBuilderMock), "foo", new List <string> { "bar" }); shim.Start(); spanBuilderMock.Verify(o => o.SetCreateChild(true), Times.Once); } finally { activity.Stop(); } }
public async Task Activity_StartedBeforeHttpCall_ReturnsMatchingActivity() { // Arrange var activity = new System.Diagnostics.Activity("Tests"); activity.Start(); var expectedCorrelationId = activity.RootId; var testEndpointUrl = @$ "{WebFixture.BaseUrl}/api/mock"; using var client = _fixture.HttpClientFactory.CreateClient(); //Act var response = await client.GetAsync(testEndpointUrl); var responseBody = await response.Content.ReadAsStringAsync(); activity.Stop(); var actualCorrelationId = GetPropertyValue(responseBody, "correlationId"); var actualTraceId = GetPropertyValue(responseBody, "traceId"); var actualSpanId = GetPropertyValue(responseBody, "spanId"); var actualOperationName = GetPropertyValue(responseBody, "operationName"); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(expectedCorrelationId, actualCorrelationId); Assert.False(string.IsNullOrWhiteSpace(actualTraceId)); Assert.False(string.IsNullOrWhiteSpace(actualSpanId)); Assert.False(string.IsNullOrWhiteSpace(actualOperationName)); }
public void OnHasActivityStarted() { // Arrange System.Diagnostics.Activity.Current = null; LayoutRenderer.Register("activity", typeof(ActivityTraceLayoutRenderer)); LayoutRenderer.Register("onhasactivity", typeof(OnHasActivityTraceLayoutRendererWrapper)); var logFactory = new LogFactory(); var logConfig = new LoggingConfiguration(logFactory); var memTarget = new NLog.Targets.MemoryTarget("memory"); logConfig.AddRuleForAllLevels(memTarget); memTarget.Layout = "${message} ${onhasactivity:inner=${activity:operationName}}"; logFactory.Configuration = logConfig; var logger = logFactory.GetLogger(nameof(OnHasActivityNotActive)); // Act var activity = new System.Diagnostics.Activity("World"); try { activity.Start(); logger.Info("Hello"); // Assert Assert.NotNull(System.Diagnostics.Activity.Current); Assert.Single(memTarget.Logs); Assert.Equal("Hello World", memTarget.Logs[0]); } finally { activity.Stop(); } }
public void HomeErrorReturnsActivityId() { var controller = new HomeController(); var a = new System.Diagnostics.Activity("dummy activity"); a.Start(); var result = controller.Error() as ViewResult; a.Stop(); Assert.AreEqual(a.Id, result.ViewData["requestId"]); }
public void ActivityAccessor_ActivityStopped_ShouldStillReturnNewActivity() { var activity = new System.Diagnostics.Activity("Tests"); activity.Start(); var initialCorrelationId = activity.RootId; activity.Stop(); // Act var correlationId = _fixture.ActivityContextAccessor.CorrelationId; // Assert Assert.NotEmpty(correlationId); Assert.NotEqual(initialCorrelationId, correlationId); }
public void ActivityAccessor_Activity_ReturnsCorrelationId() { // Arrange var activity = new System.Diagnostics.Activity("Tests"); activity.Start(); var expectedCorrelationId = activity.RootId; // Act var actualCorrelationId = _fixture.ActivityContextAccessor.CorrelationId; activity.Stop(); // Assert Assert.Equal(expectedCorrelationId, actualCorrelationId); }
/// <summary> /// Invoke Grain call context. /// </summary> /// <param name="context">The <see cref="IOutgoingGrainCallContext"/>.</param> /// <returns>A <see cref="Task"/>.</returns> public async Task Invoke(IIncomingGrainCallContext context) { var activity = new System.Diagnostics.Activity(OrleansDistributedTracingConstants.IncomingGrainFilterActivityName); if (RequestContext.Get(Constants.ActivityHeader) is string traceId) { activity.SetParentId(traceId); } if (RequestContext.Get(Constants.BaggageHeader) is IEnumerable <KeyValuePair <string, string> > baggage) { foreach (var item in baggage) { activity.AddBaggage(item.Key, item.Value); } } activity.Start(); await context.Invoke(); activity.Stop(); }
private Data Load() { var activity = new System.Diagnostics.Activity("LoadData").Start(); using (LogContext.PushProperty("TraceId", activity.TraceId.ToHexString(), true)) { try { var loaderTask = _loader.LoadAsync(CancellationToken.None); HasLoadedData = loaderTask.Wait(Loaders.DataLoader.Timeout); if (!HasLoadedData) { throw new InvalidDataException($"Timeout loading data"); } var data = loaderTask.Result; if (!data.IsLoaded) { throw new InvalidDataException($"Data not loaded"); } return(data); } catch (Exception e) { Logger.Fatal(e, "Timetable not loaded"); throw; } finally { activity.Stop(); Logger.Information("Data loaded in: {duration}ms", activity.Duration.TotalMilliseconds); } } }