public void ShouldAquireLockInSingleThreadAccessScenario() { Assert.DoesNotThrow(() => { using (var @lock = new CloudLock("testlock")) { Assert.True(@lock.HasLock); } }); }
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(); } }
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)); }
public void ShouldExecuteAnActionWithParameterUsingTheSyntax() { Assert.DoesNotThrow(() => { bool flag = false; CloudLock.Named("testlock").Execute <bool>((param) => { flag = param; }, true); Assert.IsTrue(flag); }); }
public void ShouldExecuteAnActionUsingTheSyntax() { Assert.DoesNotThrow(() => { bool flag = false; CloudLock.Named("testlock").Execute(() => { flag = true; }); Assert.IsTrue(flag); }); }
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); } } }