OpenTelemetry

Esta característica requiere el paquete NuGet Microsoft.Testing.Extensions.OpenTelemetry .

Esta extensión integra OpenTelemetry con Microsoft. Testing.Platform (MTP), lo que permite que las ejecuciones de pruebas emitan seguimientos y métricas a través del SDK de OpenTelemetry estándar.

Nota:

Esta extensión está disponible en MTP a partir de la versión 2.1.0.

Importante

A partir de MTP 2.4.0, la extensión OpenTelemetry sigue la versión de lanzamiento de MTP y sus puntos de entrada públicos ya no son experimentales.

Registration

Nota:

Esta extensión no admite el registro automático. Debe registrarlo manualmente deshabilitando el punto de entrada generado automáticamente (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) y llamando a AddOpenTelemetryProvider en su método 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();

Para configurar la instrumentación, los atributos de recursos y un exportador de OTLP desde variables de entorno estándar OTEL_* , llame a:

builder.AddOpenTelemetryProviderFromEnvironment();

El método añade instrumentación solo cuando se configura un exportador o se pasa una llamada de retorno de configuración, por lo que puede dejar el registro en la aplicación cuando algunos entornos no exporten telemetría.

API

AddOpenTelemetryProvider

Registra el proveedor OpenTelemetry en ITestApplicationBuilder. Acepta dos callbacks opcionales:

  • withTracing: configura el TracerProviderBuilder para el seguimiento distribuido.
  • withMetrics: configura el MeterProviderBuilder para la recopilación de métricas.

AddTestingPlatformInstrumentation

Llame a TracerProviderBuilder o MeterProviderBuilder para suscribirse al origen y al medidor de actividad Microsoft.Testing.Platform integrados.

AddTestingPlatformResource

Llame a ResourceBuilder para agregar atributos del ensamblado de prueba, del host, del sistema operativo y del entorno de ejecución. El detector también identifica el proveedor de CI, el pipeline, la rama y la información del commit para Acciones de GitHub, Azure Pipelines, GitLab CI y Jenkins.

AddOpenTelemetryProviderFromEnvironment

Configura el trazado, las métricas, la detección de recursos y un exportador OTLP a partir de las variables de entorno estándar de OpenTelemetry. OTEL_SDK_DISABLED=true deshabilita la integración. Configure OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTERo OTEL_EXPORTER_OTLP_ENDPOINT para activar la exportación.

Origen y medidor de actividad

La extensión emite telemetría bajo el nombre:

  • Origen de la actividad: Microsoft.Testing.Platform
  • Medidor: Microsoft.Testing.Platform

Convenciones semánticas

MTP emite atributos estándar de OpenTelemetry para pruebas y código para los que existe una convención, incluidos code.stacktrace, error.type, code.file.path, code.line.number, code.function.name, test.suite.name, test.case.result.status y test.case.name. Las pruebas fallidas establecen el estado del tramo en Error y añaden un evento exception.

MTP amplía las convenciones con estados de resultado adicionales (skipped, error, timeout, cancelledy unknown) y atributos de prueba para los conceptos que OpenTelemetry no define. Para conservar los paneles existentes, los nombres de atributos e instrumentos heredados permanecen habilitados de forma predeterminada.

Cuando el proceso de lanzamiento proporciona TRACEPARENT y TRACESTATE, MTP sitúa la ejecución de prueba bajo esa traza en lugar de iniciar una traza raíz no relacionada.

Métricas emitidas

Instrumento Tipo Unidad Description
test.case.duration Histograma s Duración de la prueba, agrupada por estado del resultado y conjunto de pruebas.
test.case.result.count Contador {test} Pruebas completadas, agrupadas por estado del resultado y conjunto de pruebas.
test.case.active UpDownCounter {test} Pruebas que se están ejecutando actualmente.
test.run.duration Histograma s Duración de la ejecución, agrupada por estado de resultado y código de salida.
test.case.retry.count Contador {test} Pruebas programadas para un nuevo intento mediante la extensión de reintentos.

Configuración de entorno

Variable del entorno Predeterminado Description
TRACEPARENT, TRACESTATE Unset Contexto de rastreo del W3C para la ejecución principal.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Adjunta la salida estándar y los errores capturados a los intervalos de prueba. Establézcalo en 0 cuando la salida pueda contener secretos.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Establece los caracteres máximos retenidos para un atributo de cadena.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Emite nombres de atributos e instrumentos heredados junto con los nombres según las convenciones semánticas.
OTEL_SDK_DISABLED Unset Establézcalo en true para deshabilitar el SDK de OpenTelemetry.
OTEL_SERVICE_NAME Unset Invalida el nombre del servicio.
OTEL_EXPORTER_OTLP_ENDPOINT Unset Establece el punto de conexión de OTLP.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Unset Selecciona exportadores de trazas y métricas.