OpenTelemetry

Tato funkce vyžaduje balíček NuGet Microsoft.Testing.Extensions.OpenTelemetry .

Toto rozšíření integruje OpenTelemetry s Microsoft.Testing.Platform (MTP), což umožňuje běhům testů emitovat stopy a metriky prostřednictvím standardní sady OpenTelemetry SDK.

Poznámka:

Toto rozšíření je k dispozici v MTP od verze 2.1.0.

Důležité

Od verze MTP 2.4.0 se rozšíření OpenTelemetry řídí verzí MTP a její veřejné vstupní body už nejsou experimentální.

Volba vlastnictví poskytovatele

Zvolte, jestli MTP nebo vaše aplikace vlastní zprostředkovatele OpenTelemetry.

Použijte poskytovatele vlastněné společností MTP

Zakažte automaticky vygenerovaný spouštěcí bod (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) a volejte AddOpenTelemetryProvider ve své metodě Main:

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();

Chcete-li nakonfigurovat instrumentaci, atributy prostředků a exportér OTLP ze standardních proměnných prostředí OTEL_*, volejte:

builder.AddOpenTelemetryProviderFromEnvironment();

Metoda přidává instrumentaci pouze v případě, že nakonfigurujete vývozce nebo předáte zpětné volání konfigurace, takže registraci v aplikaci můžete nechat, když některá prostředí neexportuje telemetrii.

Použít poskytovatele spravované aplikací

Od preview verze MTP 2.5 volejte AddTestingPlatformDiagnostics, pokud vaše aplikace již konfiguruje OpenTelemetry prostřednictvím Aspire ServiceDefaults, Microsoft.Extensions.Hosting nebo jiného kompozičního kořene. Tato metoda aktivuje zdroj aktivit a měřič Microsoft.Testing.Platform, aniž by vytvořila, vyprázdnila nebo uvolnila objekt TracerProvider nebo MeterProvider.

Zaregistrujte poskytovatele vlastněného aplikací pomocí AddTestingPlatformInstrumentation v jejích nástrojích pro vytváření trasování a metrik. Aplikace si uchovává vlastnictví svých poskytovatelů, vývozců, identit prostředků a jejich vyřazení.

Pro hostovaný vstupní bod vygenerovaný nástrojem MSBuild odkažte na Microsoft.Testing.Extensions.Hosting, nastavte TestingPlatformHostFactory na metodu hostitelské továrny a nastavte:

<TestingPlatformOpenTelemetryMode>HostOwned</TestingPlatformOpenTelemetryMode>

HostOwned pouze volá AddTestingPlatformDiagnostics; nevytváří poskytovatele ani nenahrazuje identitu prostředku hostitele. Informace o životním cyklu hostitele a požadavcích na továrnu najdete v tématu Integrace hostitele.

API

AddTestingPlatformDiagnostics

Aktivuje zdroj aktivit a měřič MTP pro naslouchače vlastněné aplikací nebo poskytovatele OpenTelemetry, aniž by se vlastnictví poskytovatele převedlo na MTP.

AddOpenTelemetryProvider

Zaregistruje poskytovatele OpenTelemetry na serveru ITestApplicationBuilder. Přijímá dvě volitelná zpětná volání:

  • withTracing: nakonfiguruje TracerProviderBuilder pro distribuované trasování.
  • withMetrics: nakonfiguruje kolekci MeterProviderBuilder metrik.

AddTestingPlatformInstrumentation

Zavolejte na TracerProviderBuilder nebo MeterProviderBuilder pro přihlášení k odběru integrovaného Microsoft.Testing.Platform zdroje a měřiče aktivit.

AddTestingPlatformResource

Použijte ResourceBuilder k přidání atributů testovacího sestavení, hostitele, operačního systému a prostředí runtime. Detektor také identifikuje poskytovatele CI, pipeline, větev a informace o commitu pro GitHub Actions, Azure Pipelines, GitLab CI a Jenkins.

Pomocní správci zaměřených na prostředky

Pro poskytovatele vlastněného aplikací volejte AddTestingPlatformTestResource pro přidání identity specifické pro testy a AddTestingPlatformCIResource pro přidání informací o původu z CI a systému správy zdrojového kódu. Tito specializovaní pomocníci nenahrazují atributy vlastněné aplikací service.*, host.*, os.* nebo process.*.

