public void Release_OneWaiter_GetsAccess() { // ARRANGE var resource = nameof(Release_OneWaiter_GetsAccess); var mutex = new DistributedLockMutex(); var waitTask = CreateWaitTasks(resource, 1, mutex).First(); // ACT mutex.Release(resource); var result = waitTask.Wait(_timeout); // ASSERT Assert.True(result); }
public void Release_MultipleWaiters_OneGetsAccess() { // ARRANGE var resource = nameof(Release_MultipleWaiters_OneGetsAccess); var mutex = new DistributedLockMutex(); var tasks = CreateWaitTasks(resource, 10, mutex); // ACT mutex.Release(resource); var result = Task.WhenAny(tasks).Unwrap().Wait(_timeout); // ASSERT Assert.True(result); Assert.Equal(1, tasks.Count(t => t.IsCompleted)); Assert.Equal(9, tasks.Count(t => !t.IsCompleted)); }