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(); } }
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()); } }
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]); } }
public Task SendAllAsync() { return(_hubLifetimeManager.SendAllAsync("MethodName", Array.Empty <object>())); }