public async Task Stop_Logs_WhenOperationCanceledExceptionOccuresInTransport() { var workerName = $"worker-{DateTime.Now}"; // arrange var transport = A.Fake <ITransport>(); var pipeline = A.Fake <IPipeline>(); var pipelineInvoker = A.Fake <IPipelineInvoker>(); var context = A.Fake <ThreadWorkerSynchronizationContext>(); var manager = A.Fake <ParallelOperationsManager>(fake => fake.WithArgumentsForConstructor(() => new ParallelOperationsManager(1))); var backOff = A.Fake <IBackoffStrategy>(); var logFactory = A.Fake <IRebusLoggerFactory>(); var log = A.Fake <ILog>(); var timeout = TimeSpan.FromSeconds(10); var owningBus = A.Fake <RebusBus>(); A.CallTo(() => logFactory.GetCurrentClassLogger()) .Returns(log); A.CallTo(() => transport.Receive(A <ITransactionContext> ._, A <CancellationToken> ._)) .Throws(() => new OperationCanceledException("test")); // system under test var sut = new ThreadWorker(transport, pipeline, pipelineInvoker, workerName, context, manager, backOff, logFactory, timeout, owningBus); // act await Task.Delay(TimeSpan.FromSeconds(5)); sut.Stop(); // assert A.CallTo(() => log.Warn("Execution cancelled.")) .MustHaveHappened(); }
public override bool Process(HttpServer.IHttpRequest request, HttpServer.IHttpResponse response, HttpServer.Sessions.IHttpSession session) { if (request.UriPath.StartsWith(Url)) { string board = request.QueryString[UrlParameters.Board].Value; if (!string.IsNullOrWhiteSpace(board)) { BoardWatcher bw = Program.GetBoardWatcher(board); if (bw != null) { for (int i = 0; i < bw.watched_threads.Count; i++) { try { ThreadWorker tw = bw.watched_threads.ElementAt(i).Value; if (!tw.AddedAutomatically) { tw.Stop(); } } catch (System.IndexOutOfRangeException) { break; } catch { } } } } response.Redirect(MonitoredBoardsPageHandler.Url); return(true); } return(false); }
public async Task Stop_Logs_WhenOperationCanceledExceptionOccuresInTransport(string workerName) { // arrange var transport = A.Fake<ITransport>(); var pipeline = A.Fake<IPipeline>(); var pipelineInvoker = A.Fake<IPipelineInvoker>(); var context = A.Fake<ThreadWorkerSynchronizationContext>(); var manager = A.Fake<ParallelOperationsManager>(fake => fake.WithArgumentsForConstructor(() => new ParallelOperationsManager(1))); var backOff = A.Fake<IBackoffStrategy>(); var logFactory = A.Fake<IRebusLoggerFactory>(); var log = A.Fake<ILog>(); var timeout = TimeSpan.FromSeconds(10); A.CallTo(() => logFactory.GetCurrentClassLogger()) .Returns(log); A.CallTo(() => transport.Receive(A<ITransactionContext>._, A<CancellationToken>._)) .Throws(() => new OperationCanceledException("test")); // system under test var sut = new ThreadWorker(transport, pipeline, pipelineInvoker, workerName, context, manager, backOff, logFactory, timeout); // act await Task.Delay(TimeSpan.FromSeconds(5)); sut.Stop(); // assert A.CallTo(() => log.Warn("Execution cancelled.")) .MustHaveHappened(); }