OpenTelemetry

Bu özellik , Microsoft.Testing.Extensions.OpenTelemetry NuGet paketini gerektirir.

Bu uzantı, test çalıştırmalarının standart OpenTelemetry SDK'sı aracılığıyla iz ve metrik yaymasına olanak tanıyan OpenTelemetry ile Microsoft.Testing.Platform (MTP) bütünleştirir.

Uyarı

Bu uzantı, 2.1.0 sürümünden itibaren MTP'de kullanılabilir.

Önemli

MTP 2.4.0 sürümünden itibaren OpenTelemetry uzantısı MTP sürümüne uyar ve genel giriş noktaları artık deneysel değildir.

Sağlayıcı sahipliğini seçme

OpenTelemetry sağlayıcılarına MTP'nin mi yoksa uygulamanızın mı sahip olduğunu seçin.

MTP'ye ait sağlayıcıları kullanma

Otomatik oluşturulan giriş noktasını (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) devre dışı bırakın ve AddOpenTelemetryProvider yönteminizde Main'i çağırın:

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();

Enstrümantasyonu, kaynak özniteliklerini ve standart OTEL_* ortam değişkenlerini kullanarak bir OTLP dışa aktarıcısını yapılandırmak için şunu çağırın:

builder.AddOpenTelemetryProviderFromEnvironment();

Yöntem, yalnızca bir dışa aktarıcı yapılandırdığınızda veya bir yapılandırma geri çağrısı ilettiğinizde enstrümantasyon ekler; böylece bazı ortamlarda telemetri dışa aktarılmasa bile kaydını uygulamada tutabilirsiniz.

Uygulamaya ait sağlayıcıları kullanma

MTP 2.5 önizleme sürümünden itibaren, uygulamanız OpenTelemetry'yi zaten AddTestingPlatformDiagnostics ServiceDefaults, Microsoft.Extensions.Hosting veya başka bir bileşim kökü aracılığıyla yapılandırıyorsa Aspire çağrısı yapın. Bu yöntem, TracerProvider etkinlik kaynağını ve ölçeri, MeterProvider veya Microsoft.Testing.Platform oluşturmadan, boşaltmadan ya da ortadan kaldırmadan etkinleştirir.

Uygulamaya ait sağlayıcıyı, izleme ve metrik oluşturucularında AddTestingPlatformInstrumentation ile abone edin. Uygulama, sağlayıcıları, dışa aktarıcıları, kaynak kimliği ve bertarafı üzerindeki sahipliği elinde tutar.

MSBuild tarafından oluşturulan barındırılan bir giriş noktası için Microsoft.Testing.Extensions.Hosting öğesine başvurun, TestingPlatformHostFactory öğesini ana makine fabrikası yöntemine ayarlayın ve şunu ayarlayın:

<TestingPlatformOpenTelemetryMode>HostOwned</TestingPlatformOpenTelemetryMode>

HostOwned yalnızca AddTestingPlatformDiagnostics öğesini çağırır; sağlayıcılar oluşturmaz veya ana bilgisayarın kaynak kimliğini değiştirmez. Ana makine yaşam döngüsü ve fabrika gereksinimleri için bkz. Ana makine entegrasyonu.

API

AddTestingPlatformDiagnostics

MTP'nin etkinlik kaynağını ve ölçümlerini, sağlayıcı sahipliğini MTP'ye aktarmadan uygulamaya ait dinleyiciler veya OpenTelemetry sağlayıcıları için etkinleştirir.

AddOpenTelemetryProvider

OpenTelemetry sağlayıcısını ITestApplicationBuilder üzerinde kaydeder. İsteğe bağlı iki geri çağırma kabul eder:

  • withTracing: dağıtılmış izlemeyi yapılandırır TracerProviderBuilder.
  • withMetrics: ölçüm toplama için MeterProviderBuilder yapılandırır.

AddTestingPlatformInstrumentation

TracerProviderBuilder veya MeterProviderBuilder öğesini çağırarak yerleşik Microsoft.Testing.Platform etkinlik kaynağına ve ölçüme abone olun.

AddTestingPlatformResource

Test derlemesi, ana bilgisayar, işletim sistemi ve çalışma zamanı özniteliklerini eklemek için ResourceBuilder öğesini çağırın. Algılayıcı ayrıca GitHub Actions, Azure Pipelines, GitLab CI ve Jenkins için CI sağlayıcısı, işlem hattı, dal ve işleme bilgilerini tanımlar.

Odaklanmış kaynak yardımcıları

Uygulamaya ait bir sağlayıcı için, teste özgü kimlik eklemek üzere AddTestingPlatformCIResource ve CI ile kaynak denetimi köken bilgisi eklemek üzere AddTestingPlatformTestResource çağırın. Bu odaklanmış yardımcılar, uygulamaya ait service.*, , host.*os.*veya process.* özniteliklerini değiştirmez.

