Beispiel #1
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);
        }
Beispiel #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);
        }
Beispiel #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]);
        }