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); }
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); }