public void BackgroundServiceBase_WhenException_ShouldFireEvent()
        {
            // arrange
            var backgroundService = new BackgroundServiceTest {
                ShouldFail = true
            };
            var host = HostHelper.Build(backgroundService);
            List <TelemetryEvent> events = new List <TelemetryEvent>();

            // act
            ApplicationEventSource.Log.Listen(listener =>
            {
                var hostRun = host.RunAsync();
                Task.Delay(100).GetAwaiter().GetResult();

                events.AddRange(listener
                                .OrderedEvents
                                .Select(e => EventWrittenEventArgsExtensions.Map(e, "test"))
                                .ToArray());
            });

            // assert
            Assert.NotNull(events
                           .FirstOrDefault(e => e.Message == "Unhandled exception occurred."));
        }
        public async Task HostedServiceBase_WhenStartThrowsAndStopExecuted_ShouldPassAndFireEvent()
        {
            // arrange
            var hostedService = new HostedServiceTest {
                StartShouldFail = true
            };
            var host = HostHelper.Build(hostedService);
            List <TelemetryEvent> events = new List <TelemetryEvent>();

            // act
            ApplicationEventSource.Log.Listen(listener =>
            {
                var hostStart = host.StartAsync();
                Task.Delay(100).GetAwaiter().GetResult();

                events.AddRange(listener
                                .OrderedEvents
                                .Select(e => EventWrittenEventArgsExtensions.Map(e, "test"))
                                .ToArray());
            });
            var hostStop = host.StopAsync();
            var stop     = await hostedService.WaitStop;

            // assert
            Assert.NotNull(events
                           .FirstOrDefault(e => e.Message == "Unhandled exception occurred."));
            Assert.True(stop);
        }