Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }