OpenTelemetry

Esta funcionalidade requer o pacote Microsoft.Testing.Extensions.OpenTelemetry NuGet.

Esta extensão integra OpenTelemetry com Microsoft. Testing.Platform (MTP), permitindo que testes emitam traços e métricas através do SDK padrão OpenTelemetry.

Observação

Esta extensão está disponível em MTP a partir da versão 2.1.0.

Importante

A partir do MTP 2.4.0, a extensão OpenTelemetry segue a versão de lançamento do MTP e os seus pontos de entrada públicos deixaram de ser experimentais.

Registo

Observação

Esta extensão não suporta registo automático. Tem de o registar manualmente, desativando 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 recursos e um exportador OTLP a partir de variáveis de ambiente padrão OTEL_*, chame:

builder.AddOpenTelemetryProviderFromEnvironment();

O método só adiciona instrumentação quando configuras um exportador ou passes um callback de configuração, por isso podes deixar o registo na aplicação quando alguns ambientes não exportam telemetria.

API

AddOpenTelemetryProvider

Regista o fornecedor OpenTelemetry em ITestApplicationBuilder. Aceita dois callbacks opcionais:

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

AddTestingPlatformInstrumentation

Chame TracerProviderBuilder ou MeterProviderBuilder para subscrever à fonte de atividade e ao contador incorporados Microsoft.Testing.Platform.

AddTestingPlatformResource

Chame ResourceBuilder para adicionar atributos de assembly de teste, host, sistema operativo e ambiente de execução. O detetor também identifica informações sobre o fornecedor de CI, pipeline, branch e commit para GitHub Actions, Azure Pipelines, GitLab CI e Jenkins.

AddOpenTelemetryProviderFromEnvironment

Regista o rastreio, as métricas, a deteção de recursos e um exportador OTLP a partir das variáveis de ambiente padrão do OpenTelemetry. OTEL_SDK_DISABLED=true Desativa a integração. Configurar OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER, ou OTEL_EXPORTER_OTLP_ENDPOINT para ativar a exportação.

Fonte de atividade e medidor

A extensão emite telemetria embaixo:

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

Convenções semânticas

O MTP emite atributos padrão de teste OpenTelemetry e código onde 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 falhados definem o estado do span para Error e adicionam um exception evento.

O MTP estende as convenções com estados de resultado adicionais (skipped, error, timeout, cancelled, e unknown) e atributos de teste para conceitos que o OpenTelemetry não define. Para preservar os painéis existentes, os nomes antigos de atributos e instrumentos continuam ativados por predefinição.

Quando o processo de arranque fornece TRACEPARENT e TRACESTATE, o MTP associa a execução de teste a esse rastreio, em vez de iniciar um rastreio raiz não relacionado.

Métricas emitidas

Instrumento Tipo Unidade Description
test.case.duration Histogram s Duração do teste, agrupada por estado do resultado e conjunto.
test.case.result.count Counter {test} Testes concluídos, agrupados por estado dos resultados e conjunto de testes.
test.case.active UpDownCounter {test} Testes que estão a decorrer atualmente.
test.run.duration Histogram s Duração da corrida, agrupada por estado do resultado e código de saída.
test.case.retry.count Counter {test} Testes agendados para uma nova tentativa pela extensão de nova tentativa.

Configuração do ambiente

Variável de ambiente Predefinição Description
TRACEPARENT, TRACESTATE Não definido Contexto de rastreio 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. Definido para 0 quando a saída pode conter segredos.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Define o número máximo de caracteres retidos para um atributo de string.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Emite nomes antigos de atributos e de instrumentos juntamente com nomes de convenções semânticas.
OTEL_SDK_DISABLED Não definido Defina como true para desativar o SDK do OpenTelemetry.
OTEL_SERVICE_NAME Não definido Substitui o nome do serviço.
OTEL_EXPORTER_OTLP_ENDPOINT Não definido Define o endpoint OTLP.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Não definido Seleciona exportadores de rastreio e de métricas.