Пример #1
0
        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);
        }
Пример #2
0
        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));
        }