AddOpenTelemetryProviderFromEnvironment

Standart OpenTelemetry ortam değişkenlerinden izleme, ölçümler, kaynak algılama ve bir OTLP dışa aktarıcısını kaydeder. OTEL_SDK_DISABLED=true tümleştirmeyi devre dışı bırakır. Dışa aktarmayı etkinleştirmek için OTEL_METRICS_EXPORTER, OTEL_EXPORTER_OTLP_ENDPOINT veya OTEL_TRACES_EXPORTER yapılandırın.

Etkinlik kaynağı ve ölçümü

Uzantı, aşağıdakiler altında telemetri yayar:

  • Etkinlik kaynağı: Microsoft.Testing.Platform
  • Metre: Microsoft.Testing.Platform

Anlamsal kurallar

MTP, test.case.result.status, test.suite.name, code.line.number, code.stacktrace, code.function.name, code.file.path, test.case.name ve error.type dahil olmak üzere, bir kuralın bulunduğu durumlarda standart OpenTelemetry test ve kod özniteliklerini yayar. Başarısız testler, span durumunu Error olarak ayarlar ve bir exception olayı ekler.

MTP, kuralları OpenTelemetry'nin tanımlamadığı kavramlar için ek sonuç durumları (skipped, error, timeout, cancelledve ) ve unknowntest öznitelikleriyle genişletir. Mevcut panoları korumak için eski öznitelik ve araç adları varsayılan olarak etkin kalır.

Başlatma işlemi TRACESTATE ve TRACEPARENT sağladığında MTP, test çalıştırmasını ilişkisiz bir kök iz başlatmak yerine bu izin altına yerleştirir.

MSTest yürütme süreleri

MSTest 4.5 ve MTP 2.5 önizlemesi ile başlayan yerel MSTest çalıştırmaları, her test yürütmesi için tek bir kurallı MTP'ye ait etkinlik kullanır. MSTest, test oluşturucuyu, başlatmayı, test yöntemini, temizlemeyi ve özel TestMethodAttribute kodu çalıştırırken etkinliği geçerli hale getirir. HttpClient, SQL, Entity Framework, WCF ve özel etkinlikler otomatik olarak araçlandığından, bunlar test etkinliğinin alt öğeleri haline gelir.

MTP, nihai sonucu, zamanlama bilgilerini, çıktıyı ve artefaktları aynı etkinliğe ekler ve etkinliği, MSTest’in kaydettiği yürütme bitiş zamanında durdurur. Bu davranış, yinelenen çerçeve ve sonuç kapsamlarını önler ve eşzamansız sonuç işlemenin test süresini yapay olarak uzatmasının önüne geçer.

Kurallı yürütme API'sini kullanmayan test çerçeveleri uyumluluk topolojisini korur: çerçeve yürütme etkinliği ve MTP sonuç etkinliği eşdüzey kalır ve sonuç etkinliği, çerçeve devam eden güncelleştirmeyi yayımladığında geçerli olan etkinliğe bağlanır.

Üretilen metrikler

Araç Türü Birim Description
test.case.duration Histogram s Sonuç durumuna ve test paketine göre gruplanmış test süresi.
test.case.result.count Counter {test} Tamamlanan testler, sonuç durumuna ve pakete göre gruplandırılır.
test.case.active UpDownCounter {test} Çalışmakta olan testler.
test.run.duration Histogram s Çalıştırma süresi, sonuç durumuna ve çıkış koduna göre gruplandırılır.
test.case.retry.count Counter {test} Yeniden deneme uzantısı tarafından başka bir deneme için zamanlanmış testler.

Ortam ayarları

Ortam değişkeni Varsayılan Description
TRACEPARENT, TRACESTATE Ayarı kaldır Ana çalıştırma için W3C iz bağlamı.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Yakalanan standart çıkışı ve hatayı test aralıklarına ekler. Çıktı gizli bilgiler içerebilecekse 0 olarak ayarlayın.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Bir dize özniteliği için tutulan en fazla karakteri ayarlar.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Anlamsal konvansiyon adlarının yanı sıra eski öznitelik ve enstrüman adlarını da yayar.
OTEL_SDK_DISABLED Ayarı kaldır true OpenTelemetry SDK'sını devre dışı bırakmak için olarak ayarlayın.
OTEL_SERVICE_NAME Ayarı kaldır Hizmet adını geçersiz kılar.
OTEL_EXPORTER_OTLP_ENDPOINT Ayarı kaldır OTLP uç noktasını ayarlar.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Ayarı kaldır İz ve metrik dışa aktarıcılarını seçer.