public static async Task AsyncLock_AcquireAsync_Once() { using (var l = new AsyncLock()) using (AsyncLockCookie t = await l.AcquireAsync()) { Assert.True(t.IsAcquired); Assert.Equal(t.IsAcquired, t); } }
public static void AsyncLock_Acquire_Once() { using (var l = new AsyncLock()) using (AsyncLockCookie t = l.Acquire()) { Assert.True(t.IsAcquired); Assert.Equal(t.IsAcquired, t); } }
public static void AsyncLock_Acquire_Timeout() { using (var l = new AsyncLock()) { var sw = Stopwatch.StartNew(); using (AsyncLockCookie t1 = l.Acquire()) using (AsyncLockCookie t2 = l.Acquire(100)) { Assert.True(t1.IsAcquired); Assert.False(t2.IsAcquired); Assert.True(sw.Elapsed.TotalMilliseconds >= 80); } } }
public static async Task AsyncLock_AcquireAsync_Timeout_Timespan() { using (var l = new AsyncLock()) { var sw = Stopwatch.StartNew(); using (AsyncLockCookie t1 = await l.AcquireAsync()) using (AsyncLockCookie t2 = await l.AcquireAsync(TimeSpan.FromMilliseconds(100))) { Assert.True(t1.IsAcquired); Assert.False(t2.IsAcquired); Assert.True(sw.Elapsed.TotalMilliseconds >= 80); } } }
public static void AsyncLock_Acquire_Wait() { using (var l = new AsyncLock()) { AsyncLockCookie t1 = l.Acquire(); Assert.True(t1.IsAcquired); var sw = Stopwatch.StartNew(); ThreadPool.QueueUserWorkItem(_ => { Thread.Sleep(500); t1.Dispose(); }); using (AsyncLockCookie t2 = l.Acquire()) { Assert.True(t2); } Assert.True(sw.Elapsed.TotalMilliseconds >= 400); } }
public static void AsyncLock_Acquire_Fail() { using (var l = new AsyncLock()) { using (AsyncLockCookie t1 = l.Acquire()) { Assert.True(t1.IsAcquired); using (AsyncLockCookie t2 = l.Acquire(0)) { Assert.False(t2.IsAcquired); Assert.Equal(t2.IsAcquired, t2); } using (AsyncLockCookie t2 = l.Acquire(TimeSpan.Zero)) { Assert.False(t2.IsAcquired); Assert.Equal(t2.IsAcquired, t2); } } } }
public static async Task AsyncLock_AcquireAsync_Fail() { using (var l = new AsyncLock()) { using (AsyncLockCookie t1 = await l.AcquireAsync()) { Assert.True(t1.IsAcquired); using (AsyncLockCookie t2 = await l.AcquireAsync(0)) { Assert.False(t2.IsAcquired); Assert.Equal(t2.IsAcquired, t2); } using (AsyncLockCookie t2 = await l.AcquireAsync(TimeSpan.Zero)) { Assert.False(t2.IsAcquired); Assert.Equal(t2.IsAcquired, t2); } } } }