public async Task FunctionListener_DoesNotThrow_IfHandled() { HandlingTraceWriter trace = new HandlingTraceWriter(TraceLevel.Error, (te) => (te.Exception as RecoverableException).Handled = true); Mock <IListener> badListener = new Mock <IListener>(MockBehavior.Strict); badListener.Setup(bl => bl.StartAsync(It.IsAny <CancellationToken>())) .Throws(new Exception("listener")); var listener = new FunctionListener(badListener.Object, fd, trace, _loggerFactory); await listener.StartAsync(ct); string expectedMessage = "The listener for function 'testfunc' was unable to start."; // Validate TraceWriter Assert.Equal(expectedMessage, trace.Traces[0].Message); var traceEx = trace.Traces[0].Exception as FunctionException; Assert.Equal("testfunc", traceEx.MethodName); Assert.True(traceEx.Handled); // Validate Logger var logMessage = _loggerProvider.CreatedLoggers.Single().LogMessages.Single(); Assert.Equal(expectedMessage, logMessage.FormattedMessage); var loggerEx = logMessage.Exception as FunctionException; Assert.Equal("testfunc", loggerEx.MethodName); Assert.True(loggerEx.Handled); badListener.VerifyAll(); }
public async Task FunctionListener_RunsStop_IfStarted() { HandlingTraceWriter trace = new HandlingTraceWriter(TraceLevel.Error, (te) => (te.Exception as RecoverableException).Handled = true); Mock <IListener> goodListener = new Mock <IListener>(MockBehavior.Strict); goodListener.Setup(bl => bl.StartAsync(It.IsAny <CancellationToken>())) .Returns(Task.FromResult(false)); goodListener.Setup(bl => bl.StopAsync(It.IsAny <CancellationToken>())) .Returns(Task.FromResult(false)); var listener = new FunctionListener(goodListener.Object, fd, trace, _loggerFactory); await listener.StartAsync(ct); await listener.StopAsync(ct); Assert.Empty(trace.Traces); Assert.Empty(_loggerProvider.CreatedLoggers.Single().LogMessages); goodListener.VerifyAll(); }
public async Task FunctionListener_DoesNotStop_IfNotStarted() { HandlingTraceWriter trace = new HandlingTraceWriter(TraceLevel.Error, (te) => (te.Exception as RecoverableException).Handled = true); Mock <IListener> badListener = new Mock <IListener>(MockBehavior.Strict); badListener.Setup(bl => bl.StartAsync(It.IsAny <CancellationToken>())) .Throws(new Exception("listener")); var listener = new FunctionListener(badListener.Object, fd, trace, _loggerFactory); await listener.StartAsync(ct); // these should do nothing, as function listener had an exception on start await listener.StopAsync(ct); await listener.StopAsync(ct); await listener.StopAsync(ct); // ensure that badListener.StopAsync is not called on a disabled function listener badListener.VerifyAll(); }