Ejemplo n.º 1
0
        public void InsertDeleteCommitTest()
        {
            var db = new SimpleDatabase_Accessor("2PC8", true);

            db.Initialize();
            const int rowSize = 100;
            var       key1    = new string('1', 36);

            var encoder = new UTF8Encoding();
            var tid     = new Transaction();

            db.CreateTable("Inventory.Car", rowSize);
            db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize)
            {
                Data = encoder.GetBytes("AAA")
            });
            db.DeleteRecord(tid, "Inventory.Car", key1);

            db.Prepare(tid);
            db.Commit(tid);

            var rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");

            Assert.AreEqual(0, rows.Keys.Count);
        }
Ejemplo n.º 2
0
        public void ReadShouldReadUncommittedDeleteFromOtherTransaction()
        {
            var db = new SimpleDatabase_Accessor("2PC2", true);

            db.Initialize();
            const int rowSize = 100;
            var       key1    = new string('1', 36);
            var       key2    = new string('2', 36);

            var encoder = new UTF8Encoding();
            var tid     = new Transaction();

            db.CreateTable("Inventory.Car", rowSize);
            db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize)
            {
                Data = encoder.GetBytes("Seattle, 123")
            });

            db.InsertRecord(tid, "Inventory.Car", key2, new Row(rowSize)
            {
                Data = encoder.GetBytes("New York, 456")
            });

            db.Prepare(tid);
            db.Commit(tid);

            var rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");

            Assert.AreEqual(2, rows.Keys.Count);

            var tid2 = new Transaction();

            db.DeleteRecord(tid2, "Inventory.Car", key1);
            rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");
            Assert.AreEqual(2, rows.Keys.Count);

            rows = db.ReadAllRecords(tid2, "Inventory.Car");
            Assert.AreEqual(1, rows.Keys.Count);

            db.Prepare(tid2);
            db.Commit(tid2);

            rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");
            Assert.AreEqual(1, rows.Keys.Count);
        }
