public void TestWriteLock() { var systemClock = new SystemClock(); var site = new Site(1, new SiteList(systemClock), systemClock); var tempVariable = new Variable(1, site, systemClock); var transactionOne = new Transaction("T1", systemClock); var transactionTwo = new Transaction("T2", systemClock); var result = tempVariable.GetWriteLock(transactionOne); Assert.IsTrue(result.Contains(transactionOne)); Assert.IsTrue(tempVariable.WriteLockHolder == transactionOne); var resultTwo = tempVariable.GetReadLock(transactionTwo); Assert.IsFalse(resultTwo.Contains(transactionTwo)); Assert.IsTrue(resultTwo.Contains(transactionOne)); var resultThree = tempVariable.GetWriteLock(transactionTwo); Assert.IsFalse(resultThree.Contains(transactionTwo)); Assert.IsTrue(resultThree.Contains(transactionOne)); tempVariable.RemoveWriteLock(transactionOne); Assert.IsTrue(tempVariable.WriteLockHolder == null); }
public void TestAcquireAndRemoveReadLock() { var systemClock = new SystemClock(); var site = new Site(1, new SiteList(systemClock), systemClock); var tempVariable = new Variable(1, site, systemClock); var transactionOne = new Transaction("T1", systemClock); var transactionTwo = new Transaction("T2", systemClock); var result = tempVariable.GetReadLock(transactionOne); Assert.IsTrue(result.Contains(transactionOne)); var result2 = tempVariable.GetReadLock(transactionTwo); Assert.IsTrue(result.Contains(transactionOne)); Assert.IsTrue(result.Contains(transactionTwo)); tempVariable.RemoveReadLock(transactionOne); Assert.IsFalse(tempVariable.ReadLockHolders.Contains(transactionOne)); tempVariable.RemoveReadLock(transactionTwo); Assert.IsFalse(tempVariable.ReadLockHolders.Contains(transactionTwo)); }
public void TestVariableResetOnFailure() { var systemClock = new SystemClock(); var site = new Site(1, new SiteList(systemClock), systemClock); var variable = new Variable(1, site, systemClock); var transactionOne = new Transaction("T1", systemClock); variable.GetReadLock(transactionOne); variable.GetWriteLock(transactionOne); Assert.IsTrue(variable.IsReadLocked); Assert.IsTrue(variable.IsWriteLocked); Assert.IsTrue(variable.ReadLockHolders.Contains(transactionOne)); Assert.IsTrue(variable.WriteLockHolder == transactionOne); variable.ResetToComitted(); Assert.IsFalse(variable.IsReadLocked); Assert.IsFalse(variable.IsWriteLocked); Assert.IsFalse(variable.ReadLockHolders.Contains(transactionOne)); Assert.IsFalse(variable.WriteLockHolder == transactionOne); }