Пример #1
0
        public async Task LockReleaseLockTest()
        {
            await _database.DropCollectionAsync(_settings.VersionCollectionName);

            var dbLock1 = new MongoDbLock(_settings, _database);
            var ver1    = await dbLock1.ObtainLock(TimeSpan.FromSeconds(0));

            Assert.IsNotNull(ver1);
            Assert.IsNotNull(ver1.LockerId);
            Assert.IsTrue(ver1.IsLocked);

            var dbLock2        = new MongoDbLock(_settings, _database);
            var secondLockTask = dbLock2.ObtainLock(TimeSpan.FromSeconds(5));
            await dbLock1.ReleaseLock();

            var ver2 = await secondLockTask;

            Assert.IsNotNull(ver2);
            Assert.IsNotNull(ver2.LockerId);
            Assert.AreNotEqual(ver1.LockerId, ver2.LockerId);
            Assert.IsTrue(ver1.IsLocked);
        }
Пример #2
0
        public async Task LockReleaseOnEmptyDbTest()
        {
            await _database.DropCollectionAsync(_settings.VersionCollectionName);

            var verCollection = _database.GetCollection <DbVersion>(_settings.VersionCollectionName);
            var dbLock        = new MongoDbLock(_settings, _database);
            var ver           = await dbLock.ObtainLock(TimeSpan.FromSeconds(5));

            Assert.IsNotNull(ver);
            Assert.IsNotNull(ver.LockerId);
            Assert.IsTrue(ver.IsLocked);

            await dbLock.ReleaseLock();

            var ver2 = (await verCollection.FindAsync(e => e.Id == _settings.VersionDocumentId)).First();

            Assert.IsNotNull(ver2);
            Assert.AreEqual(ver.LockerId, ver2.LockerId);
            Assert.IsFalse(ver2.IsLocked);
            Assert.IsTrue(ver2.AutoUpgradeEnabled);
            Assert.IsNull(ver2.Version);
        }