Esempio n. 1
0
        public async Task Should_not_get_lease_when_already_locked()
        {
            //arrange
            var lockManager = new BlobLockManager(_connection, new DefaultBlobLockScheme());
            await lockManager.InitializeAsync();

            var lockId = Guid.NewGuid().ToString();
            await lockManager.TryLockAsync(lockId, TimeSpan.FromMinutes(1), CancellationToken.None);

            //act
            var secondHandle = await lockManager.TryLockAsync(lockId, TimeSpan.FromMinutes(1), CancellationToken.None);

            //assert
            secondHandle.Should().BeNull("Already locked");
        }
Esempio n. 2
0
        public async Task Should_create_new_lock()
        {
            //arrange
            var lockManager = new BlobLockManager(_connection, new DefaultBlobLockScheme());
            await lockManager.InitializeAsync();

            var lockId = Guid.NewGuid().ToString();
            //act
            var handle = await lockManager.TryLockAsync(lockId, TimeSpan.FromMinutes(1), CancellationToken.None);

            //assert
            handle.Should().NotBeNull("Lock should be acquired");
            handle.LeaseId.Should().NotBeNullOrWhiteSpace();
            handle.LockId.Should().NotBeNullOrWhiteSpace();
        }
Esempio n. 3
0
        public async Task Should_not_renew_expired_lease()
        {
            //arrange
            var lockManager = new BlobLockManager(_connection, new DefaultBlobLockScheme());
            await lockManager.InitializeAsync();

            var lockId = Guid.NewGuid().ToString();
            var handle = await lockManager.TryLockAsync(lockId, TimeSpan.FromSeconds(15), CancellationToken.None);

            //act
            await Task.Delay(TimeSpan.FromSeconds(16));

            //steal lock
            await lockManager.TryLockAsync(lockId, TimeSpan.FromSeconds(15), CancellationToken.None);

            handle.Awaiting(x => x.RenewAsync(Mock.Of <ILog>(), CancellationToken.None)).Should().Throw <RequestFailedException>();
        }
Esempio n. 4
0
        public async Task Should_renew_lease()
        {
            //arrange
            var lockManager = new BlobLockManager(_connection, new DefaultBlobLockScheme());
            await lockManager.InitializeAsync();

            var lockId = Guid.NewGuid().ToString();
            var handle = await lockManager.TryLockAsync(lockId, TimeSpan.FromSeconds(15), CancellationToken.None);

            //act
            await Task.Delay(TimeSpan.FromSeconds(10));

            var renewed = await handle.RenewAsync(Mock.Of <ILog>(), CancellationToken.None);

            //assert
            renewed.Should().BeTrue();
        }
Esempio n. 5
0
        public async Task Should_release_lease()
        {
            //arrange
            var lockManager = new BlobLockManager(_connection, new DefaultBlobLockScheme());
            await lockManager.InitializeAsync();

            var lockId = Guid.NewGuid().ToString();
            var handle = await lockManager.TryLockAsync(lockId, TimeSpan.FromMinutes(1), CancellationToken.None);

            //act
            await handle.ReleaseAsync(CancellationToken.None);

            var secondHandle = await lockManager.TryLockAsync(lockId, TimeSpan.FromMinutes(1), CancellationToken.None);

            //assert
            secondHandle.Should().NotBeNull();
        }