Пример #1
0
        public void Test_Write_T_In_Manifest_Serialization()
        {
            var listenerGenerators = new Func <Listener>[]
            {
#if USE_ETW // TODO: Enable when TraceEvent is available on CoreCLR. GitHub issue #4864.
                () => new EtwListener(),
#endif // USE_ETW
                () => new EventListenerListener()
            };

            foreach (Func <Listener> listenerGenerator in listenerGenerators)
            {
                var events = new List <Event>();
                using (var listener = listenerGenerator())
                {
                    Debug.WriteLine("Testing Listener " + listener);
                    // Create an eventSource with manifest based serialization
                    using (var logger = new SdtEventSources.EventSourceTest())
                    {
                        listener.OnEvent = delegate(Event data) { events.Add(data); };
                        listener.EventSourceSynchronousEnable(logger);

                        // Use the Write<T> API.   This is OK
                        logger.Write("MyTestEvent", new { arg1 = 3, arg2 = "hi" });
                    }
                }
                Assert.Equal(events.Count, 1);
                Event _event = events[0];
                Assert.Equal("MyTestEvent", _event.EventName);
                Assert.Equal(3, (int)_event.PayloadValue(0, "arg1"));
                Assert.Equal("hi", (string)_event.PayloadValue(1, "arg2"));
            }
        }
Пример #2
0
        /// <summary>
        /// This is not a user error but it is something unusual.
        /// You can use the Write API in a EventSource that was did not
        /// Declare SelfDescribingSerialization.  In that case THOSE
        /// events MUST use SelfDescribing serialization.
        /// </summary>
        private static void Test_Write_T_In_Manifest_Serialization_Impl(
            IEnumerable <Func <Listener> > listenerGenerators)
        {
            foreach (var listenerGenerator in listenerGenerators)
            {
                var events = new List <Event>();
                using (var listener = listenerGenerator())
                {
                    Debug.WriteLine("Testing Listener " + listener);
                    // Create an eventSource with manifest based serialization
                    using (var logger = new SdtEventSources.EventSourceTest())
                    {
                        listener.OnEvent = delegate(Event data)
                        { events.Add(data); };
                        listener.EventSourceSynchronousEnable(logger);

                        // Use the Write<T> API.   This is OK
                        logger.Write("MyTestEvent", new { arg1 = 3, arg2 = "hi" });
                    }
                }

                Assert.Equal(1, events.Count);
                Event _event = events[0];
                Assert.Equal("MyTestEvent", _event.EventName);
                Assert.Equal(3, (int)_event.PayloadValue(0, "arg1"));
                Assert.Equal("hi", (string)_event.PayloadValue(1, "arg2"));
            }
        }
Пример #3
0
        public void Test_Write_T_In_Manifest_Serialization()
        {
            using (var eventListener = new EventListenerListener())
            {
#if USE_ETW
                EtwListener etwListener = null;
#endif
                try
                {
                    var listenerGenerators = new List <Func <Listener> >();
                    listenerGenerators.Add(() => eventListener);
#if USE_ETW
                    if (IsProcessElevated)
                    {
                        etwListener = new EtwListener();
                        listenerGenerators.Add(() => etwListener);
                    }
#endif // USE_ETW

                    foreach (Func <Listener> listenerGenerator in listenerGenerators)
                    {
                        var events = new List <Event>();
                        using (var listener = listenerGenerator())
                        {
                            Debug.WriteLine("Testing Listener " + listener);
                            // Create an eventSource with manifest based serialization
                            using (var logger = new SdtEventSources.EventSourceTest())
                            {
                                listener.OnEvent = delegate(Event data) { events.Add(data); };
                                listener.EventSourceSynchronousEnable(logger);

                                // Use the Write<T> API.   This is OK
                                logger.Write("MyTestEvent", new { arg1 = 3, arg2 = "hi" });
                            }
                        }
                        Assert.Equal(events.Count, 1);
                        Event _event = events[0];
                        Assert.Equal("MyTestEvent", _event.EventName);
                        Assert.Equal(3, (int)_event.PayloadValue(0, "arg1"));
                        Assert.Equal("hi", (string)_event.PayloadValue(1, "arg2"));
                    }
                }
                finally
                {
#if USE_ETW
                    if (etwListener != null)
                    {
                        etwListener.Dispose();
                    }
#endif // USE_ETW
                }
            }
        }