public void SubscribeDiagnosticListener_CustomDiagnosticListenerObserverSubscribed() { // Arrange var diagnosticListenerObservable = new FakeDiagnosticListenerObservable(); var testDiagnosticListener = new DiagnosticListener("TestDiagnosticListener"); diagnosticListenerObservable.AddListener(testDiagnosticListener); diagnosticListenerObservable.SubscribeDiagnosticListener(o => { o.AddSubscriber("TestDiagnosticListener", new TestObserverForTestDiagnosticListener()); }); // Act diagnosticListenerObservable.CommitData(); // Assert var subscriptionsField = typeof(DiagnosticListener).GetField("_subscriptions", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); var testDiagnosticListenerSubscriptions = subscriptionsField.GetValue(testDiagnosticListener); var testDiagnosticListenerObserver = testDiagnosticListenerSubscriptions.GetType() .GetField("Observer", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic) .GetValue(testDiagnosticListenerSubscriptions); Assert.IsInstanceOfType(testDiagnosticListenerObserver, typeof(TestObserverForTestDiagnosticListener)); }
public void SubscribeDiagnosticListener_DefaultListenersSubscribed() { // Arrange var diagnosticListenerObservable = new FakeDiagnosticListenerObservable(); var httpClientDiagnosticListener = new DiagnosticListener("HttpHandlerDiagnosticListener"); var aspNetCoreDiagnosticListener = new DiagnosticListener("Microsoft.AspNetCore"); diagnosticListenerObservable.AddListener(httpClientDiagnosticListener); diagnosticListenerObservable.AddListener(aspNetCoreDiagnosticListener); diagnosticListenerObservable.SubscribeDiagnosticListener(c => { c.AddAspNetCoreObserver(); c.AddHttpHandlerObserver(); }); // Act // This notifies the diagnostic listeners observers about the different diagnostic listeners registered. // We register one observer using SubscribeDiagnosticListener. // At the same time, when notified, this observer registers the adequate // observers into each one of the Diagnostic Listeners. diagnosticListenerObservable.CommitData(); // Assert var subscriptionsField = typeof(DiagnosticListener).GetField("_subscriptions", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); var httpClientDiagnosticListenerSubscriptions = subscriptionsField.GetValue(httpClientDiagnosticListener); var httpClientDiagnosticListenerObserver = httpClientDiagnosticListenerSubscriptions.GetType() .GetField("Observer", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic) .GetValue(httpClientDiagnosticListenerSubscriptions); var aspNetCoreDiagnosticListenerSubscriptions = subscriptionsField.GetValue(aspNetCoreDiagnosticListener); var aspNetCoreDiagnosticListenerObserver = aspNetCoreDiagnosticListenerSubscriptions.GetType() .GetField("Observer", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic) .GetValue(aspNetCoreDiagnosticListenerSubscriptions); Assert.IsInstanceOfType(httpClientDiagnosticListenerObserver, typeof(HttpHandlerDiagnosticListenerObserver)); Assert.IsInstanceOfType(aspNetCoreDiagnosticListenerObserver, typeof(AspNetCoreDiagnosticListenerObserver)); }