Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для этой функции требуется пакет NuGet Microsoft.Testing.Extensions.OpenTelemetry .
Это расширение интегрирует OpenTelemetry с Microsoft.Testing.Platform (MTP), позволяя тестовые прогоны генерировать трассировки и метрики через стандартный SDK OpenTelemetry.
Замечание
Это расширение доступно в MTP начиная с версии 2.1.0.
Это важно
Начиная с MTP 2.4.0 расширение OpenTelemetry следует версии выпуска MTP, а ее общедоступные точки входа больше не экспериментальны.
Выберите принадлежность поставщика
Выберите, кто управляет поставщиками OpenTelemetry: MTP или ваше приложение.
Используйте поставщиков, принадлежащих MTP
Отключите автоматически созданную точку входа (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) и вызовите AddOpenTelemetryProvider в методе 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();
Чтобы настроить инструментирование, атрибуты ресурсов и экспортер OTLP из стандартных OTEL_* переменных среды, вызовите:
builder.AddOpenTelemetryProviderFromEnvironment();
Этот метод добавляет инструментирование только при настройке экспортера или обратном вызове конфигурации, поэтому вы можете оставить регистрацию в приложении, если некоторые среды не экспортируют данные телеметрии.
Использование поставщиков, принадлежащих приложению
Начиная с предварительной версии MTP 2.5, вызывайте AddTestingPlatformDiagnostics, если приложение уже настраивает OpenTelemetry через Aspire ServiceDefaults, Microsoft.Extensions.Hosting или другую точку композиции. Этот метод активирует источник активности Microsoft.Testing.Platform и измеритель, не создавая, не сбрасывая и не освобождая MeterProvider или TracerProvider.
Зарегистрируйте поставщика, принадлежащего приложению, с помощью AddTestingPlatformInstrumentation в его построителях трассировки и метрик. Приложение сохраняет контроль над своими поставщиками, экспортёрами, идентификатором ресурса и освобождением ресурсов.
Для размещённой точки входа, созданной MSBuild, укажите ссылку на Microsoft.Testing.Extensions.Hosting, задайте TestingPlatformHostFactory как метод фабрики узла и задайте:
<TestingPlatformOpenTelemetryMode>HostOwned</TestingPlatformOpenTelemetryMode>
HostOwned вызывает только AddTestingPlatformDiagnostics; он не создает провайдеров и не заменяет идентификатор ресурса хоста. Требования к жизненному циклу хоста и фабрики см. в разделе Интеграция хоста.
API
AddTestingPlatformDiagnostics
Активирует источник активности и метр MTP для слушателей, принадлежащих приложению, или провайдеров OpenTelemetry без передачи MTP прав владения провайдером.
AddOpenTelemetryProvider
Регистрируется провайдер OpenTelemetry в ITestApplicationBuilder. Принимает два необязательных обратных вызова:
-
withTracing: настраиваетTracerProviderBuilderдля распределенной трассировки. -
withMetrics: настраиваетMeterProviderBuilderдля сбора метрик.
AddTestingPlatformInstrumentation
Обратитесь к TracerProviderBuilder или MeterProviderBuilder, чтобы подписаться на встроенный источник активности и счетчик Microsoft.Testing.Platform.
AddTestingPlatformResource
Вызовите ResourceBuilder, чтобы добавить атрибуты тестовой сборки, хоста, операционной системы и среды выполнения. Детектор также определяет сведения о поставщике CI, пайплайне, ветке и коммите для GitHub Actions, Azure Pipelines, GitLab CI и Jenkins.
Специализированные вспомогательные ресурсы
Для поставщика приложения вызовите AddTestingPlatformTestResource, чтобы добавить идентификатор, специфичный для теста, и AddTestingPlatformCIResource, чтобы добавить данные о происхождении из CI и системы контроля версий. Эти специализированные вспомогательные функции не заменяют атрибуты service.*, host.*, os.* или process.*, принадлежащие приложению.
AddOpenTelemetryProviderFromEnvironment
Регистрирует трассировку, метрики, обнаружение ресурсов и экспортер OTLP из стандартных переменных среды OpenTelemetry.
OTEL_SDK_DISABLED=true отключает интеграцию. Настройте OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER или OTEL_EXPORTER_OTLP_ENDPOINT, чтобы активировать экспорт.
Источник действия и счетчик
Расширение выдает данные телеметрии в следующих условиях:
- Источник действия:
Microsoft.Testing.Platform - Метр:
Microsoft.Testing.Platform
Семантические соглашения
MTP генерирует стандартные атрибуты тестирования и кода OpenTelemetry там, где существует соответствующее соглашение, включая test.case.name, test.case.result.status, test.suite.name, code.line.number, code.file.path, code.function.name, code.stacktrace и error.type. Неудачные тесты задают состояние Error диапазона и добавляют exception событие.
MTP расширяет соглашения, добавляя дополнительные состояния результатов (skipped, error, timeout, cancelled и unknown) и тестовые атрибуты для концепций, которые OpenTelemetry не определяет. Чтобы сохранить существующие панели мониторинга, устаревшие имена атрибутов и инструментов остаются включенными по умолчанию.
Когда процесс запуска передаёт TRACEPARENT и TRACESTATE, MTP помещает тестовый запуск в эту трассировку вместо запуска новой, не связанной с ней корневой трассировки.
Диапазоны выполнения MSTest
Начиная с MSTest 4.5 и предварительной версии MTP 2.5, собственные запуски MSTest используют одну каноническую операцию, управляемую MTP, для каждого запуска теста. MSTest делает действие текущим при запуске конструктора теста, инициализации, метода тестирования, очистки и пользовательского TestMethodAttribute кода. Таким образом, автоматически инструментированные HttpClient, SQL, Entity Framework, WCF и пользовательские действия становятся дочерними объектами тестового действия.
MTP добавляет окончательный результат, сведения о времени выполнения, вывод и артефакты в ту же операцию и завершает её в момент окончания выполнения, зафиксированный MSTest. Такое поведение позволяет избежать дублирования интервалов фреймворка и результатов и предотвращает искусственное увеличение длительности теста из-за асинхронной обработки результатов.
Тестовые фреймворки, которые не используют канонический API выполнения, сохраняют топологию совместимости: активность выполнения фреймворка и активность результата MTP остаются на одном уровне, а активность результата ссылается на активность, которая была текущей, когда фреймворк опубликовал промежуточное обновление о ходе выполнения.
Сгенерированные метрики
| Инструмент | Тип | Единица | Описание |
|---|---|---|---|
test.case.duration |
Гистограмма | s |
Длительность теста, сгруппированная по статусу результата и набору тестов. |
test.case.result.count |
Счетчик | {test} |
Завершенные тесты, сгруппированные по статусу результата и набору тестов. |
test.case.active |
UpDownCounter | {test} |
Тесты, запущенные в настоящее время. |
test.run.duration |
Гистограмма | s |
Длительность выполнения, сгруппированная по состоянию результата и коду выхода. |
test.case.retry.count |
Счетчик | {test} |
Тесты, запланированные расширением повторных попыток для ещё одной попытки. |
Конфигурация среды
| Переменная среды | По умолчанию | Описание |
|---|---|---|
TRACEPARENT, TRACESTATE |
Сбросить | Контекст трассировки W3C для родительского запуска. |
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT |
1 |
Присоединяет стандартные выходные данные и ошибки для тестирования диапазонов. Установите значение 0, если выходные данные могут содержать секреты. |
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT |
8192 |
Задает максимальные символы, сохраненные для строкового атрибута. |
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES |
1 |
Выводит устаревшие имена атрибутов и инструментов вместе с именами, соответствующими семантическим соглашениям. |
OTEL_SDK_DISABLED |
Сбросить | Установите значение true, чтобы отключить пакет SDK OpenTelemetry. |
OTEL_SERVICE_NAME |
Сбросить | Переопределяет имя службы. |
OTEL_EXPORTER_OTLP_ENDPOINT |
Сбросить | Задает конечную точку OTLP. |
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER |
Сбросить | Выбирает экспортеров трассировки и метрик. |