OpenTelemetry

Esse recurso requer o pacote NuGet Microsoft.Testing.Extensions.OpenTelemetry .

Essa extensão integra OpenTelemetry com Microsoft. Testing.Platform (MTP), permitindo execuções de teste para emitir rastreamentos e métricas por meio do SDK do OpenTelemetry padrão.

Observação

Essa extensão está disponível no MTP a partir da versão 2.1.0.

Importante

A partir da versão 2.4.0 do MTP, a extensão OpenTelemetry passa a seguir a versão de lançamento do MTP, e seus pontos de entrada públicos deixam de ser experimentais.

Registration

Observação

Essa extensão não dá suporte ao registro automático. Você deve registrá-lo manualmente desabilitando o ponto de entrada gerado automaticamente (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) e chamando AddOpenTelemetryProvider no seu 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 a instrumentação, os atributos de recurso e um exportador OTLP a partir de variáveis de ambiente padrão OTEL_*, chame:

builder.AddOpenTelemetryProviderFromEnvironment();

O método adiciona instrumentação somente quando você configura um exportador ou passa um callback de configuração, de modo que você pode manter o registro no aplicativo mesmo quando alguns ambientes não exportam telemetria.

API

AddOpenTelemetryProvider

Registra o provedor OpenTelemetry em ITestApplicationBuilder. Aceita dois retornos de chamada opcionais:

  • withTracing: configura o TracerProviderBuilder para rastreamento distribuído.
  • withMetrics: configura a MeterProviderBuilder para a coleta de métricas.

AddTestingPlatformInstrumentation

Use TracerProviderBuilder ou MeterProviderBuilderpara assinar a origem de atividades e o medidor integrados Microsoft.Testing.Platform.

AddTestingPlatformResource

Use ResourceBuilder para adicionar atributos do assembly de teste, do host, do sistema operacional e do tempo de execução. O detector também identifica informações sobre o provedor de CI, o pipeline, a branch e o commit para GitHub Actions, Azure Pipelines, GitLab CI e Jenkins.

AddOpenTelemetryProviderFromEnvironment

Registra rastreamento, métricas, detecção de recursos e um exportador OTLP com base nas variáveis de ambiente padrão do OpenTelemetry. OTEL_SDK_DISABLED=true desabilita a integração. Configure OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER ou OTEL_EXPORTER_OTLP_ENDPOINT para ativar a exportação.

Origem e métricas de atividade

A extensão emite telemetria em:

  • Origem da atividade: Microsoft.Testing.Platform
  • Medidor: Microsoft.Testing.Platform

Convenções semânticas

O MTP emite atributos padrão de teste e código do OpenTelemetry para os quais existe uma convenção, incluindo test.case.name, test.case.result.status, test.suite.name, code.function.name, code.file.path, code.line.number, code.stacktrace e error.type. Testes com falha definem o status do intervalo como Error e adicionam um evento exception.

O MTP estende as convenções com estados de resultado adicionais (skipped, error, , timeoute cancelled) e unknownatributos de teste para conceitos que o OpenTelemetry não define. Para preservar os painéis existentes, os atributos legados e os nomes de instrumentos permanecem habilitados por padrão.

Quando o processo de inicialização fornece TRACEPARENT e TRACESTATEo MTP coloca a execução de teste sob esse rastreamento em vez de iniciar um rastreamento raiz não relacionado.

Métricas emitidas

Instrumento Tipo Unidade Descrição
test.case.duration Histograma s Duração do teste, agrupada por status de resultado e pacote.
test.case.result.count Contador {test} Testes concluídos, agrupados por status de resultado e pacote.
test.case.active UpDownCounter {test} Testes que estão em execução no momento.
test.run.duration Histograma s Duração da execução, agrupada por status de resultado e código de saída.
test.case.retry.count Contador {test} Testes agendados para uma nova tentativa pela extensão de nova tentativa.

Configuração do ambiente

Variável de ambiente Default Descrição
TRACEPARENT, TRACESTATE Remover definição Contexto de rastreamento W3C para a execução principal.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Anexa a saída padrão capturada e o erro aos intervalos de teste. Defina como 0 quando a saída puder conter segredos.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Define o máximo de caracteres retidos para um atributo de cadeia de caracteres.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Emite nomes de atributos e instrumentos herdados junto com nomes da convenção semântica.
OTEL_SDK_DISABLED Remover definição Defina como true para desabilitar o SDK do OpenTelemetry.
OTEL_SERVICE_NAME Remover definição Substitui o nome do serviço.
OTEL_EXPORTER_OTLP_ENDPOINT Remover definição Define o ponto de extremidade OTLP.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Remover definição Seleciona exportadores de rastros e métricas.