示例#1
0
        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);
        }
示例#2
0
        public async Task RunServer(string identifier)
        {
            Console.WriteLine("Starting server..");
            var server = new MediatorServerPool(sender, poolName: identifier, poolSize: 4);

            await server.Run();
        }
示例#3
0
        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();
        }