Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/All.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,11 @@
<Folder Name="/HotChocolate/Diagnostics/" />
<Folder Name="/HotChocolate/Diagnostics/src/">
<Project Path="HotChocolate/Diagnostics/src/Diagnostics/HotChocolate.Diagnostics.csproj" />
<Project Path="HotChocolate/Diagnostics/src/Fusion.Diagnostics/HotChocolate.Fusion.Diagnostics.csproj" />
</Folder>
<Folder Name="/HotChocolate/Diagnostics/test/">
<Project Path="HotChocolate/Diagnostics/test/Diagnostics.Tests/HotChocolate.Diagnostics.Tests.csproj" />
<Project Path="HotChocolate/Diagnostics/test/Fusion.Diagnostics.Tests/HotChocolate.Fusion.Diagnostics.Tests.csproj" />
</Folder>
<Folder Name="/HotChocolate/Adapters/" />
<Folder Name="/HotChocolate/Adapters/src/">
Expand Down
2 changes: 2 additions & 0 deletions src/HotChocolate/Diagnostics/HotChocolate.Diagnostics.slnx
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
<Solution>
<Folder Name="/src/">
<Project Path="src/Diagnostics/HotChocolate.Diagnostics.csproj" />
<Project Path="src/Fusion.Diagnostics/HotChocolate.Fusion.Diagnostics.csproj" />
</Folder>
<Folder Name="/test/">
<Project Path="test/Diagnostics.Tests/HotChocolate.Diagnostics.Tests.csproj" />
<Project Path="test/Fusion.Diagnostics.Tests/HotChocolate.Fusion.Diagnostics.Tests.csproj" />
</Folder>
</Solution>
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ public class ActivityEnricher
/// <summary>
/// Initializes a new instance of <see cref="ActivityEnricher"/>.
/// </summary>
/// <param name="stringBuilderPoolPool"></param>
/// <param name="stringBuilderPool"></param>
/// <param name="options"></param>
protected ActivityEnricher(
ObjectPool<StringBuilder> stringBuilderPoolPool,
ObjectPool<StringBuilder> stringBuilderPool,
InstrumentationOptions options)
{
StringBuilderPool = stringBuilderPoolPool;
StringBuilderPool = stringBuilderPool;
_options = options;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@ public static IRequestExecutorBuilder AddInstrumentation(
private sealed class InternalActivityEnricher : ActivityEnricher
{
public InternalActivityEnricher(
ObjectPool<StringBuilder> stringBuilderPoolPool,
ObjectPool<StringBuilder> stringBuilderPool,
InstrumentationOptions options)
: base(stringBuilderPoolPool, options)
: base(stringBuilderPool, options)
{
}
}
Expand Down
10 changes: 10 additions & 0 deletions src/HotChocolate/Diagnostics/src/Fusion.Diagnostics/ContextKeys.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace HotChocolate.Fusion.Diagnostics;

internal static class ContextKeys
{
public const string HttpRequestActivity = "HotChocolate.Fusion.Diagnostics.HttpRequest";
public const string ParseHttpRequestActivity = "HotChocolate.Fusion.Diagnostics.ParseHttpRequest";
public const string FormatHttpResponseActivity = "HotChocolate.Fusion.Diagnostics.FormatHttpResponse";
public const string RequestActivity = "HotChocolate.Fusion.Diagnostics.Request";
public const string ValidateActivity = "HotChocolate.Fusion.Diagnostics.Validate";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
using System.Text;
using HotChocolate.Fusion.Diagnostics;
using HotChocolate.Fusion.Diagnostics.Listeners;
using HotChocolate.Fusion.Configuration;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.ObjectPool;

namespace Microsoft.Extensions.DependencyInjection;

public static class DiagnosticsFusionGatewayBuilderExtensions
{
public static IFusionGatewayBuilder AddInstrumentation(
this IFusionGatewayBuilder builder,
Action<InstrumentationOptions>? options = null)
=> AddInstrumentation(builder, (_, opt) => options?.Invoke(opt));

public static IFusionGatewayBuilder AddInstrumentation(
this IFusionGatewayBuilder builder,
Action<IServiceProvider, InstrumentationOptions> options)
{
ArgumentNullException.ThrowIfNull(builder);
ArgumentNullException.ThrowIfNull(options);

builder.Services.TryAddSingleton(
sp =>
{
var optionInst = new InstrumentationOptions();
options(sp, optionInst);
return optionInst;
});

builder.Services.TryAddSingleton<InternalActivityEnricher>();

builder.AddDiagnosticEventListener(
sp => new ActivityFusionExecutionDiagnosticEventListener(
sp.GetService<FusionActivityEnricher>() ??
sp.GetRequiredService<InternalActivityEnricher>(),
sp.GetRequiredService<InstrumentationOptions>()));

builder.AddDiagnosticEventListener(
sp => new ActivityServerDiagnosticListener(
sp.GetService<FusionActivityEnricher>() ??
sp.GetRequiredService<InternalActivityEnricher>(),
sp.GetRequiredService<InstrumentationOptions>()));

return builder;
}

private sealed class InternalActivityEnricher : FusionActivityEnricher
{
public InternalActivityEnricher(
ObjectPool<StringBuilder> stringBuilderPool,
InstrumentationOptions options)
: base(stringBuilderPool, options)
{
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using HotChocolate.Fusion.Diagnostics;

namespace OpenTelemetry.Trace;

/// <summary>
/// Provides configuration methods to open-telemetry.
/// </summary>
public static class TracerProviderBuilderExtensions
{
/// <summary>
/// Adds the Hot Chocolate Fusion instrumentation to open-telemetry.
/// </summary>
/// <param name="builder">
/// The tracing builder.
/// </param>
/// <returns>
/// Returns the tracing builder for configuration chaining.
/// </returns>
public static TracerProviderBuilder AddHotChocolateFusionInstrumentation(
this TracerProviderBuilder builder)
{
ArgumentNullException.ThrowIfNull(builder);

builder.AddSource(HotChocolateFusionActivitySource.GetName());
return builder;
}
}
Loading
Loading