コード例 #1
0
        public async Task SeamphoreCanTimeout()
        {
            semaphore = new RemoteSemaphore(db, 1, TimeSpan.FromSeconds(1));

            var s1 = await semaphore.TryGetAsync();

            await Task.Delay(1500);

            var s2 = await semaphore.TryGetAsync();

            var len = await db.SortedSetLengthAsync(semaphore.TimeoutKey);

            Assert.True(s1.IsSuccess);
            Assert.True(s2.IsSuccess);
            Assert.Equal(1, len);
        }
コード例 #2
0
        public async Task CanRefreshWhenNotTimeout()
        {
            semaphore = new RemoteSemaphore(db, 2, TimeSpan.FromSeconds(2));
            var r1 = await semaphore.TryGetAsync();

            await Task.Delay(500);

            var isRefresh = await semaphore.RefreshAsync(r1.SemaphoreId);

            await Task.Delay(2200);

            var isRefresh2 = await semaphore.RefreshAsync(r1.SemaphoreId);

            Assert.True(isRefresh);
            Assert.True(isRefresh2);
        }
コード例 #3
0
 public RedisUntilsTests()
 {
     db        = multiplexer.GetDatabase();
     semaphore = new RemoteSemaphore(db, 2, TimeSpan.FromSeconds(30));
 }