Nie znalazłem sposobu, aby zrobić activitySource.StartActivity powrócić aktywność nie-null, która różni się w porównaniu z zachowaniem DiagnosticSource.StartActivity. Czy on się spodziewa? Znam coś oczywistego?

Widzę Dokumenty mówi: "Stworzony obiekt aktywności, jeśli miał aktywne słuchacze lub null, jeśli nie ma słuchaczy zdarzeń". Następujący test nadal nie powiedzie się, co jest właściwy sposób inicjowania ActivityListener? Pakiet, którego używam to "System.Diagnostics.DiagnosticSource" Version="5.0.0".

    [TestMethod]
    public void Start_Not_Null_When_ActivityListener_Added_And_ShouldListenTo_Explicitly_Defined_Activity()
    {
        var activitySource = new ActivitySource("ActivitySourceName");
        var activityListener = new ActivityListener
        {
            ShouldListenTo = s => true
        };
        ActivitySource.AddActivityListener(activityListener);
        
        using var activity = activitySource.StartActivity($"MethodType:/Path");
        
        Assert.IsNotNull(activity);
    }
0
MaGu 22 listopad 2020, 19:07

1 odpowiedź

Najlepsza odpowiedź

Ten test przechodzi za pomocą GitHub:

[TestMethod]
public void Start_Not_Null_When_ActivityListener_Added_And_ShouldListenTo_Explicitly_Defined_Activity()
{
    var activitySource = new ActivitySource("ActivitySourceName");
    var activityListener = new ActivityListener
    {
        ShouldListenTo = s => true,
        SampleUsingParentId = (ref ActivityCreationOptions<string> activityOptions) => ActivitySamplingResult.AllData,
        Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) => ActivitySamplingResult.AllData
    };
    ActivitySource.AddActivityListener(activityListener);

    using var activity = activitySource.StartActivity("MethodType:/Path");

    Assert.IsNotNull(activity);
}
2
MaGu 22 listopad 2020, 16:11