コード例 #1
0
            public void ShouldRemoveWriterFromCorrectRoutingTable()
            {
                var defaultRoutingTable =
                    new RoutingTable(null, new[] { server01 }, new[] { server02, server05 }, new[] { server03 }, 60);
                var fooRoutingTable =
                    new RoutingTable("foo", new[] { server04, server06 }, new[] { server05 }, new[] { server06, server04 },
                                     80);
                var barRoutingTable =
                    new RoutingTable("bar", new[] { server07 }, new[] { server08 }, new[] { server09, server05 }, 100);

                var manager = new RoutingTableManager(Mock.Of <IInitialServerAddressProvider>(), Mock.Of <IDiscovery>(),
                                                      Mock.Of <IClusterConnectionPoolManager>(), Mock.Of <ILogger>(), TimeSpan.MaxValue,
                                                      defaultRoutingTable, fooRoutingTable, barRoutingTable);

                manager.ForgetWriter(server06, "foo");

                manager.RoutingTableFor("foo").Routers.Should().BeEquivalentTo(server04, server06);
                manager.RoutingTableFor("foo").Readers.Should().BeEquivalentTo(server05);
                manager.RoutingTableFor("foo").Writers.Should().BeEquivalentTo(server04);

                manager.RoutingTableFor("").Routers.Should().BeEquivalentTo(server01);
                manager.RoutingTableFor("").Readers.Should().BeEquivalentTo(server02, server05);
                manager.RoutingTableFor("").Writers.Should().BeEquivalentTo(server03);

                manager.RoutingTableFor("bar").Routers.Should().BeEquivalentTo(server07);
                manager.RoutingTableFor("bar").Readers.Should().BeEquivalentTo(server08);
                manager.RoutingTableFor("bar").Writers.Should().BeEquivalentTo(server09, server05);
            }