Exemplo n.º 1
0
        public void LockTest2()
        {
            var userCount       = 1 * 1000;
            var storageMaxCount = userCount;

            var cache = new TestCacheUserStorage(storageMaxCount);

            cache.BeginUnloadCount = int.MaxValue;
            cache.StopUnloadCount  = int.MaxValue;
            cache.CreateUsers(userCount);
            var users = cache.GetAllUsers();

            var request = new CacheRequest()
            {
                ObjectId = users.First().Id
            };

            CacheLock lockObj = null;
            var       thread1 = new Thread(() =>
            {
                var user1 = cache.Write(request);
                lockObj   = user1.Response.Lock;
                Thread.Sleep(10 * 1000);
            });

            thread1.Start();

            // ждем блокировки
            TestHelper.WaitTrue(
                () => lockObj != null,
                TimeSpan.FromSeconds(2));

            Assert.True(lockObj.IsLocked);

            // убедимся, что заблокировать объект НЕ получится
            Assert.False(lockObj.TryEnter(TimeSpan.FromSeconds(1)));
        }