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")); } }
/// <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")); } }
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 } } }