AddOpenTelemetryProviderFromEnvironment

Zaregistruje trasování, metriky, detekci prostředků a vývozce OTLP ze standardních proměnných prostředí OpenTelemetry. OTEL_SDK_DISABLED=true zakáže integraci. Nakonfigurujte OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTERnebo OTEL_EXPORTER_OTLP_ENDPOINT aktivujte export.

Zdroj a měřič aktivity

Rozšíření generuje telemetrii v části:

  • Zdroj aktivity: Microsoft.Testing.Platform
  • Metr: Microsoft.Testing.Platform

Sémantické konvence

MTP generuje standardní atributy OpenTelemetry pro testování a kód tam, kde existuje konvence, včetně test.case.name, test.case.result.status, test.suite.name, code.function.name, code.file.path, code.stacktrace, code.line.number a error.type. Neúspěšné testy nastaví stav spanu na Error a přidají událost exception.

MTP rozšiřuje konvence o další stavy výsledků (skipped, error, timeout, cancelleda ) a unknownatributy testování pro koncepty, které OpenTelemetry nedefinuje. Pokud chcete zachovat existující řídicí panely, starší názvy atributů a instrumentů zůstanou ve výchozím nastavení povolené.

Když proces spuštění poskytne TRACEPARENT a TRACESTATE, MTP umístí testovací běh pod tuto trasu, místo aby spustil nesouvisející kořenovou trasu.

Časové úseky běhu MSTest

Počínaje verzemi MSTest 4.5 a MTP 2.5 Preview používají nativní spuštění MSTest pro každé spuštění testu jednu kanonickou aktivitu spravovanou MTP. MSTest nastaví aktivitu jako aktuální, když spustí konstruktor testu, inicializaci, testovací metodu, vyčištění a vlastní TestMethodAttribute kód. Automaticky instrumentované HttpClient, SQL, Entity Framework, WCF a vlastní aktivity se proto stanou podřízenými objekty testovací aktivity.

MTP přidá do stejné aktivity konečný výsledek, časování, výstup a artefakty a zastaví ho v době ukončení spuštění zaznamenané nástrojem MSTest. Toto chování zabraňuje duplicitním architekturám a rozsahům výsledků a zabraňuje asynchronnímu zpracování výsledků v nafouknutí doby trvání testu.

Testovací frameworky, které nepoužívají kanonické API pro spouštění, zachovávají topologii kompatibility: aktivita spuštění frameworku a aktivita výsledku MTP zůstávají sourozeneckými aktivitami a aktivita výsledku odkazuje na aktivitu, která byla aktuální v okamžiku, kdy framework publikoval průběžnou aktualizaci.

Vygenerované metriky

Nástroj Typ Jednotka Description
test.case.duration Histogram s Doba trvání testu seskupená podle stavu výsledků a sady testů
test.case.result.count Counter {test} Dokončené testy seskupené podle stavu výsledku a sady
test.case.active UpDownCounter {test} Testy, které jsou aktuálně spuštěné.
test.run.duration Histogram s Doba trvání spuštění, seskupené podle stavu výsledku a ukončovací kód
test.case.retry.count Counter {test} Testy naplánované rozšířením pro opakování k dalšímu pokusu.

Konfigurace prostředí

Proměnná prostředí Výchozí Description
TRACEPARENT, TRACESTATE Nenastavený Kontext trasování W3C pro nadřazený běh.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Připojí zachycený standardní výstup a chybu k rozsahu testů. Nastavte na 0, pokud výstup může obsahovat citlivé údaje.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Nastaví maximální počet znaků zachovaných pro atribut řetězce.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Vypisuje starší názvy atributů a nástrojů spolu s názvy podle sémantických konvencí.
OTEL_SDK_DISABLED Nenastavený Nastavte na true, chcete-li zakázat OpenTelemetry SDK.
OTEL_SERVICE_NAME Nenastavený Přepíše název služby.
OTEL_EXPORTER_OTLP_ENDPOINT Nenastavený Nastaví koncový bod OTLP.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Nenastavený Vybere trasovací a metrické exportéry.