diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index 59efaed4d44..d559d3b0cc9 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -46,6 +46,7 @@
+
diff --git a/src/HotChocolate/Diagnostics/test/Diagnostics.Tests/ActivityTestHelper.cs b/src/HotChocolate/Diagnostics/test/Diagnostics.Tests/ActivityTestHelper.cs
index aa027f62c9a..21e566de3ce 100644
--- a/src/HotChocolate/Diagnostics/test/Diagnostics.Tests/ActivityTestHelper.cs
+++ b/src/HotChocolate/Diagnostics/test/Diagnostics.Tests/ActivityTestHelper.cs
@@ -1,6 +1,8 @@
using System.Diagnostics;
using System.Text.RegularExpressions;
-using HotChocolate.Utilities;
+using Newtonsoft.Json;
+using OpenTelemetry;
+using OpenTelemetry.Trace;
namespace HotChocolate.Diagnostics;
@@ -13,94 +15,45 @@ public static partial class ActivityTestHelper
public static IDisposable CaptureActivities(out object activities)
{
- var sync = new object();
- var listener = new ActivityListener();
- var root = new OrderedDictionary();
- var lookup = new Dictionary>();
- var spanLookup = new Dictionary>();
- Activity rootActivity = null!;
-
- listener.ShouldListenTo = source => source.Name.EqualsOrdinal("HotChocolate.Diagnostics");
- listener.ActivityStarted = a =>
- {
- lock (sync)
- {
- if (a.Parent is null
- && a.OperationName.EqualsOrdinal("ExecuteHttpRequest")
- && lookup.TryGetValue(rootActivity, out var parentData))
- {
- RegisterActivity(a, parentData);
- lookup[a] = (OrderedDictionary)a.GetCustomProperty("test.data")!;
- }
+ var exported = new List();
- if (a.Parent is not null
- && lookup.TryGetValue(a.Parent, out parentData))
- {
- RegisterActivity(a, parentData);
- lookup[a] = (OrderedDictionary)a.GetCustomProperty("test.data")!;
- spanLookup[a.SpanId] = (OrderedDictionary)a.GetCustomProperty("test.data")!;
- return;
- }
-
- if (a.Parent is null
- && a.ParentSpanId != default
- && spanLookup.TryGetValue(a.ParentSpanId, out parentData))
- {
- RegisterActivity(a, parentData);
- lookup[a] = (OrderedDictionary)a.GetCustomProperty("test.data")!;
- spanLookup[a.SpanId] = (OrderedDictionary)a.GetCustomProperty("test.data")!;
- }
- }
- };
- listener.ActivityStopped = SerializeActivity;
- listener.Sample = (ref ActivityCreationOptions _) =>
- ActivitySamplingResult.AllData;
- ActivitySource.AddActivityListener(listener);
-
- rootActivity = HotChocolateActivitySource.Source.StartActivity()!;
- rootActivity.SetCustomProperty("test.data", root);
- lookup[rootActivity] = root;
- spanLookup[rootActivity.SpanId] = root;
-
- activities = root;
- return new Session(rootActivity, listener);
+ var tracerProvider = Sdk.CreateTracerProviderBuilder()
+ .AddHotChocolateInstrumentation()
+ .SetSampler(new AlwaysOnSampler())
+ .AddInMemoryExporter(exported)
+ .Build()!;
+
+ var capture = new Capture(tracerProvider, exported);
+ activities = capture;
+ return capture;
}
- private static void RegisterActivity(
+ private static OrderedDictionary SerializeActivity(
Activity activity,
- OrderedDictionary parent)
+ IReadOnlyDictionary> byParent)
{
- if (!(parent.TryGetValue("activities", out var value) && value is List