OpenTelemetry

Den här funktionen kräver NuGet-paketet Microsoft.Testing.Extensions.OpenTelemetry .

Det här tillägget integrerar OpenTelemetry med Microsoft. Testing.Platform (MTP), vilket gör att testkörningar kan generera spårningar och mått via standard-OpenTelemetry SDK.

Anmärkning

Det här tillägget är tillgängligt i MTP från och med version 2.1.0.

Viktigt!

Från och med MTP 2.4.0 följer OpenTelemetry-tillägget MTP-versionen och dess offentliga startpunkter är inte längre experimentella.

Välj providerägarskap

Välj om MTP eller ditt program äger OpenTelemetry-leverantörerna.

Använda MTP-ägda leverantörer

Inaktivera den automatiskt genererade startpunkten (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) och anropa AddOpenTelemetryProvider i din Main metod:

var builder = await TestApplication.CreateBuilderAsync(args);

builder.AddOpenTelemetryProvider(
    withTracing: tracing => tracing
        .AddTestingPlatformInstrumentation()
        .AddConsoleExporter(),
    withMetrics: metrics => metrics
        .AddTestingPlatformInstrumentation()
        .AddConsoleExporter()
);

using var app = await builder.BuildAsync();
return await app.RunAsync();

Om du vill konfigurera instrumentation, resursattribut och en OTLP-exportör från standardmiljövariabler OTEL_* anropar du:

builder.AddOpenTelemetryProviderFromEnvironment();

Metoden lägger bara till instrumentation när du konfigurerar en exportör eller skickar ett konfigurationsåteranrop, så att du kan lämna registreringen i programmet när vissa miljöer inte exporterar telemetri.

Använda programägda leverantörer

Från och med förhandsversionen av MTP 2.5 anropar du AddTestingPlatformDiagnostics om programmet redan konfigurerar OpenTelemetry via Aspire ServiceDefaults, Microsoft.Extensions.Hosting eller en annan composition root. Den här metoden aktiverar aktivitetskällan Microsoft.Testing.Platform och mätaren utan att skapa, rensa eller ta bort en TracerProvider eller MeterProvider.

Registrera den programägda providern med AddTestingPlatformInstrumentation i dess builder-objekt för spårning och mätvärden. Programmet behåller ägarskapet för sina leverantörer, exportörer, resursidentitet och avyttring.

För en MSBuild-genererad hostad startpunkt refererar du till Microsoft.Testing.Extensions.Hosting, anger TestingPlatformHostFactory till värdfabriksmetoden och anger:

<TestingPlatformOpenTelemetryMode>HostOwned</TestingPlatformOpenTelemetryMode>

HostOwned anropar endast AddTestingPlatformDiagnostics; den skapar inte providrar och ersätter inte värdresursens identitet. Information om krav för värdlivscykel och fabrik finns i Värdintegrering.

API (gränssnitt för programmering av applikationer)

AddTestingPlatformDiagnostics

Aktiverar MTP:s aktivitetskälla och mätare för programägda lyssnare eller OpenTelemetry-leverantörer utan att överföra providerägarägarskapet till MTP.

AddOpenTelemetryProvider

Registrerar OpenTelemetry-providern på ITestApplicationBuilder. Accepterar två valfria återanrop:

  • withTracing: konfigurerar TracerProviderBuilder för distribuerad spårning.
  • withMetrics: konfigurerar MeterProviderBuilder för insamling av metrik.

AddTestingPlatformInstrumentation

Anropa TracerProviderBuilder eller MeterProviderBuilder för att prenumerera på den inbyggda Microsoft.Testing.Platform-aktivitetskällan och mätaren.

AddTestingPlatformResource

Anropa ResourceBuilder för att lägga till testsammansättnings-, värd-, operativsystems- och körningsattribut. Detektorn identifierar även CI-provider, pipeline, gren och incheckningsinformation för GitHub Actions, Azure-pipelines, GitLab CI och Jenkins.

Fokuserade resurshjälpare

