public void Should_fire_activity_start_stop_when_sampling() { var stopFired = false; var startFired = false; using var listener = new ActivityListener { ShouldListenTo = source => source.Name == "MongoDB.Driver.Core.Extensions.DiagnosticSources", Sample = (ref ActivityCreationOptions <ActivityContext> _) => ActivitySamplingResult.PropagationData, ActivityStarted = _ => startFired = true, ActivityStopped = _ => stopFired = true }; ActivitySource.AddActivityListener(listener); var behavior = new DiagnosticsActivityEventSubscriber(); behavior.TryGetEventHandler <CommandStartedEvent>(out var startEvent).ShouldBeTrue(); behavior.TryGetEventHandler <CommandSucceededEvent>(out var stopEvent).ShouldBeTrue(); startEvent(new CommandStartedEvent()); stopEvent(new CommandSucceededEvent()); startFired.ShouldBeTrue(); stopFired.ShouldBeTrue(); Activity.Current.ShouldBeNull(); }
public void Should_not_fire_activity_start_stop_when_no_listener_attached() { var stopFired = false; var startFired = false; using var listener = new ActivityListener { ShouldListenTo = source => source.Name == "Nonsense", ActivityStarted = _ => startFired = true, ActivityStopped = _ => stopFired = true }; ActivitySource.AddActivityListener(listener); var behavior = new DiagnosticsActivityEventSubscriber(); behavior.TryGetEventHandler <CommandStartedEvent>(out var startEvent).ShouldBeTrue(); behavior.TryGetEventHandler <CommandSucceededEvent>(out var stopEvent).ShouldBeTrue(); startEvent(new CommandStartedEvent()); stopEvent(new CommandSucceededEvent()); startFired.ShouldBeFalse(); stopFired.ShouldBeFalse(); }
public void Should_fire_activity_start_stop_when_listener_attached() { var diagnosticListener = new DiagnosticListener("DummySource"); var stopFired = false; var startFired = false; diagnosticListener.Subscribe(new CallbackDiagnosticListener(pair => { // This should not fire if (pair.Key == $"{DiagnosticsActivityEventSubscriber.ActivityName}.Start") { startFired = true; } // This should not fire if (pair.Key == $"{DiagnosticsActivityEventSubscriber.ActivityName}.Stop") { stopFired = true; } })); var behavior = new DiagnosticsActivityEventSubscriber(diagnosticListener); behavior.TryGetEventHandler <CommandStartedEvent>(out var startEvent).ShouldBeTrue(); behavior.TryGetEventHandler <CommandSucceededEvent>(out var stopEvent).ShouldBeTrue(); startEvent(new CommandStartedEvent()); stopEvent(new CommandSucceededEvent()); startFired.ShouldBeTrue(); stopFired.ShouldBeTrue(); Activity.Current.ShouldBeNull(); }
public void Should_handle_parallel_activities() { var diagnosticListener = new DiagnosticListener("DummySource"); var activities = new List <Activity>(); diagnosticListener.Subscribe(new CallbackDiagnosticListener(pair => { if (pair.Key == $"{DiagnosticsActivityEventSubscriber.ActivityName}.Start") { pair.Value.ShouldNotBeNull(); pair.Value.ShouldBeAssignableTo <CommandStartedEvent>(); activities.Add(Activity.Current); } if (pair.Key == $"{DiagnosticsActivityEventSubscriber.ActivityName}.Stop") { pair.Value.ShouldNotBeNull(); pair.Value.ShouldBeAssignableTo <CommandSucceededEvent>(); activities.Add(Activity.Current); } })); var behavior = new DiagnosticsActivityEventSubscriber(diagnosticListener); behavior.TryGetEventHandler <CommandStartedEvent>(out var startEvent).ShouldBeTrue(); behavior.TryGetEventHandler <CommandSucceededEvent>(out var stopEvent).ShouldBeTrue(); var outerActivity = new Activity("Outer"); outerActivity.Start(); var connectionId = new ConnectionId(new ServerId(new ClusterId(), new DnsEndPoint("localhost", 8000))); var databaseNamespace = new DatabaseNamespace("test"); startEvent(new CommandStartedEvent("update", new BsonDocument(), databaseNamespace, null, 1, connectionId)); startEvent(new CommandStartedEvent("insert", new BsonDocument(), databaseNamespace, null, 2, connectionId)); stopEvent(new CommandSucceededEvent("update", new BsonDocument(), null, 1, connectionId, TimeSpan.Zero)); stopEvent(new CommandSucceededEvent("insert", new BsonDocument(), null, 2, connectionId, TimeSpan.Zero)); outerActivity.Stop(); activities.Count.ShouldBe(4); Activity.Current.ShouldBeNull(); }
public void Should_start_and_log_successful_activity() { var diagnosticListener = new DiagnosticListener("DummySource"); var stopFired = false; var startFired = false; diagnosticListener.Subscribe(new CallbackDiagnosticListener(pair => { if (pair.Key == $"{DiagnosticsActivityEventSubscriber.ActivityName}.Start") { startFired = true; pair.Value.ShouldNotBeNull(); Activity.Current.ShouldNotBeNull(); Activity.Current.OperationName.ShouldBe(DiagnosticsActivityEventSubscriber.ActivityName); pair.Value.ShouldBeAssignableTo <CommandStartedEvent>(); } if (pair.Key == $"{DiagnosticsActivityEventSubscriber.ActivityName}.Stop") { stopFired = true; pair.Value.ShouldNotBeNull(); Activity.Current.ShouldNotBeNull(); Activity.Current.OperationName.ShouldBe(DiagnosticsActivityEventSubscriber.ActivityName); pair.Value.ShouldBeAssignableTo <CommandSucceededEvent>(); } })); var behavior = new DiagnosticsActivityEventSubscriber(diagnosticListener); behavior.TryGetEventHandler <CommandStartedEvent>(out var startEvent).ShouldBeTrue(); behavior.TryGetEventHandler <CommandSucceededEvent>(out var stopEvent).ShouldBeTrue(); startEvent(new CommandStartedEvent()); stopEvent(new CommandSucceededEvent()); startFired.ShouldBeTrue(); stopFired.ShouldBeTrue(); Activity.Current.ShouldBeNull(); }