Ejemplo n.º 3
0
        public void InsertUpdateRecord()
        {
            var db = new SimpleDatabase_Accessor("EEE", false);

            db.Initialize();
            const int rowSize = 100;
            var       key1    = new string('1', 36);
            var       key2    = new string('2', 36);
            var       key3    = new string('3', 36);
            var       key4    = new string('4', 36);

            var encoder = new UTF8Encoding();

            var tid = new Transaction();

            db.CreateTable("Inventory.Car", rowSize);
            db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize)
            {
                Data = encoder.GetBytes("Seattle, 123")
            });

            var row = db.ReadRecord(tid, "Inventory.Car", key1);

            Assert.AreEqual("Seattle, 123", row.DataString);

            db.InsertRecord(tid, "Inventory.Car", key2, new Row(rowSize)
            {
                Data = encoder.GetBytes("New York, 456")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, 123", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, 456", row.DataString);

            db.InsertRecord(tid, "Inventory.Car", key3, new Row(rowSize)
            {
                Data = encoder.GetBytes("London, 789")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, 123", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, 456", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, 789", row.DataString);

            db.InsertRecord(tid, "Inventory.Car", key4, new Row(rowSize)
            {
                Data = encoder.GetBytes("Phoenix, 012")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, 123", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, 456", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, 789", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key4);
            Assert.AreEqual("Phoenix, 012", row.DataString);

            // Update
            db.UpdateRecord(tid, "Inventory.Car", key1, new Row(rowSize)
            {
                Data = encoder.GetBytes("Seattle, key1")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, key1", row.DataString);

            db.UpdateRecord(tid, "Inventory.Car", key2, new Row(rowSize)
            {
                Data = encoder.GetBytes("New York, key2")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, key2", row.DataString);

            db.UpdateRecord(tid, "Inventory.Car", key3, new Row(rowSize)
            {
                Data = encoder.GetBytes("London, key3")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, key3", row.DataString);

            db.UpdateRecord(tid, "Inventory.Car", key4, new Row(rowSize)
            {
                Data = encoder.GetBytes("Phoenix, key4")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key4);
            Assert.AreEqual("Phoenix, key4", row.DataString);

            db.DeleteRecord(tid, "Inventory.Car", key4);

            RecordNotFoundException exception = null;

            try
            {
                row = db.ReadRecord(tid, "Inventory.Car", key4);
                Assert.Fail();
            }
            catch (RecordNotFoundException e)
            {
                exception = e;
            }
            Assert.IsNotNull(exception);

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, key1", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, key2", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, key3", row.DataString);

            db.InsertRecord(tid, "Inventory.Car", key4, new Row(rowSize)
            {
                Data = encoder.GetBytes("Oregon, 345")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, key1", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, key2", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, key3", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key4);
            Assert.AreEqual("Oregon, 345", row.DataString);
        }
        public void ReadShouldReadUncommittedDeleteFromOtherTransaction()
        {
            var db = new SimpleDatabase_Accessor("2PC2", true);
            db.Initialize();
            const int rowSize = 100;
            var key1 = new string('1', 36);
            var key2 = new string('2', 36);

            var encoder = new UTF8Encoding();
            var tid = new Transaction();

            db.CreateTable("Inventory.Car", rowSize);
            db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize)
                                                            {
                                                                Data = encoder.GetBytes("Seattle, 123")
                                                            });

            db.InsertRecord(tid, "Inventory.Car", key2, new Row(rowSize)
                                                            {
                                                                Data = encoder.GetBytes("New York, 456")
                                                            });

            db.Prepare(tid);
            db.Commit(tid);

            var rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");
            Assert.AreEqual(2, rows.Keys.Count);

            var tid2 = new Transaction();
            db.DeleteRecord(tid2, "Inventory.Car", key1);
            rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");
            Assert.AreEqual(2, rows.Keys.Count);

            rows = db.ReadAllRecords(tid2, "Inventory.Car");
            Assert.AreEqual(1, rows.Keys.Count);

            db.Prepare(tid2);
            db.Commit(tid2);

            rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");
            Assert.AreEqual(1, rows.Keys.Count);
        }
        public void InsertUpdateRecord()
        {
            var db = new SimpleDatabase_Accessor("EEE", false);
            db.Initialize();
            const int rowSize = 100;
            var key1 = new string('1', 36);
            var key2 = new string('2', 36);
            var key3 = new string('3', 36);
            var key4 = new string('4', 36);

            var encoder = new UTF8Encoding();

            var tid = new Transaction();

            db.CreateTable("Inventory.Car", rowSize);
            db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize)
            {
                Data = encoder.GetBytes("Seattle, 123")
            });

            var row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, 123", row.DataString);

            db.InsertRecord(tid, "Inventory.Car", key2, new Row(rowSize)
            {
                Data = encoder.GetBytes("New York, 456")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, 123", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, 456", row.DataString);

            db.InsertRecord(tid, "Inventory.Car", key3, new Row(rowSize)
            {
                Data = encoder.GetBytes("London, 789")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, 123", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, 456", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, 789", row.DataString);

            db.InsertRecord(tid, "Inventory.Car", key4, new Row(rowSize)
            {
                Data = encoder.GetBytes("Phoenix, 012")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, 123", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, 456", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, 789", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key4);
            Assert.AreEqual("Phoenix, 012", row.DataString);

            // Update
            db.UpdateRecord(tid, "Inventory.Car", key1, new Row(rowSize)
            {
                Data = encoder.GetBytes("Seattle, key1")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, key1", row.DataString);

            db.UpdateRecord(tid, "Inventory.Car", key2, new Row(rowSize)
            {
                Data = encoder.GetBytes("New York, key2")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, key2", row.DataString);

            db.UpdateRecord(tid, "Inventory.Car", key3, new Row(rowSize)
            {
                Data = encoder.GetBytes("London, key3")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, key3", row.DataString);

            db.UpdateRecord(tid, "Inventory.Car", key4, new Row(rowSize)
            {
                Data = encoder.GetBytes("Phoenix, key4")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key4);
            Assert.AreEqual("Phoenix, key4", row.DataString);

            db.DeleteRecord(tid, "Inventory.Car", key4);

            RecordNotFoundException exception = null;
            try
            {
                row = db.ReadRecord(tid, "Inventory.Car", key4);
                Assert.Fail();
            }
            catch (RecordNotFoundException e)
            {
                exception = e;
            }
            Assert.IsNotNull(exception);

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, key1", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, key2", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, key3", row.DataString);

            db.InsertRecord(tid, "Inventory.Car", key4, new Row(rowSize)
            {
                Data = encoder.GetBytes("Oregon, 345")
            });

            row = db.ReadRecord(tid, "Inventory.Car", key1);
            Assert.AreEqual("Seattle, key1", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key2);
            Assert.AreEqual("New York, key2", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key3);
            Assert.AreEqual("London, key3", row.DataString);

            row = db.ReadRecord(tid, "Inventory.Car", key4);
            Assert.AreEqual("Oregon, 345", row.DataString);
        }
        public void InsertDeleteCommitTest()
        {
            var db = new SimpleDatabase_Accessor("2PC8", true);
            db.Initialize();
            const int rowSize = 100;
            var key1 = new string('1', 36);

            var encoder = new UTF8Encoding();
            var tid = new Transaction();

            db.CreateTable("Inventory.Car", rowSize);
            db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize)
            {
                Data = encoder.GetBytes("AAA")
            });
            db.DeleteRecord(tid, "Inventory.Car", key1);

            db.Prepare(tid);
            db.Commit(tid);

            var rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");
            Assert.AreEqual(0, rows.Keys.Count);
        }