public async Task Send_MultipleMediators_DoesNotThrow() { clientPool.Dispose(); serverPool.Dispose(); cts.Cancel(); cts.Dispose(); await serverTask; cts = new CancellationTokenSource(); clientPool = new MediatorClientPool("testpool", poolSize); serverPool = new MediatorServerPool(Sender.Object, "testpool", poolSize); serverTask = Task.Run(serverPool.Run, cts.Token); await clientPool.Send(new VoidRequest()); serverPool.Dispose(); clientPool.Dispose(); cts.Cancel(); cts.Dispose(); await serverTask; cts = new CancellationTokenSource(); clientPool = new MediatorClientPool("testpool", poolSize); serverPool = new MediatorServerPool(Sender.Object, "testpool", poolSize); serverTask = Task.Run(serverPool.Run, cts.Token); AsyncTestDelegate task = () => clientPool.Send(new VoidRequest()); Assert.DoesNotThrowAsync(task); }
public async Task RunServer(string identifier) { Console.WriteLine("Starting server.."); var server = new MediatorServerPool(sender, poolName: identifier, poolSize: 4); await server.Run(); }
public void Setup() { cts = new CancellationTokenSource(); Sender = new Mock <ISender>(); this.SetupRequest <VoidRequest, Unit>(Unit.Value); this.SetupRequest <RequestWithResponse, Response>((a, _) => new Response { A = a.A, B = a.B, C = a.C }); this.SetupRequest <SlowRequest, Response>(async() => { await Task.Delay(500); return(new Response()); }); this.SetupRequest <HugeRequest, byte[]>((req, _) => (byte[])req.Data.Clone()); Sender.Setup(s => s.Send(It.IsAny <IRequest>(), It.Is <CancellationToken>(t => t.IsCancellationRequested))) .ThrowsAsync(new TaskCanceledException()); clientPool = new MediatorClientPool("testpool", poolSize); serverPool = new MediatorServerPool(Sender.Object, "testpool", poolSize); serverTask = serverPool.Run(); }