Пример #1
0
        public async Task Should_start_and_log_activity()
        {
            var diagnosticListener = new DiagnosticListener("DummySource");
            var startCalled        = false;

            diagnosticListener.Subscribe(new CallbackDiagnosticListener(pair =>
            {
                if (pair.Key == $"{ActivityNames.OutgoingPhysicalMessage}.Start")
                {
                    startCalled = true;
                    pair.Value.ShouldNotBeNull();
                    Activity.Current.ShouldNotBeNull();
                    Activity.Current.OperationName.ShouldBe(ActivityNames.OutgoingPhysicalMessage);
                    pair.Value.ShouldBeAssignableTo <IOutgoingPhysicalMessageContext>();
                }
            }));

            var context = new TestableOutgoingPhysicalMessageContext();

            var behavior = new OutgoingPhysicalMessageDiagnostics(diagnosticListener);

            await behavior.Invoke(context, () => Task.CompletedTask);

            startCalled.ShouldBeTrue();
        }
        public async Task Should_start_and_log_activity()
        {
            var startCalled = false;

            using var listener = new ActivityListener
                  {
                      ShouldListenTo  = source => source.Name == "NServiceBus.Extensions.Diagnostics",
                      Sample          = (ref ActivityCreationOptions <ActivityContext> _) => ActivitySamplingResult.AllDataAndRecorded,
                      ActivityStarted = activity =>
                      {
                          startCalled = true;
                          activity.ShouldNotBeNull();
                          activity.OperationName.ShouldBe(ActivityNames.OutgoingPhysicalMessage);
                      },
                  };
            ActivitySource.AddActivityListener(listener);

            var context = new TestableOutgoingPhysicalMessageContext();

            var behavior = new OutgoingPhysicalMessageDiagnostics(new FakeActivityEnricher());

            await behavior.Invoke(context, () => Task.CompletedTask);

            startCalled.ShouldBeTrue();
        }
Пример #3
0
        public async Task Should_fire_activity_start_stop_when_listener_attached()
        {
            var diagnosticListener = new DiagnosticListener("DummySource");
            var context            = new TestableOutgoingPhysicalMessageContext();
            var stopFired          = false;
            var startFired         = false;

            diagnosticListener.Subscribe(new CallbackDiagnosticListener(pair =>
            {
                if (pair.Key == $"{ActivityNames.OutgoingPhysicalMessage}.Start")
                {
                    startFired = true;
                }

                if (pair.Key == $"{ActivityNames.OutgoingPhysicalMessage}.Stop")
                {
                    stopFired = true;
                }
            }));

            var behavior = new OutgoingPhysicalMessageDiagnostics(diagnosticListener);

            await behavior.Invoke(context, () => Task.CompletedTask);

            startFired.ShouldBeTrue();
            stopFired.ShouldBeTrue();
        }
