From 9717e8a75cc886554259ec96a4a8a4858aaa274c Mon Sep 17 00:00:00 2001 From: Christoffer Hjalmarsson Date: Wed, 11 Oct 2023 21:17:12 +0200 Subject: [PATCH] Update changelog and add tests --- .../CHANGELOG.md | 4 ++ .../CHANGELOG.md | 5 +++ .../ActivityHelperTest.cs | 39 +++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/src/OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule/CHANGELOG.md b/src/OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule/CHANGELOG.md index 4435c22bc6..17bbab2d13 100644 --- a/src/OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule/CHANGELOG.md +++ b/src/OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +* Fixed an issue where activities were closed incorrectly before processing completed. + Activity processor's `OnEnd` will now happen after `AspNetInstrumentationOptions.Enrich`. + ([#1388](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/pull/1388)) + * Update `OpenTelemetry.Api` to `1.6.0`. ([#1344](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/pull/1344)) diff --git a/src/OpenTelemetry.Instrumentation.AspNet/CHANGELOG.md b/src/OpenTelemetry.Instrumentation.AspNet/CHANGELOG.md index 93680f1418..2b6fa2d9f8 100644 --- a/src/OpenTelemetry.Instrumentation.AspNet/CHANGELOG.md +++ b/src/OpenTelemetry.Instrumentation.AspNet/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +* Release together with `OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule`. + Fixed an issue where activities were closed incorrectly before processing completed. + Activity processor's `OnEnd` will now happen after `AspNetInstrumentationOptions.Enrich`. + ([#1388](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/pull/1388)) + ## 1.0.0-rc9.9 Released 2023-Jun-09 diff --git a/test/OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule.Tests/ActivityHelperTest.cs b/test/OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule.Tests/ActivityHelperTest.cs index 5b229b3fb2..b5d8216e6a 100644 --- a/test/OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule.Tests/ActivityHelperTest.cs +++ b/test/OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule.Tests/ActivityHelperTest.cs @@ -447,6 +447,45 @@ public void Fire_Exception_Events() Assert.Equal(1, callbacksFired); } + [Fact] + public void Should_Handle_Activity_Events_In_Correct_Order() + { + var eventOrder = new List(); + const string ActivityOnStarted = "ActivityOnStarted"; + const string ActivityOnStopped = "ActivityOnStarted"; + const string OnStartCallback = "OnStartCallback"; + const string OnStopCallback = "OnStopCallback"; + + this.EnableListener(_ => eventOrder.Add(ActivityOnStarted), _ => eventOrder.Add(ActivityOnStopped)); + + var context = HttpContextHelper.GetFakeHttpContext(); + using var rootActivity = ActivityHelper.StartAspNetActivity(this.noopTextMapPropagator, context, (_, _) => eventOrder.Add(OnStartCallback)); + ActivityHelper.StopAspNetActivity(this.noopTextMapPropagator, rootActivity, context, (_, _) => eventOrder.Add(OnStopCallback)); + + var expectedOrder = new List() + { + ActivityOnStarted, + OnStartCallback, + OnStopCallback, + ActivityOnStopped, + }; + + Assert.Equal(expectedOrder, eventOrder); + } + + [Fact] + public void Should_Not_Pass_Stopped_Activity_To_Callbacks() + { + this.EnableListener(); + + var wasStopped = false; + var context = HttpContextHelper.GetFakeHttpContext(); + using var rootActivity = ActivityHelper.StartAspNetActivity(this.noopTextMapPropagator, context, (activity, _) => wasStopped = activity.IsStopped || wasStopped); + ActivityHelper.StopAspNetActivity(this.noopTextMapPropagator, rootActivity, context, (activity, _) => wasStopped = activity.IsStopped || wasStopped); + + Assert.False(wasStopped); + } + private void EnableListener(Action? onStarted = null, Action? onStopped = null, Func? onSample = null) { Debug.Assert(this.activitySourceListener == null, "Cannot attach multiple listeners in tests.");