Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ta funkcja wymaga pakietu NuGet Microsoft.Testing.Extensions.OpenTelemetry .
To rozszerzenie integruje OpenTelemetry z Microsoft.Testing.Platform (MTP), umożliwiając wykonaniu testów emisję śladów i metryk za pomocą standardowego zestawu SDK OpenTelemetry.
Uwaga / Notatka
To rozszerzenie jest dostępne w MTP, począwszy od wersji 2.1.0.
Ważna
Począwszy od MTP 2.4.0, rozszerzenie OpenTelemetry jest zgodne z wersją wydania MTP, a jego publiczne punkty wejścia nie są już eksperymentalne.
Wybieranie własności dostawcy
Wybierz, czy MTP, czy aplikacja jest właścicielem dostawców OpenTelemetry.
Korzystanie z dostawców należących do MTP
Wyłącz automatycznie wygenerowany punkt wejścia (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) i wywołaj AddOpenTelemetryProvider w metodzie 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();
Aby skonfigurować instrumentację, atrybuty zasobów i eksporter OTLP za pomocą standardowych zmiennych środowiskowych OTEL_*, wywołaj:
builder.AddOpenTelemetryProviderFromEnvironment();
Metoda dodaje instrumentację tylko wtedy, gdy skonfigurujesz eksporter lub przekażesz funkcję zwrotną konfiguracji, dzięki czemu możesz pozostawić rejestrację w kodzie aplikacji, nawet jeśli niektóre środowiska nie eksportują danych telemetrycznych.
Korzystanie z dostawców należących do aplikacji
Począwszy od podglądowej wersji MTP 2.5, wywołaj AddTestingPlatformDiagnostics, gdy aplikacja już konfiguruje OpenTelemetry przez Aspire ServiceDefaults, Microsoft.Extensions.Hosting lub inny composition root. Ta metoda aktywuje Microsoft.Testing.Platform źródło działania i miernik bez tworzenia, opróżniania lub usuwania elementu TracerProvider lub MeterProvider.
Zarejestruj dostawcę będącego własnością aplikacji za pomocą AddTestingPlatformInstrumentation w konstruktorach śledzenia i metryk. Aplikacja zachowuje własność swoich dostawców, eksporterów, tożsamości zasobów i usuwania.
W przypadku hostowanego punktu wejścia wygenerowanego przez program MSBuild odwołaj się do Microsoft.Testing.Extensions.Hosting, ustaw TestingPlatformHostFactory na metodę fabryki hosta i ustaw:
<TestingPlatformOpenTelemetryMode>HostOwned</TestingPlatformOpenTelemetryMode>
HostOwned wywołuje tylko AddTestingPlatformDiagnostics; nie tworzy dostawców ani nie zastępuje tożsamości zasobu hosta. Aby uzyskać informacje na temat wymagań dotyczących cyklu życia hosta i fabryki, zobacz Integracja hostów.
API
AddTestingPlatformDiagnostics
Aktywuje źródło aktywności i miernik MTP dla odbiorników należących do aplikacji lub dostawców OpenTelemetry bez przenoszenia własności dostawcy do MTP.
AddOpenTelemetryProvider
Rejestruje dostawcę OpenTelemetry na ITestApplicationBuilder. Akceptuje dwa opcjonalne wywołania zwrotne:
-
withTracing: konfigurujeTracerProviderBuilderna potrzeby śledzenia rozproszonego. -
withMetrics: konfigurujeMeterProviderBuilderdo zbierania metryk.
AddTestingPlatformInstrumentation
Wywołaj TracerProviderBuilder lub MeterProviderBuilder subskrybuj wbudowane Microsoft.Testing.Platform źródło działania i miernik.
AddTestingPlatformResource
Użyj ResourceBuilder, aby dodać atrybuty zestawu testowego, hosta, systemu operacyjnego i środowiska uruchomieniowego. Detektor identyfikuje również dostawcę CI oraz informacje o potoku, gałęzi i commicie dla GitHub Actions, Azure Pipelines, GitLab CI i Jenkins.
Skoncentrowani pomocnicy zasobów
W przypadku dostawcy będącego własnością aplikacji wywołaj metodę AddTestingPlatformTestResource, aby dodać tożsamość specyficzną dla testów, oraz AddTestingPlatformCIResource, aby dodać informacje o pochodzeniu z CI i systemu kontroli wersji. Ci skoncentrowani pomocnicy nie zastępują atrybutów należących do service.*aplikacji , host.*, os.*ani process.* .
AddOpenTelemetryProviderFromEnvironment
Konfiguruje śledzenie, metryki, wykrywanie zasobów i eksporter OTLP na podstawie standardowych zmiennych środowiskowych OpenTelemetry.
OTEL_SDK_DISABLED=true wyłącza integrację. Skonfiguruj OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTERlub OTEL_EXPORTER_OTLP_ENDPOINT , aby aktywować eksport.
Źródło i miernik aktywności
Rozszerzenie emituje dane telemetryczne w obszarze:
- Źródło działania:
Microsoft.Testing.Platform - Miernik:
Microsoft.Testing.Platform
Konwencje semantyczne
MTP emituje standardowe atrybuty testów OpenTelemetry i atrybuty kodu tam, gdzie istnieje odpowiednia konwencja, w tym test.case.name, code.file.path, test.case.result.status, code.function.name, code.line.number, test.suite.name, code.stacktrace i error.type. Nieudane testy ustawiają status zakresu na Error i dodają zdarzenie exception.
MTP rozszerza konwencje o dodatkowe stany rezultatów (skipped, error, timeout, cancelled i unknown) oraz atrybuty testów dla pojęć, których OpenTelemetry nie definiuje. Aby zachować istniejące pulpity nawigacyjne, starsze nazwy atrybutów i instrumentów pozostają domyślnie włączone.
Gdy proces uruchamiający dostarcza TRACEPARENT i TRACESTATE, MTP umieszcza wykonanie testu w ramach tego śladu, zamiast rozpoczynać osobny ślad główny.
Przedziały wykonywania MSTest
Począwszy od wersji zapoznawczych MSTest 4.5 i MTP 2.5, natywne uruchomienia MSTest używają jednej kanonicznej aktywności zarządzanej przez MTP dla każdego uruchomienia testu. MSTest ustawia aktywność jako bieżącą podczas wykonywania konstruktora testu, inicjalizacji, metody testowej, czyszczenia i niestandardowego kodu TestMethodAttribute. Automatycznie instrumentowane HttpClient, SQL, Entity Framework, WCF oraz działania niestandardowe stają się działaniami podrzędnymi działania testowego.
MTP dodaje wynik końcowy, informacje o czasie, dane wyjściowe i artefakty do tej samej aktywności oraz kończy ją w czasie zakończenia wykonania zarejestrowanym przez MSTest. To zachowanie zapobiega zduplikowanym spanom frameworka i wyników oraz temu, by asynchroniczne przetwarzanie wyników zawyżało czas trwania testu.
Frameworki testowe, które nie korzystają z kanonicznego interfejsu API wykonywania testów, zachowują topologię zgodności: aktywność wykonywania frameworka i aktywność wyników MTP pozostają równorzędne, a aktywność wyników jest powiązana z aktywnością, która była bieżąca w chwili opublikowania przez framework aktualizacji w toku.
Emitowane metryki
| Przyrząd | Typ | Jednostka | Opis |
|---|---|---|---|
test.case.duration |
Histogram | s |
Czas trwania testów, pogrupowany według statusu wyniku i pakietu testów. |
test.case.result.count |
Counter | {test} |
Zakończone testy, pogrupowane według statusu wyniku i pakietu. |
test.case.active |
UpDownCounter | {test} |
Testy, które są obecnie uruchomione. |
test.run.duration |
Histogram | s |
Czas trwania przebiegu, pogrupowany według stanu wyniku i kodu zakończenia. |
test.case.retry.count |
Counter | {test} |
Testy zaplanowane do ponowienia przez rozszerzenie odpowiedzialne za ponawianie. |
Konfiguracja środowiska
| Zmienna środowiskowa | Default | Opis |
|---|---|---|
TRACEPARENT, TRACESTATE |
Nieustawiony | Kontekst śledzenia W3C dla przebiegu nadrzędnego. |
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT |
1 |
Dołącza przechwycone standardowe dane wyjściowe i błędy w celu testowania zakresów. Ustaw na 0, jeśli dane wyjściowe mogą zawierać tajne dane. |
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT |
8192 |
Ustawia maksymalne znaki przechowywane dla atrybutu ciągu. |
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES |
1 |
Emituje starsze nazwy atrybutów i instrumentów wraz z nazwami semantycznych konwencji. |
OTEL_SDK_DISABLED |
Nieustawiony | Ustaw na true, aby wyłączyć pakiet OpenTelemetry SDK. |
OTEL_SERVICE_NAME |
Nieustawiony | Zastępuje nazwę usługi. |
OTEL_EXPORTER_OTLP_ENDPOINT |
Nieustawiony | Ustawia punkt końcowy OTLP. |
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER |
Nieustawiony | Wybiera eksportery śladów i metryk. |