@@ -27,8 +27,8 @@ public abstract class TestsBase
2727{
2828 protected TracerProvider ? TracerProvider ;
2929 protected string ? ToolCallingMiddlewareCity ;
30- internal static string ? OpenTelemetryDisplayName ;
31- private static McpClientTools ? _mcpClientTools ;
30+ private string ? _openTelemetryDisplayName ;
31+ private McpClientTools ? _mcpClientTools ;
3232 private const string TestName = "MyAgent" ;
3333 private const string TestInstructions = "You are a nice AI and a weather expert" ;
3434 private const string TestDescription = "Sampledescription" ;
@@ -86,7 +86,7 @@ protected async Task NormalAgentTestsAsync(AgentProvider provider)
8686
8787 protected async Task OpenTelemetryAndLoggingMiddlewareTestsAsync ( AgentProvider provider )
8888 {
89- OpenTelemetryDisplayName = null ;
89+ _openTelemetryDisplayName = null ;
9090 TestLoggerFactory testLogger = new ( ) ;
9191 AIAgent agent = await GetAgentForScenarioAsync ( provider , AgentScenario . OpenTelemetryAndLoggingMiddleware , testLogger ) ;
9292 Assert . NotNull ( agent . Id ) ;
@@ -100,7 +100,7 @@ protected async Task OpenTelemetryAndLoggingMiddlewareTestsAsync(AgentProvider p
100100 Assert . True ( idCondition ) ;
101101 Assert . True ( completedCondition ) ;
102102 TracerProvider ? . ForceFlush ( ) ;
103- Assert . Equal ( $ "invoke_agent { agent . Name } ({ agent . Id } )", OpenTelemetryDisplayName ) ;
103+ Assert . Equal ( $ "invoke_agent { agent . Name } ({ agent . Id } )", _openTelemetryDisplayName ) ;
104104
105105 switch ( provider )
106106 {
@@ -178,7 +178,7 @@ private async Task<AIAgent> GetAgentForScenarioAsync(AgentProvider provider, Age
178178 string sourceName = "AiSource" ;
179179 TracerProviderBuilder tracerProviderBuilder = Sdk . CreateTracerProviderBuilder ( )
180180 . AddSource ( sourceName )
181- . AddProcessor ( new BatchActivityExportProcessor ( new CustomOpenTelemetryExporter ( ) ) ) ;
181+ . AddProcessor ( new BatchActivityExportProcessor ( new CustomOpenTelemetryExporter ( name => _openTelemetryDisplayName = name ) ) ) ;
182182 TracerProvider = tracerProviderBuilder . Build ( ) ;
183183
184184 ServiceCollection serviceCollection = new ( ) ;
@@ -607,7 +607,7 @@ Task<MistralAgentOptions> GetMistralAgentOptions(string model)
607607 }
608608 }
609609
610- private static async Task < IList < AITool > > GetToolsForScenarioAsync ( AgentProvider provider , AgentScenario scenario )
610+ private async Task < IList < AITool > > GetToolsForScenarioAsync ( AgentProvider provider , AgentScenario scenario )
611611 {
612612 List < AITool > tools = [ ] ;
613613 switch ( scenario )
@@ -626,7 +626,8 @@ private static async Task<IList<AITool>> GetToolsForScenarioAsync(AgentProvider
626626
627627 break ;
628628 case AgentScenario . McpToolCall :
629- _mcpClientTools = await new AIToolsFactory ( ) . GetToolsFromRemoteMcpAsync ( "https://trellodotnetassistantbackend.azurewebsites.net/runtime/webhooks/mcp?code=Tools" ) ;
629+ _mcpClientTools ??= await new AIToolsFactory ( )
630+ . GetToolsFromRemoteMcpAsync ( "https://trellodotnetassistantbackend.azurewebsites.net/runtime/webhooks/mcp?code=Tools" ) ;
630631 return _mcpClientTools . Tools ;
631632 }
632633
@@ -667,13 +668,19 @@ public enum AgentProvider
667668
668669public sealed class CustomOpenTelemetryExporter : BaseExporter < Activity >
669670{
671+ private readonly Action < string > _onExport ;
672+
673+ public CustomOpenTelemetryExporter ( Action < string > onExport )
674+ {
675+ ArgumentNullException . ThrowIfNull ( onExport ) ;
676+ _onExport = onExport ;
677+ }
678+
670679 public override ExportResult Export ( in Batch < Activity > batch )
671680 {
672681 foreach ( Activity activity in batch )
673682 {
674- string name = activity . DisplayName ;
675-
676- TestsBase . OpenTelemetryDisplayName = name ;
683+ _onExport ( activity . DisplayName ) ;
677684 // Send to your destination (HTTP, queue, DB, etc.)
678685 }
679686
0 commit comments