Esempio n. 1
0
        public async Task TestUdpEventSink()
        {
            int port      = 11001;
            var udpclient = new UdpClient(port);

            var slabListener = new ObservableEventListener();

            slabListener.Subscribe(new UdpEventSink(IPAddress.Loopback, port, new TestEventFormatter()));
            var source = TestEventSource.GetInstance();

            slabListener.EnableEvents(source, EventLevel.LogAlways, Keywords.All);

            var t = udpclient.ReceiveAsync();

            source.Message("Boris", "Meep");

            var receivedText = Encoding.UTF8.GetString((await t).Buffer);

            Assert.Equal(
                "EventId=1 EventName=MessageInfo Level=Error \"FormattedMessage=Meep - Boris\" \"message=Boris\" \"caller=Meep\"\r\n",
                receivedText);

            udpclient.Close();
            slabListener.Dispose();
        }
        public void ShouldResetThreadpoolThroughputQueueLengthWhenSampled()
        {
            using (var eventSource = new TestEventSource())
                using (var threadEventListener = CreateThreadEventsListener())
                {
                    eventSource.DequeueThread();
                    eventSource.DequeueThread();
                    eventSource.DequeueThread();
                    eventSource.DequeueThread();

                    threadEventListener.Sample(); //This call should reset the accumulated stats

                    eventSource.EnqueueThread();
                    eventSource.EnqueueThread();
                    eventSource.EnqueueThread();
                    eventSource.EnqueueThread();
                    eventSource.EnqueueThread();

                    var sample = threadEventListener.Sample();

                    NrAssert.Multiple(
                        () => Assert.AreEqual(5, sample.CountThreadRequestsQueued),
                        () => Assert.AreEqual(0, sample.CountThreadRequestsDequeued),
                        () => Assert.AreEqual(5, sample.ThreadRequestQueueLength) //Would be 1 if the queueLength was not reset
                        );
                }
        }
        public void EventHandlerCalled()
        {
            var called = false;

            var source = new TestEventSource();

            source.TestEvent += (sender, args) => { called = true; };

            source.FireTestEvent();

            Assert.IsTrue(called);
        }
        public void StaticHandlerShouldRun()
        {
            int beforeRun = s_count;

            var source = new TestEventSource();

            source.TestEvent += Handler;

            source.FireTestEvent();

            Assert.IsTrue(s_count > beforeRun);
        }
        public void MultipleHandlersCalled()
        {
            var called1 = false;
            var called2 = false;

            var source = new TestEventSource();

            source.TestEvent += (sender, args) => { called1 = true; };
            source.TestEvent += (sender, args) => { called2 = true; };
            source.FireTestEvent();

            Assert.IsTrue(called1 && called2);
        }
        public void CanRemoveStaticEventHandler()
        {
            int beforeRun = s_count;

            var source = new TestEventSource();

            source.TestEvent += Handler;
            source.TestEvent -= Handler;

            source.FireTestEvent();

            Assert.IsTrue(s_count == beforeRun);
        }
        public void CanCreateMultipleEventSources()
        {
            EventSource GetEventSource(TestAssemblyLoadContext testAssemblyLoadContext)
            {
                return((EventSource)Activator.CreateInstance(testAssemblyLoadContext.Assemblies
                                                             .Single()
                                                             .GetType("Azure.Core.Tests.AzureEventSourceTests+TestEventSource")));
            }

            void LogEvent(EventSource azureCoreEventSource)
            {
                azureCoreEventSource.GetType()
                .GetMethod("LogSomething", BindingFlags.Public | BindingFlags.Instance)
                .Invoke(azureCoreEventSource, Array.Empty <object>());
            }

            var alc  = new TestAssemblyLoadContext("Test 1");
            var alc2 = new TestAssemblyLoadContext("Test 2");

            try
            {
                List <EventWrittenEventArgs> events = new();
                using var listener = new AzureEventSourceListener((args, s) => events.Add(args), EventLevel.Verbose);

                alc.LoadFromAssemblyPath(typeof(TestEventSource).Assembly.Location);
                alc2.LoadFromAssemblyPath(typeof(TestEventSource).Assembly.Location);

                using var es0 = new TestEventSource();
                using var es1 = GetEventSource(alc);
                using var es2 = GetEventSource(alc2);

                LogEvent(es0);
                LogEvent(es1);
                LogEvent(es2);

                Assert.AreEqual("Azure-Corez", es0.Name);
                Assert.AreEqual("Azure-Corez-1", es1.Name);
                Assert.AreEqual("Azure-Corez-2", es2.Name);

                Assert.AreEqual(3, events.Count);

                Assert.AreEqual("Azure-Corez", events[0].EventSource.Name);
                Assert.AreEqual("Azure-Corez-1", events[1].EventSource.Name);
                Assert.AreEqual("Azure-Corez-2", events[2].EventSource.Name);
            }
            finally
            {
                alc.Unload();
                alc2.Unload();
            }
        }
        public void RemoveHandlerWithMultipleSubscriptionsRemovesOne()
        {
            int beforeRun = s_count;

            var source = new TestEventSource();

            source.TestEvent += Handler;
            source.TestEvent += Handler;
            source.TestEvent -= Handler;

            source.FireTestEvent();

            Assert.AreEqual(beforeRun + 1, s_count);
        }