Пример #4
0
        public async Task Should_add_headers_to_tags()
        {
            var diagnosticListener = new DiagnosticListener("DummySource");
            var startCalled        = false;

            diagnosticListener.Subscribe(new CallbackDiagnosticListener(pair =>
            {
                if (pair.Key == $"{ActivityNames.OutgoingPhysicalMessage}.Start")
                {
                    startCalled = true;

                    var started = Activity.Current;
                    started.ShouldNotBeNull();
                    started.Tags.ShouldNotContain(kvp => kvp.Key == "foo");
                    started.Tags.ShouldContain(kvp => kvp.Key == "SomeHeader1" && kvp.Value == "SomeValue1");
                    started.Tags.ShouldContain(kvp => kvp.Key == "SomeHeader2" && kvp.Value == "SomeValue2");
                }
            }));

            var context = new TestableOutgoingPhysicalMessageContext
            {
                Headers =
                {
                    { "foo",                     "bar"        },
                    { "NServiceBus.SomeHeader1", "SomeValue1" },
                    { "NServiceBus.SomeHeader2", "SomeValue2" },
                }
            };

            var behavior = new OutgoingPhysicalMessageDiagnostics(diagnosticListener);

            await behavior.Invoke(context, () => Task.CompletedTask);

            startCalled.ShouldBeTrue();
        }
        public async Task Should_not_fire_activity_start_stop_when_no_listener_attached()
        {
            var context    = new TestableOutgoingPhysicalMessageContext();
            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 OutgoingPhysicalMessageDiagnostics(new FakeActivityEnricher());

            await behavior.Invoke(context, () => Task.CompletedTask);

            startFired.ShouldBeFalse();
            stopFired.ShouldBeFalse();
        }
        public async Task Should_start_activity_and_set_appropriate_headers()
        {
            // Generate an id we can use for the request id header (in the correct format)

            Activity started = null;

            using var listener = new ActivityListener
                  {
                      ShouldListenTo  = source => source.Name == "NServiceBus.Extensions.Diagnostics",
                      Sample          = (ref ActivityCreationOptions <ActivityContext> _) => ActivitySamplingResult.AllDataAndRecorded,
                      ActivityStarted = activity => started = activity,
                  };
            ActivitySource.AddActivityListener(listener);

            var context = new TestableOutgoingPhysicalMessageContext();

            var behavior = new OutgoingPhysicalMessageDiagnostics(new FakeActivityEnricher());

            var outerActivity = new Activity("Outer")
            {
                TraceStateString = "TraceStateValue",
            };

            outerActivity.AddBaggage("Key1", "Value1");
            outerActivity.AddBaggage("Key2", "Value2");
            outerActivity.Start();

            await behavior.Invoke(context, () => Task.CompletedTask);

            outerActivity.Stop();

            started.ShouldNotBeNull();
            started.ParentId.ShouldBe(outerActivity.Id);

            context.Headers.ShouldContain(kvp => kvp.Key == "traceparent" && kvp.Value == started.Id);
            context.Headers.ShouldContain(kvp => kvp.Key == "tracestate" && kvp.Value == outerActivity.TraceStateString);
            context.Headers.ShouldContain(kvp => kvp.Key == "Correlation-Context" && kvp.Value == "Key2=Value2,Key1=Value1");
            context.Headers.ShouldContain(kvp => kvp.Key == "baggage" && kvp.Value == "Key2=Value2,Key1=Value1");
        }
        public async Task Should_fire_activity_start_stop_when_listener_attached()
        {
            var context    = new TestableOutgoingPhysicalMessageContext();
            var stopFired  = false;
            var startFired = false;

            using var listener = new ActivityListener
                  {
                      ShouldListenTo  = source => source.Name == "NServiceBus.Extensions.Diagnostics",
                      Sample          = (ref ActivityCreationOptions <ActivityContext> _) => ActivitySamplingResult.AllDataAndRecorded,
                      ActivityStarted = _ => startFired = true,
                      ActivityStopped = _ => stopFired = true
                  };
            ActivitySource.AddActivityListener(listener);

            var behavior = new OutgoingPhysicalMessageDiagnostics(new FakeActivityEnricher());

            await behavior.Invoke(context, () => Task.CompletedTask);

            startFired.ShouldBeTrue();
            stopFired.ShouldBeTrue();
        }
Пример #8
0
        public async Task Should_start_activity_and_set_appropriate_headers()
        {
            // Generate an id we can use for the request id header (in the correct format)

            var      diagnosticListener = new DiagnosticListener("DummySource");
            Activity started            = null;

            diagnosticListener.Subscribe(new CallbackDiagnosticListener(pair =>
            {
                if (pair.Key == $"{ActivityNames.OutgoingPhysicalMessage}.Start")
                {
                    started = Activity.Current;
                }
            }));

            var context = new TestableOutgoingPhysicalMessageContext();

            var behavior = new OutgoingPhysicalMessageDiagnostics(diagnosticListener);

            var activity = new Activity("Outer")
            {
                TraceStateString = "TraceStateValue",
            };

            activity.AddBaggage("Key1", "Value1");
            activity.AddBaggage("Key2", "Value2");
            activity.Start();

            await behavior.Invoke(context, () => Task.CompletedTask);

            activity.Stop();

            started.ShouldNotBeNull();
            started.ParentId.ShouldBe(activity.Id);

            context.Headers.ShouldContain(kvp => kvp.Key == "traceparent" && kvp.Value == started.Id);
            context.Headers.ShouldContain(kvp => kvp.Key == "tracestate" && kvp.Value == activity.TraceStateString);
            context.Headers.ShouldContain(kvp => kvp.Key == "Correlation-Context" && kvp.Value == "Key2=Value2,Key1=Value1");
        }