Exemple #1
0
        public async Task SendAllAsyncSendsToAllConnectionsEvenWhenSomeFailToSend()
        {
            using (var client = new TestClient())
                using (var client2 = new TestClient())
                {
                    var manager = new DefaultHubLifetimeManager <MyHub>(new Logger <DefaultHubLifetimeManager <MyHub> >(NullLoggerFactory.Instance));

                    var connectionMock  = HubConnectionContextUtils.CreateMock(client.Connection);
                    var connectionMock2 = HubConnectionContextUtils.CreateMock(client2.Connection);

                    var tcs  = new TaskCompletionSource <object>();
                    var tcs2 = new TaskCompletionSource <object>();
                    // Force an exception when writing to connection
                    connectionMock.Setup(m => m.WriteAsync(It.IsAny <HubMessage>())).Callback(() => tcs.TrySetResult(null)).Throws(new Exception("Message"));
                    connectionMock2.Setup(m => m.WriteAsync(It.IsAny <HubMessage>())).Callback(() => tcs2.TrySetResult(null)).Throws(new Exception("Message"));
                    var connection  = connectionMock.Object;
                    var connection2 = connectionMock2.Object;

                    await manager.OnConnectedAsync(connection).OrTimeout();

                    await manager.OnConnectedAsync(connection2).OrTimeout();

                    await manager.SendAllAsync("Hello", new object[] { "World" }).OrTimeout();

                    // Check that all connections were "written" to
                    await tcs.Task.OrTimeout();

                    await tcs2.Task.OrTimeout();
                }
        }
Exemple #2
0
        public async Task SendAllAsyncDoesNotWriteToDisconnectedConnectionsOutput()
        {
            using (var client1 = new TestClient())
                using (var client2 = new TestClient())
                {
                    var manager     = new DefaultHubLifetimeManager <MyHub>(new Logger <DefaultHubLifetimeManager <MyHub> >(NullLoggerFactory.Instance));
                    var connection1 = HubConnectionContextUtils.Create(client1.Connection);
                    var connection2 = HubConnectionContextUtils.Create(client2.Connection);

                    await manager.OnConnectedAsync(connection1).OrTimeout();

                    await manager.OnConnectedAsync(connection2).OrTimeout();

                    await manager.OnDisconnectedAsync(connection2).OrTimeout();

                    await manager.SendAllAsync("Hello", new object[] { "World" }).OrTimeout();

                    var message = Assert.IsType <InvocationMessage>(client1.TryRead());
                    Assert.Equal("Hello", message.Target);
                    Assert.Single(message.Arguments);
                    Assert.Equal("World", (string)message.Arguments[0]);

                    Assert.Null(client2.TryRead());
                }
        }
Exemple #3
0
        public async Task InvokeAllAsyncWritesToAllConnectionsOutput()
        {
            using (var client1 = new TestClient())
                using (var client2 = new TestClient())
                {
                    var manager     = new DefaultHubLifetimeManager <MyHub>();
                    var connection1 = HubConnectionContextUtils.Create(client1.Connection);
                    var connection2 = HubConnectionContextUtils.Create(client2.Connection);

                    await manager.OnConnectedAsync(connection1).OrTimeout();

                    await manager.OnConnectedAsync(connection2).OrTimeout();

                    await manager.SendAllAsync("Hello", new object[] { "World" }).OrTimeout();

                    await connection1.DisposeAsync().OrTimeout();

                    await connection2.DisposeAsync().OrTimeout();

                    var message = Assert.IsType <InvocationMessage>(client1.TryRead());
                    Assert.Equal("Hello", message.Target);
                    Assert.Single(message.Arguments);
                    Assert.Equal("World", (string)message.Arguments[0]);

                    message = Assert.IsType <InvocationMessage>(client2.TryRead());
                    Assert.Equal("Hello", message.Target);
                    Assert.Single(message.Arguments);
                    Assert.Equal("World", (string)message.Arguments[0]);
                }
        }
Exemple #4
0
 public Task SendAllAsync()
 {
     return(_hubLifetimeManager.SendAllAsync("MethodName", Array.Empty <object>()));
 }