Example #1
0
        public void TestInsertRedis()
        {
            var redis  = new RedLock(ConnectionMultiplexer.Connect("127.0.0.1:6379"));
            var client = redis.redisMasterDictionary["127.0.0.1:6379"];

            var succeeded = client.GetDatabase().StringSet("testkey", "21232", TimeSpan.FromDays(1), When.NotExists);

            Assert.IsTrue(succeeded);
        }
Example #2
0
        public void TestWhenLockedAnotherLockRequestIsRejected()
        {
            var dlm = new RedLock(ConnectionMultiplexer.Connect("127.0.0.1:6379"), ConnectionMultiplexer.Connect("127.0.0.1:6380"), ConnectionMultiplexer.Connect("127.0.0.1:6381"));

            Lock lockObject;
            Lock newLockObject;

            var locked = dlm.Lock(resourceName, new TimeSpan(0, 0, 10), out lockObject);

            Assert.IsTrue(locked, "Unable to get lock");
            locked = dlm.Lock(resourceName, new TimeSpan(0, 0, 10), out newLockObject);
            Assert.IsFalse(locked, "lock taken, it shouldn't be possible");
            dlm.Unlock(lockObject);
        }
Example #3
0
        public void TestThatSequenceLockedUnlockedAndLockedAgainIsSuccessfull()
        {
            var dlm = new RedLock(ConnectionMultiplexer.Connect("127.0.0.1:6379"));

            Lock lockObject;
            Lock newLockObject;
            var  locked = dlm.Lock(resourceName, new TimeSpan(0, 0, 10), out lockObject);

            Assert.IsTrue(locked, "Unable to get lock");
            dlm.Unlock(lockObject);
            locked = dlm.Lock(resourceName, new TimeSpan(0, 0, 10), out newLockObject);
            Assert.IsTrue(locked, "Unable to get lock");
            dlm.Unlock(newLockObject);
        }
Example #4
0
        public async void RestFullServiceRequestForFileDownloadTest()
        {
            RedLock redLock = new RedLock(1);

            List <Task> taskList = new List <Task>();

            for (int i = 0; i < 5; i++)
            {
                taskList.Add(Task.Run(async() =>
                {
                    await redLock.Enter();
                    for (int j = 0; j < 100; j++)
                    {
                        await Task.Delay(1000);
                        Console.WriteLine("count:" + j);
                    }
                    redLock.Release();
                }));
            }
            await Task.WhenAll(taskList);

            Console.WriteLine("ds");
        }