示例#1
0
 public void DataManagerReadTest()
 {
     DataManager target = new DataManager(2);
     target.Write(1, 30, 1, 1);
     target.Write(2, 20, 1, 1);
     int actual = target.Read(1, 1);
     Assert.AreEqual(30, actual);
     actual = target.Read(1, 2);
     Assert.AreNotEqual(30, actual);
     actual = target.Read(2, 1);
     Assert.AreEqual(20, actual);
     actual = target.Read(-1, 1);
     actual = target.Read(20, 1);
 }
示例#2
0
        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);
        }
示例#3
0
        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]);
        }
示例#4
0
        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);
        }
示例#5
0
 public void DataManagerWriteTest()
 {
     DataManager target = new DataManager(1);
     target.Write(2, 5, 1, 1);
     Assert.AreEqual(5, target.Read(2, 1));
     target.Write(4, 10, 1, 1);
     Assert.AreEqual(10, target.Read(4, 1));
     target.Write(21, 10,1,1);
     target.Write(-1, 10, 1, 1);
 }