// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 using IntegrationTests.Helpers; using Xunit.Abstractions; namespace IntegrationTests; public class PluginsTests : TestHelper { public PluginsTests(ITestOutputHelper output) : base("Plugins", output) { } [Fact] [Trait("Category", "EndToEnd")] public void InitPlugin() { SetEnvironmentVariable("OTEL_DOTNET_AUTO_PLUGINS", "TestApplication.Plugins.Plugin, TestApplication.Plugins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"); var (standardOutput, _, _) = RunTestApplication(); Assert.Contains("Plugin.Initializing() invoked.", standardOutput); } [Fact] [Trait("Category", "EndToEnd")] public void SubmitsTraces() { using var collector = new MockSpansCollector(Output); SetExporter(collector); collector.Expect("MyCompany.MyProduct.MyLibrary"); #if NETFRAMEWORK collector.Expect("OpenTelemetry.Instrumentation.Http.HttpWebRequest", span => span.Attributes.Any(att => att.Key == "example.plugin")); #else collector.Expect("System.Net.Http", span => span.Attributes.Any(att => att.Key == "example.plugin")); #endif SetEnvironmentVariable("OTEL_DOTNET_AUTO_PLUGINS", "TestApplication.Plugins.Plugin, TestApplication.Plugins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"); var (standardOutput, _, _) = RunTestApplication(); collector.AssertExpectations(); Assert.Contains("Plugin.ConfigureTracesOptions(OtlpExporterOptions options) invoked.", standardOutput); } [Fact] [Trait("Category", "EndToEnd")] public void SubmitMetrics() { using var collector = new MockMetricsCollector(Output); SetExporter(collector); collector.Expect("MyCompany.MyProduct.MyLibrary"); SetEnvironmentVariable("OTEL_DOTNET_AUTO_PLUGINS", "TestApplication.Plugins.Plugin, TestApplication.Plugins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"); var (standardOutput, _, _) = RunTestApplication(); collector.AssertExpectations(); Assert.Contains("Plugin.ConfigureMetricsOptions(OtlpExporterOptions options) invoked.", standardOutput); } }