public void ReadTest() { int siteNumber = 0; DataManager target = new DataManager(siteNumber); int dataItem = 2; int transactionId = 0; int timeStamp = 0; int expected = 20; int actual; actual = target.Read(dataItem, transactionId, timeStamp); Assert.AreEqual(expected, actual); target.Write(2, 30, 2, 2); target.CommitAllWrites(new Operation(Enumerations.OperationMode.Commit, 2, ts: 1)); actual = target.Read(dataItem, transactionId, timeStamp); Assert.AreEqual(expected, actual); timeStamp = 3; expected = 30; actual = target.Read(dataItem, transactionId, timeStamp); Assert.AreEqual(expected, actual); }
public void RecoverTest() { int siteNumber = 2; DataManager target = new DataManager(siteNumber); target.Write(2, 5, 1, 1); // a different trasnaction reads the original data item int actual = target.Read(2, 2); Assert.AreEqual(20, actual); // the same transaction will read the value it has written actual = target.Read(2, 1); Assert.AreEqual(5, actual); // recover target.Recover(); // same transaction can no longer see the value it ahs written (uncomitted value was lost) actual = target.Read(2, 1); Assert.AreEqual(20, actual); // now write and commit, then recover target.Write(2, 5, 1, 1); target.CommitAllWrites(new Operation(Enumerations.OperationMode.Commit, 1, ts: 0)); target.Recover(); actual = target.Read(2, 1); Assert.AreEqual(5, actual); }
public void DeleteOldValuesTest() { int siteNumber = 0; DataManager target = new DataManager(siteNumber); int dataItem = 0; int timeStamp = 2; target.Write(2, 5, 1, timeStamp); target.Write(4, 10, 1, timeStamp); target.CommitAllWrites(new Operation(Enumerations.OperationMode.Commit, 1, ts: timeStamp)); timeStamp = 4; target.Write(2, 10, 1, timeStamp); target.Write(4, 10, 1, timeStamp); target.CommitAllWrites(new Operation(Enumerations.OperationMode.Commit, 1, ts: timeStamp)); //Assert.AreEqual(3, target.DataItems[2].OldValues.Count); //Assert.AreEqual(3, target.DataItems[4].OldValues.Count); //target.DeleteOldValues(2, 3); //Assert.AreEqual(1, target.DataItems[2].OldValues.Count); //Assert.AreEqual(10, target.DataItems[2].OldValues[4]); //target.DeleteOldValues(4, 1); //Assert.AreEqual(2, target.DataItems[4].OldValues.Count); //target.DeleteOldValues(4, 4); //Assert.AreEqual(1, target.DataItems[4].OldValues.Count); //Assert.AreEqual(10, target.DataItems[4].OldValues[4]); }