Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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: nakonfigurujeTracerProviderBuilderpro distribuované trasování. -
withMetrics: nakonfiguruje kolekciMeterProviderBuildermetrik.
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. |