/// <summary> /// A helper that can run the test under a variety of conditions /// * Whether the eventSource is enabled at startup /// * Whether the listener is ETW or an EventListern /// * Whether the ETW output is self describing or not. /// </summary> private void Test_Bad_EventSource_Startup(bool onStartup, Listener listener, EventSourceSettings settings) { var eventSourceName = typeof(BadEventSource_MismatchedIds).Name; Debug.WriteLine("***** Test_BadEventSource_Startup(OnStartUp: " + onStartup + " Listener: " + listener + " Settings: " + settings + ")"); // Activate the source before the source exists (if told to). if (onStartup) { listener.EventSourceCommand(eventSourceName, EventCommand.Enable); } var events = new List <Event>(); listener.OnEvent = delegate(Event data) { events.Add(data); }; using (var source = new BadEventSource_MismatchedIds(settings)) { Assert.Equal(eventSourceName, source.Name); // activate the source after the source exists (if told to). if (!onStartup) { listener.EventSourceCommand(eventSourceName, EventCommand.Enable); } source.Event1(1); // Try to send something. } listener.Dispose(); // Confirm that we get exactly one event from this whole process, that has the error message we expect. Assert.Equal(events.Count, 1); Event _event = events[0]; Assert.Equal("EventSourceMessage", _event.EventName); string message = _event.PayloadString(0, "message"); Debug.WriteLine(string.Format("Message=\"{0}\"", message)); // expected message: "ERROR: Exception in Command Processing for EventSource BadEventSource_MismatchedIds: Event Event2 was assigned event ID 2 but 1 was passed to WriteEvent. " if (!PlatformDetection.IsFullFramework) // Full framework has typo { Assert.Matches("Event Event2 was assigned event ID 2 but 1 was passed to WriteEvent", message); } }
/// <summary> /// A helper that can run the test under a variety of conditions /// * Whether the eventSource is enabled at startup /// * Whether the listener is ETW or an EventListern /// * Whether the ETW output is self describing or not. /// </summary> private void Test_Bad_EventSource_Startup(bool onStartup, Listener listener, EventSourceSettings settings) { var eventSourceName = typeof(BadEventSource_MismatchedIds).Name; Debug.WriteLine("***** Test_BadEventSource_Startup(OnStartUp: " + onStartup + " Listener: " + listener + " Settings: " + settings + ")"); // Activate the source before the source exists (if told to). if (onStartup) { listener.EventSourceCommand(eventSourceName, EventCommand.Enable); } var events = new List <Event>(); listener.OnEvent = delegate(Event data) { events.Add(data); }; using (var source = new BadEventSource_MismatchedIds(settings)) { Assert.Equal(eventSourceName, source.Name); // activate the source after the source exists (if told to). if (!onStartup) { listener.EventSourceCommand(eventSourceName, EventCommand.Enable); } source.Event1(1); // Try to send something. } listener.Dispose(); // Confirm that we get exactly one event from this whole process, that has the error message we expect. Assert.Equal(1, events.Count); Event _event = events[0]; Assert.Equal("EventSourceMessage", _event.EventName); string message = _event.PayloadString(0, "message"); Debug.WriteLine(string.Format("Message=\"{0}\"", message)); // expected message: "ERROR: Exception in Command Processing for EventSource BadEventSource_MismatchedIds: Event Event2 was assigned event ID 2 but 1 was passed to WriteEvent. " if (!PlatformDetection.IsNetFramework) // .NET Framework has typo { Assert.Contains("Event Event2 was assigned event ID 2 but 1 was passed to WriteEvent", message); } // Validate the details of the EventWrittenEventArgs object if (_event is EventListenerListener.EventListenerEvent elEvent) { EventWrittenEventArgs ea = elEvent.Data; Assert.NotNull(ea); Assert.Equal(EventSource.CurrentThreadActivityId, ea.ActivityId); Assert.Equal(EventChannel.None, ea.Channel); Assert.Equal(0, ea.EventId); Assert.Equal("EventSourceMessage", ea.EventName); Assert.NotNull(ea.EventSource); Assert.Equal(EventKeywords.None, ea.Keywords); Assert.Equal(EventLevel.LogAlways, ea.Level); Assert.Equal((EventOpcode)0, ea.Opcode); Assert.NotNull(ea.Payload); Assert.NotNull(ea.PayloadNames); Assert.Equal(ea.PayloadNames.Count, ea.Payload.Count); Assert.Equal(Guid.Empty, ea.RelatedActivityId); Assert.Equal(EventTags.None, ea.Tags); Assert.Equal(EventTask.None, ea.Task); Assert.InRange(ea.TimeStamp, DateTime.MinValue, DateTime.MaxValue); Assert.Equal(0, ea.Version); } }
/// <summary> /// A helper that can run the test under a variety of conditions /// * Whether the eventSource is enabled at startup /// * Whether the listener is ETW or an EventListern /// * Whether the ETW output is self describing or not. /// </summary> private void Test_Bad_EventSource_Startup(bool onStartup, Listener listener, EventSourceSettings settings) { var eventSourceName = typeof(BadEventSource_MismatchedIds).Name; Debug.WriteLine("***** Test_BadEventSource_Startup(OnStartUp: " + onStartup + " Listener: " + listener + " Settings: " + settings + ")"); // Activate the source before the source exists (if told to). if (onStartup) listener.EventSourceCommand(eventSourceName, EventCommand.Enable); var events = new List<Event>(); listener.OnEvent = delegate (Event data) { events.Add(data); }; using (var source = new BadEventSource_MismatchedIds(settings)) { Assert.Equal(eventSourceName, source.Name); // activate the source after the source exists (if told to). if (!onStartup) listener.EventSourceCommand(eventSourceName, EventCommand.Enable); source.Event1(1); // Try to send something. } listener.Dispose(); // Confirm that we get exactly one event from this whole process, that has the error message we expect. Assert.Equal(events.Count, 1); Event _event = events[0]; Assert.Equal("EventSourceMessage", _event.EventName); string message = _event.PayloadString(0, "message"); Debug.WriteLine(String.Format("Message=\"{0}\"", message)); // expected message: "ERROR: Exception in Command Processing for EventSource BadEventSource_MismatchedIds: Event Event2 is given event ID 2 but 1 was passed to WriteEvent. " Assert.True(Regex.IsMatch(message, "Event Event2 is givien event ID 2 but 1 was passed to WriteEvent")); }