public void TryExtend() { var instances = MemInstances(3, (ttl, duration) => ttl); var impl = instances.ToInstances(); Lock("r", "n", instances); var l = new Redlock("r", "n", Ttl, _now.AddDays(10), impl, _log); var actualValidUntil = l.TryExtend(() => _now); Assert.Equal(_now.Add(Ttl), actualValidUntil); Assert.All(instances, i => Assert.True(i.Contains("r", "n"))); }
public void TryExtendWithRepeater_UnableToObtainLock() { var mem = MemInstances(3, (ttl, duration) => ttl); Lock("r", "n2", mem); var repeater = new Mock <IRedlockRepeater>(MockBehavior.Strict); repeater.Setup(x => x.Next()).Returns(false); var l = new Redlock("r", "n", Ttl, _now, mem.ToInstances(), _log); var actualValidUntil = l.TryExtend(repeater.Object, 600); Assert.Null(actualValidUntil); }
public void TryExtend_NoQuorum_Errors() { var err = ErrInstances(3); var l = new Redlock("r", "n", Ttl, _now, err.ToInstances(), _log); var actualValidUntil = l.TryExtend(() => _now); Assert.Null(actualValidUntil); var errorLogs = _log.Logs.Where(x => x.LogLevel == LogLevel.Error).ToArray(); Assert.Equal(3, errorLogs.Length); Assert.Contains(errorLogs, e => e.Exception == err[0].TryExtendException); Assert.Contains(errorLogs, e => e.Exception == err[1].TryExtendException); Assert.Contains(errorLogs, e => e.Exception == err[2].TryExtendException); }
public void TryExtend_Quorum_Errors() { var err = ErrInstances(2, (ttl, duration) => ttl); var mem = MemInstances(3, (ttl, duration) => ttl); Lock("r", "n", mem); var l = new Redlock("r", "n", Ttl, _now, TestRedlock.Instances(mem, err), _log); var actualValidUntil = l.TryExtend(() => _now); Assert.NotNull(actualValidUntil); Assert.Equal(_now.Add(Ttl), actualValidUntil); var errorLogs = _log.Logs.Where(x => x.LogLevel == LogLevel.Error).ToArray(); Assert.Equal(2, errorLogs.Length); Assert.Contains(errorLogs, e => e.Exception == err[0].TryExtendException); Assert.Contains(errorLogs, e => e.Exception == err[1].TryExtendException); }
public void TryExtend_EmptyInstances() { var l = new Redlock("r", "n", Ttl, _now, _emptyInstances, _log); Assert.Null(l.TryExtend()); }