Example #1
0
 public void ShouldAquireLockInSingleThreadAccessScenario()
 {
     Assert.DoesNotThrow(() =>
     {
         using (var @lock = new CloudLock("testlock"))
         {
             Assert.True(@lock.HasLock);
         }
     });
 }
Example #2
0
        private async Task IncrementByOneAsync()
        {
            using (var cloudLock = new CloudLock(blob))
            {
                Assert.IsTrue(await cloudLock.AcquireAsync(10, TimeSpan.FromSeconds(1)));
                var text = await blob.DownloadTextAsync(Encoding.Default, AccessCondition.GenerateLeaseCondition(cloudLock.LeaseId), null, null);

                var currentCount = int.Parse(text) + 1;
                await blob.UploadTextAsync(currentCount.ToString(), Encoding.Default, AccessCondition.GenerateLeaseCondition(cloudLock.LeaseId), null, null);

                await cloudLock.ReleaseLeaseAsync();
            }
        }
Example #3
0
        public async Task CloudLock_ShouldRelease_WhenDisposed()
        {
            using (var cloudLock = new CloudLock(blob, CloudLock.MinimumAcquireTimeSpan))
            {
                Assert.IsTrue(await cloudLock.AcquireAsync(5, TimeSpan.FromSeconds(1)));
            }

            //Lock should be acquired
            var acquiredLeaseId = await blob.AcquireLeaseAsync(CloudLock.MinimumAcquireTimeSpan, null);

            Assert.IsNotNull(acquiredLeaseId);
            await blob.ReleaseLeaseAsync(AccessCondition.GenerateLeaseCondition(acquiredLeaseId));
        }
Example #4
0
        public void ShouldExecuteAnActionWithParameterUsingTheSyntax()
        {
            Assert.DoesNotThrow(() =>
            {
                bool flag = false;

                CloudLock.Named("testlock").Execute <bool>((param) =>
                {
                    flag = param;
                }, true);

                Assert.IsTrue(flag);
            });
        }
Example #5
0
        public void ShouldExecuteAnActionUsingTheSyntax()
        {
            Assert.DoesNotThrow(() =>
            {
                bool flag = false;

                CloudLock.Named("testlock").Execute(() =>
                {
                    flag = true;
                });

                Assert.IsTrue(flag);
            });
        }
Example #6
0
        public async Task CloudLock_ShouldRenewLock_WhenPastExpiration()
        {
            var acquireTimeSpan = CloudLock.MinimumAcquireTimeSpan;

            using (var cloudLock = new CloudLock(blob, acquireTimeSpan))
            {
                Assert.IsTrue(await cloudLock.TryAcquireAsync());

                //Wait one second longer than lock
                await Task.Delay(acquireTimeSpan.Add(TimeSpan.FromSeconds(1)));

                try
                {
                    //Expecting 409 error
                    await blob.AcquireLeaseAsync(CloudLock.MinimumAcquireTimeSpan, null);
                }
                catch (StorageException ex)
                {
                    Assert.AreEqual(ex.RequestInformation.HttpStatusCode, (int)HttpStatusCode.Conflict);
                }
            }
        }