För en leverantör som ägs av programmet anropar du AddTestingPlatformTestResource för att lägga till testspecifik identitet och AddTestingPlatformCIResource för att lägga till CI och ursprungsinformation från källkodshantering. Dessa specialiserade hjälpfunktioner ersätter inte programspecifika attribut som service.*, os.*, host.* eller process.*.

AddOpenTelemetryProviderFromEnvironment

Registrerar spårning, mått, resursidentifiering och en OTLP-exportör från standardvariabler för OpenTelemetry-miljön. OTEL_SDK_DISABLED=true inaktiverar integreringen. Konfigurera OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTEReller OTEL_EXPORTER_OTLP_ENDPOINT för att aktivera export.

Aktivitetskälla och mätare

Tillägget genererar telemetri under:

  • Aktivitetskälla: Microsoft.Testing.Platform
  • Mätare: Microsoft.Testing.Platform

Semantiska konventioner

MTP genererar standardattribut för OpenTelemetry-testning och kod där det finns en konvention, inklusive test.case.name, test.case.result.status, test.suite.namecode.function.name, code.file.path, , code.line.number, code.stacktraceoch error.type. Misslyckade tester anger span-status till Error och lägger till en exception händelse.

MTP utökar konventionerna med ytterligare resultattillstånd (skipped, error, timeout, cancelled och unknown) och testattribut för begrepp som OpenTelemetry inte definierar. För att bevara befintliga instrumentpaneler förblir äldre attribut och instrumentnamn aktiverade som standard.

När startprocessen levererar TRACEPARENT och TRACESTATE placerar MTP testkörningen under det spåret i stället för att starta ett orelaterat rotspår.

MSTest-körningsspann

Från och med förhandsversionen av MSTest 4.5 och MTP 2.5 använder interna MSTest-körningar en kanonisk MTP-ägd aktivitet för varje testkörning. MSTest gör aktiviteten aktuell när den kör testkonstruktorn, initieringen, testmetoden, rensningen och den anpassade TestMethodAttribute koden. Automatiskt instrumenterade HttpClient, SQL, Entity Framework, WCF och anpassade aktiviteter blir därför underaktiviteter till testaktiviteten.

MTP lägger till slutresultatet, tidpunkten, utdata och artefakter till samma aktivitet och stoppar den vid körningens sluttid som registrerats av MSTest. Det här beteendet undviker duplicerade ramverk och resultatintervall och förhindrar asynkron resultatbearbetning från att blåsa upp testvaraktigheten.

Testramverk som inte använder det kanoniska körnings-API:et behåller kompatibilitetstopologin: ramverkskörningsaktiviteten och MTP-resultataktiviteten förblir syskon och resultataktiviteten länkar till aktiviteten som var aktuell när ramverket publicerade den pågående uppdateringen.

Utskickade mätvärden

Instrument Type Enhet Description
test.case.duration Histogram s Testvaraktighet, grupperad efter resultatstatus och svit.
test.case.result.count Counter {test} Slutförda tester, grupperade efter resultatstatus och svit.
test.case.active Upp-och-ner-räknare {test} Tester som körs för närvarande.
test.run.duration Histogram s Körningsvaraktighet, grupperad efter resultatstatus och slutkod.
test.case.retry.count Counter {test} Tester som schemalagts för ett nytt försök av återförsökstillägget.

Miljökonfiguration

Miljövariabel Standardinställning Description
TRACEPARENT, TRACESTATE Inaktivera W3C-spårningskontext för den överordnade körningen.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Kopplar insamlade standardutdata och fel till testintervall. Ange till 0 när utdata kan innehålla hemligheter.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Anger maximalt antal tecken som behålls för ett strängattribut.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Genererar äldre attribut och instrumentnamn tillsammans med semantiska konventionsnamn.
OTEL_SDK_DISABLED Inaktivera Ange till true för att inaktivera OpenTelemetry-SDK:n.
OTEL_SERVICE_NAME Inaktivera Åsidosätter tjänstnamnet.
OTEL_EXPORTER_OTLP_ENDPOINT Inaktivera Anger OTLP-slutpunkten.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Inaktivera Väljer spår- och mätvärdesexportörer.