Esempio n. 9
0
        public void DoWork_should_detach_from_event_after_first_invocation()
        {
            //arrange
            var testSource = new TestEventSource();
            var sut        = new ClassToTest();

            sut.DoWork(testSource);

            //act
            testSource.InvokeEvent();
            testSource.InvokeEvent();     //call two times :)

            //assert
            testSource.InvokationCount.Should("have hooked the event").Be(1);
            testSource.IsEventDetached().Should("have unhooked the event").Be.True();
        }
Esempio n. 10
0
        public void BaseEventListener()
        {
            // make sure this thing only deals with the BuildXL event source
            using (var listener = new TrackingEventListener(Events.Log))
            {
                // this one should get through
                Events log = Events.Log;
                log.InfoEvent("Test 1");
                XAssert.AreEqual(listener.InformationalCount, 1);

                // this one should not
                using (var log2 = new TestEventSource())
                {
                    log2.InfoEvent("Test 1");
                    XAssert.AreEqual(listener.InformationalCount, 1);
                }
            }
        }
        public void ThreadpoolThroughputStatsShouldNotReportNegativeQueueLengths()
        {
            using (var eventSource = new TestEventSource())
                using (var threadEventListener = CreateThreadEventsListener())
                {
                    eventSource.DequeueThread();
                    eventSource.DequeueThread();
                    eventSource.DequeueThread();
                    eventSource.DequeueThread();

                    var sample = threadEventListener.Sample();

                    NrAssert.Multiple(
                        () => Assert.AreEqual(0, sample.CountThreadRequestsQueued),
                        () => Assert.AreEqual(4, sample.CountThreadRequestsDequeued),
                        () => Assert.AreEqual(0, sample.ThreadRequestQueueLength)
                        );
                }
        }
        public void ShouldAccumulateThreadpoolThroughputStats()
        {
            using (var eventSource = new TestEventSource())
                using (var threadEventListener = CreateThreadEventsListener())
                {
                    eventSource.EnqueueThread();
                    eventSource.EnqueueThread();
                    eventSource.EnqueueThread();

                    eventSource.DequeueThread();
                    eventSource.DequeueThread();

                    var sample = threadEventListener.Sample();

                    NrAssert.Multiple(
                        () => Assert.AreEqual(3, sample.CountThreadRequestsQueued),
                        () => Assert.AreEqual(2, sample.CountThreadRequestsDequeued),
                        () => Assert.AreEqual(1, sample.ThreadRequestQueueLength)
                        );
                }
        }
        public void VerifySubscriberCanBeCollected()
        {
            WeakReference wr     = null;
            var           source = new TestEventSource();

            new Action(() =>
            {
                var ts = new TestSubscriber();
                wr     = new WeakReference(ts);
                ts.Subscribe(source);
            })();

            GC.Collect();
            GC.WaitForPendingFinalizers();

            Assert.IsNotNull(wr);
            Assert.IsFalse(wr.IsAlive);

            // The handler for this calls Assert.Fail, so if the subscriber has not been collected
            // the handler will be called and the test will fail
            source.FireTestEvent();
        }
        public void TestEventSourceLogLevelWhenEventSourceIsAlreadyCreated()
        {
            using (var testEventSource = new TestEventSource())
            {
                var senderMock = new DiagnosticsSenderMock();
                var senders    = new List <IDiagnosticsSender> {
                    senderMock
                };
                using (var listener = new DiagnosticsListener(senders))
                {
                    const EventKeywords AllKeyword = (EventKeywords)(-1);
                    // The default level is EventLevel.Error
                    Assert.IsTrue(testEventSource.IsEnabled(EventLevel.Error, AllKeyword));

                    // So Verbose should not be enabled
                    Assert.IsFalse(testEventSource.IsEnabled(EventLevel.Verbose, AllKeyword));

                    listener.LogLevel = EventLevel.Verbose;
                    Assert.IsTrue(testEventSource.IsEnabled(EventLevel.Verbose, AllKeyword));
                }
            }
        }
        public void FiringEventWithoutHandlerShouldNotThrow()
        {
            var source = new TestEventSource();

            source.FireTestEvent();
        }
 public TestSource()
 {
     EventSource            = new TestEventSource();
     EventSource.TestEvent += EventSource_TestEvent;
 }
 public void Subscribe(TestEventSource source)
 {
     source.TestEvent += SourceOnTestEvent;
 }
 public EventDeal()
 {
     TestEventSource   es = new TestEventSource();
     TestEventListener el = new TestEventListener();
 }
 public void SetsTraits()
 {
     using var es = new TestEventSource();
     Assert.AreEqual("true", es.GetTrait("AzureEventSource"));
 }
 public void UnSubscribe(TestEventSource evenSource)
 {
     evenSource.TestEvent -= new TestEventSource.TestEventHandler(KeyPressed);
 }