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 RunClient(string identifier) { Console.WriteLine("Starting client.."); Console.WriteLine($"Pool name: {identifier}"); ISender clientPool = new MediatorClientPool(poolName: identifier, poolSize: 4); Console.WriteLine($"Sending {nameof(ApplicationStateQuery)} from client to server.."); var serverProcessInfo = await clientPool.Send(new ApplicationStateQuery()); Console.WriteLine($"Response received:"); Console.WriteLine(serverProcessInfo); var pid = Process.GetCurrentProcess().Id; while (true) { Console.Write("Send message: "); var message = Console.ReadLine(); Console.WriteLine("Sending message.."); var response = await clientPool.Send(new IPCMessageCommand { PID = pid, Message = message }); Console.WriteLine($"Got response: {response}"); } }
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(); }