public void SelectServerAsync_should_keep_trying_to_match_by_waiting_on_cluster_description_changes() { var subject = CreateSubject(); subject.Initialize(); var connecting = ServerDescriptionHelper.Disconnected(subject.Description.ClusterId); var connected = ServerDescriptionHelper.Connected(subject.Description.ClusterId); subject.SetServerDescriptions(connecting); Task.Run(() => { var descriptions = new Queue <ServerDescription>(new[] { connecting, connecting, connecting, connected }); while (descriptions.Count > 0) { Thread.Sleep(TimeSpan.FromMilliseconds(20)); var next = descriptions.Dequeue(); subject.SetServerDescriptions(next); } }); var selector = new DelegateServerSelector((c, s) => s); var result = subject.SelectServerAsync(selector, Timeout.InfiniteTimeSpan, CancellationToken.None).Result; result.Should().NotBeNull(); }
public void ServerDescription_should_return_description_of_server() { var subject = new ServerConnectionSource(_server); var desc = ServerDescriptionHelper.Disconnected(new ClusterId()); _server.Description.Returns(desc); var result = subject.ServerDescription; result.Should().BeSameAs(desc); }
public void ServerDescription_should_return_description_of_server() { var subject = new ServerChannelSource(_mockServer.Object); var desc = ServerDescriptionHelper.Disconnected(new ClusterId()); _mockServer.SetupGet(s => s.Description).Returns(desc); var result = subject.ServerDescription; result.Should().BeSameAs(desc); }
public void SelectServer_should_keep_trying_to_match_by_waiting_on_cluster_description_changes( [Values(false, true)] bool async) { var subject = CreateSubject(); subject.Initialize(); var connecting = ServerDescriptionHelper.Disconnected(subject.Description.ClusterId); var connected = ServerDescriptionHelper.Connected(subject.Description.ClusterId); subject.SetServerDescriptions(connecting); _capturedEvents.Clear(); Task.Run(() => { var descriptions = new Queue <ServerDescription>(new[] { connecting, connecting, connecting, connected }); while (descriptions.Count > 0) { Thread.Sleep(TimeSpan.FromMilliseconds(20)); var next = descriptions.Dequeue(); subject.SetServerDescriptions(next); } }); var selector = new DelegateServerSelector((c, s) => s); IServer result; if (async) { result = subject.SelectServerAsync(selector, CancellationToken.None).GetAwaiter().GetResult(); } else { result = subject.SelectServer(selector, CancellationToken.None); } result.Should().NotBeNull(); _capturedEvents.Next().Should().BeOfType <ClusterSelectingServerEvent>(); _capturedEvents.Next().Should().BeOfType <ClusterDescriptionChangedEvent>(); _capturedEvents.Next().Should().BeOfType <ClusterDescriptionChangedEvent>(); _capturedEvents.Next().Should().BeOfType <ClusterDescriptionChangedEvent>(); _capturedEvents.Next().Should().BeOfType <ClusterDescriptionChangedEvent>(); _capturedEvents.Next().Should().BeOfType <ClusterSelectedServerEvent>(); _capturedEvents.Any().Should().BeFalse(); }