public void AcquireWait()
        {
            var lockName = "AcquireWait" + DateTime.Now.Ticks;

            var collection = GetCollection();

            collection.Should().NotBeNull();

            var locker = new DistributedLock(collection);

            locker.Should().NotBeNull();

            var result = locker.Acquire(lockName, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));

            result.Should().BeTrue();

            var status = locker.Status(lockName);

            status.Should().NotBeNull();
            status.IsLocked.Should().BeTrue();

            var waited = locker.Acquire(lockName, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));

            waited.Should().BeTrue();
        }
        public void AcquireExpire()
        {
            var lockName = "AcquireExpire" + DateTime.Now.Ticks;

            var collection = GetCollection();

            collection.Should().NotBeNull();

            var locker = new DistributedLock(collection);

            locker.Should().NotBeNull();

            var result = locker.Acquire(lockName, TimeSpan.FromMilliseconds(5));

            result.Should().BeTrue();

            var status = locker.Status(lockName);

            status.Should().NotBeNull();
            status.IsLocked.Should().BeTrue();

            // wait for expire
            Thread.Sleep(5);

            var blocked = locker.Acquire(lockName, TimeSpan.FromMilliseconds(5));

            blocked.Should().BeTrue();
        }
        public void AcquireBlock()
        {
            var lockName = "AcquireBlock" + DateTime.Now.Ticks;

            var collection = GetCollection();

            collection.Should().NotBeNull();

            var locker = new DistributedLock(collection, TimeSpan.FromMinutes(5));

            locker.Should().NotBeNull();

            var result = locker.Acquire(lockName);

            result.Should().BeTrue();

            var status = locker.Status(lockName);

            status.Should().NotBeNull();
            status.IsLocked.Should().BeTrue();

            var blocked = locker.Acquire(lockName);

            blocked.Should().BeFalse();
        }