// Re-enable micro-benchmark when https://github.com/aspnet/SignalR/issues/3088 is fixed // [GlobalSetup] public void GlobalSetup() { var server = new TestRedisServer(); var logger = NullLogger <RedisHubLifetimeManager <TestHub> > .Instance; var protocols = GenerateProtocols(ProtocolCount).ToArray(); var options = Options.Create(new RedisOptions() { ConnectionFactory = _ => Task.FromResult <IConnectionMultiplexer>(new TestConnectionMultiplexer(server)) }); var resolver = new DefaultHubProtocolResolver(protocols, NullLogger <DefaultHubProtocolResolver> .Instance); _manager1 = new RedisHubLifetimeManager <TestHub>(logger, options, resolver); _manager2 = new RedisHubLifetimeManager <TestHub>(logger, options, resolver); async Task ConnectClient(TestClient client, IHubProtocol protocol, string userId, string groupName) { await _manager2.OnConnectedAsync(HubConnectionContextUtils.Create(client.Connection, protocol, userId)); await _manager2.AddToGroupAsync(client.Connection.ConnectionId, "Everyone"); await _manager2.AddToGroupAsync(client.Connection.ConnectionId, groupName); } // Connect clients _clients = new TestClient[ClientCount]; var tasks = new Task[ClientCount]; for (var i = 0; i < _clients.Length; i++) { var protocol = protocols[i % ProtocolCount]; _clients[i] = new TestClient(protocol: protocol); string group; string user; if ((i % 2) == 0) { group = "Evens"; user = "******"; _excludedConnectionIds.Add(_clients[i].Connection.ConnectionId); } else { group = "Odds"; user = "******"; _sendIds.Add(_clients[i].Connection.ConnectionId); } tasks[i] = ConnectClient(_clients[i], protocol, user, group); _ = ConsumeAsync(_clients[i]); } Task.WaitAll(tasks); _groups.Add("Evens"); _groups.Add("Odds"); _users.Add("EvenUser"); _users.Add("OddUser"); _args = new object[] { "Foo" }; }