public void TestGetRoutedEndpointsReturnDistinctResultForMultiMessages() { var endpoints = new[] { new ServiceEndpoint(ConnectionString1, EndpointType.Primary, "1"), new ServiceEndpoint(ConnectionString1, EndpointType.Primary, "2"), new ServiceEndpoint(ConnectionString2, EndpointType.Secondary, "11"), new ServiceEndpoint(ConnectionString2, EndpointType.Secondary, "12") }; var sem = new TestServiceEndpointManager(endpoints); var router = new TestEndpointRouter(); var container = new MultiEndpointServiceConnectionContainer("hub", e => new TestBaseServiceConnectionContainer(new List <IServiceConnection> { new TestSimpleServiceConnection(), new TestSimpleServiceConnection(), }, e), sem, router, null); var result = container.GetRoutedEndpoints(new MultiGroupBroadcastDataMessage(new[] { "group1", "group2" }, null)).ToList(); Assert.Equal(2, result.Count); result = container.GetRoutedEndpoints(new MultiUserDataMessage(new[] { "user1", "user2" }, null)).ToList(); Assert.Equal(2, result.Count); }
public async Task TestGetRoutedEndpointsReturnDistinctResultForMultiMessages() { var endpoints = new[] { new ServiceEndpoint(ConnectionString1, EndpointType.Primary, "1"), new ServiceEndpoint(ConnectionString1, EndpointType.Primary, "2"), new ServiceEndpoint(ConnectionString2, EndpointType.Secondary, "11"), new ServiceEndpoint(ConnectionString2, EndpointType.Secondary, "12") }; var sem = new TestServiceEndpointManager(endpoints); var router = new TestEndpointRouter(false); var container = new MultiEndpointServiceConnectionContainer("hub", e => new TestBaseServiceConnectionContainer(new List <IServiceConnection> { new TestServiceConnection(), new TestServiceConnection(), }, e), sem, router, null); // Start the container for it to disconnect _ = container.StartAsync(); await container.ConnectionInitializedTask.OrTimeout(); var result = container.GetRoutedEndpoints(new MultiGroupBroadcastDataMessage(new[] { "group1", "group2" }, null)).ToList(); Assert.Equal(2, result.Count); result = container.GetRoutedEndpoints(new MultiUserDataMessage(new[] { "user1", "user2" }, null)).ToList(); Assert.Equal(2, result.Count); }
public async Task TestEndpointsForDifferentContainersHaveDifferentStatus() { var endpoints = new[] { new ServiceEndpoint(ConnectionString1, EndpointType.Primary, "1"), new ServiceEndpoint(ConnectionString1, EndpointType.Primary, "2"), new ServiceEndpoint(ConnectionString2, EndpointType.Secondary, "11"), new ServiceEndpoint(ConnectionString2, EndpointType.Secondary, "12") }; var sem = new TestServiceEndpointManager(endpoints); var router = new TestEndpointRouter(false); var container1 = new MultiEndpointServiceConnectionContainer( e => new TestBaseServiceConnectionContainer(new List <IServiceConnection> { new TestServiceConnection(ServiceConnectionStatus.Disconnected), new TestServiceConnection(ServiceConnectionStatus.Disconnected), }, e), sem, router, null); var container2 = new MultiEndpointServiceConnectionContainer( e => new TestBaseServiceConnectionContainer(new List <IServiceConnection> { new TestServiceConnection(), new TestServiceConnection(), }, e), sem, router, null); // Start the container for it to disconnect await container1.StartAsync(); var result = container1.GetRoutedEndpoints(new MultiGroupBroadcastDataMessage(new[] { "group1", "group2" }, null)).ToList(); Assert.Empty(result); result = container1.GetRoutedEndpoints(new MultiUserDataMessage(new[] { "user1", "user2" }, null)).ToList(); Assert.Empty(result); result = container2.GetRoutedEndpoints(new MultiGroupBroadcastDataMessage(new[] { "group1", "group2" }, null)).ToList(); Assert.Equal(2, result.Count); result = container2.GetRoutedEndpoints(new MultiUserDataMessage(new[] { "user1", "user2" }, null)).ToList(); Assert.Equal(2, result.Count); }
public async Task TestEndpointsForDifferentContainersHaveDifferentStatus() { var endpoints = new[] { new ServiceEndpoint(ConnectionString1, EndpointType.Primary, "1"), new ServiceEndpoint(ConnectionString1, EndpointType.Primary, "2"), new ServiceEndpoint(ConnectionString2, EndpointType.Secondary, "11"), new ServiceEndpoint(ConnectionString2, EndpointType.Secondary, "12") }; var sem = new TestServiceEndpointManager(endpoints); var router = new TestEndpointRouter(false); var container1 = new MultiEndpointServiceConnectionContainer("hub", e => new TestBaseServiceConnectionContainer(new List <IServiceConnection> { new TestServiceConnection(ServiceConnectionStatus.Disconnected), new TestServiceConnection(ServiceConnectionStatus.Disconnected), }, e), sem, router, NullLoggerFactory.Instance); var container2 = new MultiEndpointServiceConnectionContainer("hub", e => new TestBaseServiceConnectionContainer(new List <IServiceConnection> { new TestServiceConnection(), new TestServiceConnection(), }, e), sem, router, NullLoggerFactory.Instance); var container3 = new MultiEndpointServiceConnectionContainer("hub-another", e => new TestBaseServiceConnectionContainer(new List <IServiceConnection> { new TestServiceConnection(), new TestServiceConnection(), }, e), sem, router, NullLoggerFactory.Instance); // Start the container for it to disconnect _ = container1.StartAsync(); await container1.ConnectionInitializedTask.OrTimeout(); // Start the container for it to disconnect _ = container2.StartAsync(); await container2.ConnectionInitializedTask.OrTimeout(); // Start the container for it to disconnect _ = container3.StartAsync(); await container3.ConnectionInitializedTask.OrTimeout(); var result = container1.GetRoutedEndpoints(new MultiGroupBroadcastDataMessage(new[] { "group1", "group2" }, null)).ToList(); Assert.Equal(2, result.Count); result = container1.GetRoutedEndpoints(new MultiUserDataMessage(new[] { "user1", "user2" }, null)).ToList(); Assert.Equal(2, result.Count); // The same hub shares the same endpoints result = container2.GetRoutedEndpoints(new MultiGroupBroadcastDataMessage(new[] { "group1", "group2" }, null)).ToList(); Assert.Equal(2, result.Count); result = container2.GetRoutedEndpoints(new MultiUserDataMessage(new[] { "user1", "user2" }, null)).ToList(); Assert.Equal(2, result.Count); // different hubs have different endpoint status result = container3.GetRoutedEndpoints(new MultiGroupBroadcastDataMessage(new[] { "group1", "group2" }, null)).ToList(); Assert.Equal(2, result.Count); result = container3.GetRoutedEndpoints(new MultiUserDataMessage(new[] { "user1", "user2" }, null)).ToList(); Assert.Equal(2, result.Count); }