コード例 #1
0
            public void ShouldThrowOnFatalDiscovery()
            {
                var error = new FatalDiscoveryException("message");

                var discovery = new Mock <IDiscovery>();

                discovery.Setup(x => x.DiscoverAsync(It.IsAny <IConnection>(), "bar", null, Bookmark.Empty))
                .ThrowsAsync(error);

                var poolManager = new Mock <IClusterConnectionPoolManager>();

                poolManager.Setup(x => x.CreateClusterConnectionAsync(It.IsAny <Uri>()))
                .ReturnsAsync(Mock.Of <IConnection>());

                var initialAddressProvider = new Mock <IInitialServerAddressProvider>();

                initialAddressProvider.Setup(x => x.Get()).Returns(new HashSet <Uri> {
                    server01, server04, server07
                });

                var manager = new RoutingTableManager(initialAddressProvider.Object, discovery.Object,
                                                      poolManager.Object, Mock.Of <ILogger>(), TimeSpan.MaxValue);

                manager.Awaiting(m => m.EnsureRoutingTableForModeAsync(AccessMode.Write, "bar", null, Bookmark.Empty))
                .Should().Throw <FatalDiscoveryException>().Which.Should().Be(error);
            }
コード例 #2
0
            public async Task ShouldIsolateEntriesFromFailures()
            {
                var defaultRoutingTable =
                    new RoutingTable(null, new[] { server01 }, new[] { server02 }, new[] { server03 }, 60);
                var fooRoutingTable =
                    new RoutingTable("foo", new[] { server04 }, new[] { server05 }, new[] { server06 }, 80);

                var discovery = new Mock <IDiscovery>();

                discovery.Setup(x => x.DiscoverAsync(It.IsAny <IConnection>(), "", null, Bookmark.Empty))
                .ReturnsAsync(defaultRoutingTable);
                discovery.Setup(x => x.DiscoverAsync(It.IsAny <IConnection>(), "foo", null, Bookmark.Empty))
                .ReturnsAsync(fooRoutingTable);
                discovery.Setup(x => x.DiscoverAsync(It.IsAny <IConnection>(), "bar", null, Bookmark.Empty))
                .ThrowsAsync(new FatalDiscoveryException("message"));

                var poolManager = new Mock <IClusterConnectionPoolManager>();

                poolManager.Setup(x => x.CreateClusterConnectionAsync(It.IsAny <Uri>()))
                .ReturnsAsync(Mock.Of <IConnection>());

                var initialAddressProvider = new Mock <IInitialServerAddressProvider>();

                initialAddressProvider.Setup(x => x.Get()).Returns(new HashSet <Uri> {
                    server01, server04, server07
                });

                var manager = new RoutingTableManager(initialAddressProvider.Object, discovery.Object,
                                                      poolManager.Object, Mock.Of <ILogger>(), TimeSpan.MaxValue);

                // When
                var routingTable1 =
                    await manager.EnsureRoutingTableForModeAsync(AccessMode.Write, null, null, Bookmark.Empty);

                var routingTable2 =
                    await manager.EnsureRoutingTableForModeAsync(AccessMode.Write, "foo", null, Bookmark.Empty);

                routingTable1.Should().Be(defaultRoutingTable);
                routingTable2.Should().Be(fooRoutingTable);

                manager.Awaiting(m => m.EnsureRoutingTableForModeAsync(AccessMode.Write, "bar", null, Bookmark.Empty))
                .Should().Throw <FatalDiscoveryException>();
                manager.RoutingTableFor("").Should().Be(defaultRoutingTable);
                manager.RoutingTableFor("foo").Should().Be(fooRoutingTable);
            }