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)); }
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); }