この機能には、 Microsoft.Testing.Extensions.OpenTelemetry NuGet パッケージが必要です。
この拡張機能は、OpenTelemetry をMicrosoftと統合します。Testing.Platform (MTP) を使用すると、テスト実行で標準の OpenTelemetry SDK を介してトレースとメトリックを出力できます。
注
この拡張機能は、バージョン 2.1.0 以降の MTP で使用できます。
Important
MTP 2.4.0 以降、OpenTelemetry 拡張機能は MTP リリース バージョンに従い、パブリック エントリ ポイントは試験的ではなくなりました。
Registration
注
この拡張機能では、自動登録はサポートされていません。 自動生成されたエントリ ポイント (<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();
標準 OTEL_* 環境変数からインストルメンテーション、リソース属性、および OTLP エクスポーターを構成するには、次を呼び出します。
builder.AddOpenTelemetryProviderFromEnvironment();
このメソッドは、エクスポーターを構成するか、構成コールバックを渡す場合にのみインストルメンテーションを追加するため、一部の環境でテレメトリをエクスポートしない場合にアプリケーションに登録を残すことができます。
API
AddOpenTelemetryProvider
ITestApplicationBuilderに OpenTelemetry プロバイダーを登録します。 次に示す2つの省略可能なコールバックを受け付けます。
-
withTracing: 分散トレースのTracerProviderBuilderを構成します。 -
withMetrics: メトリック収集のMeterProviderBuilderを構成します。
AddTestingPlatformInstrumentation
TracerProviderBuilderまたはMeterProviderBuilderを呼び出して、組み込みのMicrosoft.Testing.Platformアクティビティのソースとメーターをサブスクライブします。
AddTestingPlatformResource
ResourceBuilderを呼び出して、テスト アセンブリ、ホスト、オペレーティング システム、およびランタイム属性を追加します。 また、この検出機能は、GitHub Actions、Azure Pipelines、GitLab CI、Jenkins の CI プロバイダー、パイプライン、ブランチ、コミット情報も識別します。
AddOpenTelemetryProviderFromEnvironment
標準の OpenTelemetry 環境変数からトレース、メトリック、リソース検出、OTLP エクスポーターを登録します。
OTEL_SDK_DISABLED=true は統合を無効にします。 エクスポートをアクティブ化するために、 OTEL_TRACES_EXPORTER、 OTEL_METRICS_EXPORTER、または OTEL_EXPORTER_OTLP_ENDPOINT を構成します。
アクティビティソースとメーター
拡張機能は、次の下でテレメトリを出力します。
- アクティビティ ソース:
Microsoft.Testing.Platform - メーター:
Microsoft.Testing.Platform
セマンティック規則
MTP は、 test.case.name、 test.case.result.status、 test.suite.name、 code.function.name、 code.file.path、 code.line.number、 code.stacktrace、 error.typeなど、規則が存在する標準の OpenTelemetry テストとコード属性を出力します。 失敗したテストでは、スパンの状態が Error に設定され、 exception イベントが追加されます。
MTP は、追加の結果状態 (skipped、 error、 timeout、 cancelled、 unknown) で規則を拡張し、OpenTelemetry で定義されていない概念の属性をテストします。 既存のダッシュボードを保持するために、レガシ属性とインストルメント名は既定で有効なままになります。
起動プロセスで TRACEPARENT と TRACESTATEが提供されると、MTP は、関連のないルート トレースを開始するのではなく、そのトレースの下にテスト実行を配置します。
出力されるメトリック
| 楽器 | タイプ | 単位 | 説明 |
|---|---|---|---|
test.case.duration |
ヒストグラム | s |
結果の状態とスイート別にグループ化されたテスト期間。 |
test.case.result.count |
Counter | {test} |
結果の状態とスイート別にグループ化された、完了したテスト。 |
test.case.active |
アップダウンカウンター | {test} |
現在実行中のテスト。 |
test.run.duration |
ヒストグラム | s |
実行時間。結果の状態と終了コードでグループ化されます。 |
test.case.retry.count |
Counter | {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 |
未設定 | OpenTelemetry SDK を無効にするには、 true に設定します。 |
OTEL_SERVICE_NAME |
未設定 | サービス名をオーバーライドします。 |
OTEL_EXPORTER_OTLP_ENDPOINT |
未設定 | OTLP エンドポイントを設定します。 |
OTEL_TRACES_EXPORTER、OTEL_METRICS_EXPORTER |
未設定 | トレースおよびメトリック エクスポーターを選択します。 |
.NET