TestUtilities.CheckNoEventSourcesRunning("Stop");
}
+
+ [Theory]
+ [InlineData(true)]
+ [InlineData(false)]
+ public void Test_EventListenerThrows_ExceptionIsNotRethrownToCaller(bool setThrowOnEventWriteErrorsFlag)
+ {
+ TestUtilities.CheckNoEventSourcesRunning("Start");
+
+ using (var log = new EventSourceTest(throwOnEventWriteErrors: setThrowOnEventWriteErrorsFlag))
+ {
+ using (var listener = new EventListenerListener())
+ {
+ listener.EventSourceSynchronousEnable(log);
+
+ var thrownException = new Exception("Oops");
+ string outOfBandMessage = null;
+
+ listener.EventWritten += (_, e) =>
+ {
+ if (e.EventId == 0)
+ {
+ outOfBandMessage = e.Message;
+ }
+
+ throw thrownException;
+ };
+
+ try
+ {
+ log.Event0();
+ Assert.False(setThrowOnEventWriteErrorsFlag);
+ }
+ catch (EventSourceException ex)
+ {
+ Assert.True(setThrowOnEventWriteErrorsFlag);
+ Assert.Same(thrownException, ex.InnerException);
+ }
+
+ Assert.Contains(thrownException.Message, outOfBandMessage);
+ }
+ }
+
+ TestUtilities.CheckNoEventSourcesRunning("Stop");
+ }
}
}
[EventSource(Guid = "69e2aa3e-083b-5014-cad4-3e511a0b94cf", Name = "EventSourceTest")]
public sealed class EventSourceTest : EventSource
{
- public EventSourceTest(bool useSelfDescribingEvents = false)
- : base(true)
+ public EventSourceTest(bool useSelfDescribingEvents = false, bool throwOnEventWriteErrors = false)
+ : base((useSelfDescribingEvents ? EventSourceSettings.EtwSelfDescribingEventFormat : EventSourceSettings.EtwManifestEventFormat)
+ | (throwOnEventWriteErrors ? EventSourceSettings.ThrowOnEventWriteErrors : 0))
{ }
protected override void OnEventCommand(EventCommandEventArgs command)