コード例 #1
0
        public async Task StartReplicationFrom()
        {
            testManager.SetupReplication();
            var replication = await instance.StartReplicationFrom(testManager.Master.Object, testManager.Slave.Object).ConfigureAwait(false);

            var observer = scheduler.CreateObserver <ReplicationProgress>();

            replication.Progress.Subscribe(observer);
            var ticks = TimeSpan.FromSeconds(1).Ticks;

            scheduler.AdvanceBy(ticks);
            observer.Messages.AssertEqual(OnNext <ReplicationProgress>(ticks, progress => !progress.IsActive));
        }
コード例 #2
0
        public async Task VerifyReplicationProcess()
        {
            var replicationInfo = testManager.SetupReplication();
            var arguments       = new List <ReplicationProgress>();

            manager.Progress.Subscribe(
                item =>
            {
                arguments.Add(item);
            });
            await manager.Open().ConfigureAwait(false);

            Assert.AreEqual(0, arguments.Count);
            timer.OnNext(1);

            Assert.IsFalse(arguments[0].IsActive);
            replicationInfo.Setup(item => item.MasterReplOffset).Returns(2000);
            replicationInfo.Setup(item => item.Slaves).Returns(new[] { SlaveInformation.Parse("ip=127.0.0.1,port=6666,state=online,offset=239,lag=0") });

            timer.OnNext(1);
            Assert.AreEqual(2, arguments.Count);
            Assert.IsTrue(arguments[1].IsActive);
            Assert.IsFalse(arguments[1].InSync);

            replicationInfo.Setup(item => item.Slaves).Returns(new[] { SlaveInformation.Parse("ip=127.0.0.1,port=6666,state=online,offset=2000,lag=0") });
            timer.OnNext(1);
            Assert.AreEqual(3, arguments.Count);
            Assert.IsTrue(arguments[2].IsActive);
            Assert.IsTrue(arguments[2].InSync);
        }