Ejemplo n.º 1
0
        public void InsertCommitUpdateUpdateUpdateTest()
        {
            var db = new SimpleDatabase_Accessor("2PC4", 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.Prepare(tid);
            db.Commit(tid);

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

            Assert.AreEqual(1, rows.Keys.Count);
            Assert.AreEqual("AAA", rows[key1].DataString);

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

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

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

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

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

            Assert.AreEqual("AAABBBCCCDDD", rows[key1].DataString);
        }
Ejemplo n.º 2
0
        public void ReadShouldReadUncommittedRecordFromSameTransaction()
        {
            var db = new SimpleDatabase_Accessor("2PC1", 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")
            });

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

            Assert.AreEqual(2, rows.Keys.Count);
        }
Ejemplo n.º 3
0
        public void PageAllocationTest()
        {
            var db = new SimpleDatabase_Accessor("MMM", false);

            db.Initialize();
            const int rowSize = 100;

            var tid = new Transaction();

            var encoder = new UTF8Encoding();

            db.CreateTable("Hotel", rowSize);

            var table = db.OpenTable("Hotel");

            var keys   = new string[table.PageTable.RecordIndices.Length];
            var values = new string[table.PageTable.RecordIndices.Length];

            for (int index = 0; index < table.PageTable.RecordIndices.Length; index++)
            {
                keys[index]   = Guid.NewGuid().ToString();
                values[index] = "VVVVVVVVVVVVVVVVVVVVV_" + index;
            }

            for (int index = 0; index < table.PageTable.RecordIndices.Length; index++)
            {
                db.InsertRecord(tid, table.Name, keys[index],
                                new Row(rowSize)
                {
                    Data = encoder.GetBytes(values[index])
                });
            }

            for (int index = 0; index < table.PageTable.RecordIndices.Length; index++)
            {
                var row = db.ReadRecord(tid, table.Name, keys[index]);
                Assert.AreEqual(values[index], row.DataString);
            }

            var rows = db.ReadAllRecords(null, "Hotel");

            Assert.AreEqual(table.PageTable.RecordIndices.Length, rows.Count);
        }
        public void InsertAbortTest()
        {
            var db = new SimpleDatabase_Accessor("2PC7", 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.Prepare(tid);
            db.Abort(tid);

            var rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");
            Assert.AreEqual(0, rows.Keys.Count);
        }
Ejemplo n.º 5
0
        public void InsertAbortTest()
        {
            var db = new SimpleDatabase_Accessor("2PC7", 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.Prepare(tid);
            db.Abort(tid);

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

            Assert.AreEqual(0, rows.Keys.Count);
        }
        public void InsertCommitUpdateUpdateUpdateTest()
        {
            var db = new SimpleDatabase_Accessor("2PC4", 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.Prepare(tid);
            db.Commit(tid);

            var rows = db.ReadAllRecords(new Transaction(), "Inventory.Car");
            Assert.AreEqual(1, rows.Keys.Count);
            Assert.AreEqual("AAA", rows[key1].DataString);

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

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

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

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

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

            Assert.AreEqual("AAABBBCCCDDD", rows[key1].DataString);
        }
        public void ReadShouldReadUncommittedRecordFromSameTransaction()
        {
            var db = new SimpleDatabase_Accessor("2PC1", 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")
                                                            });

            var rows = db.ReadAllRecords(tid, "Inventory.Car");
            Assert.AreEqual(2, rows.Keys.Count);
        }
        public void PageAllocationTest()
        {
            var db = new SimpleDatabase_Accessor("MMM", false);
            db.Initialize();
            const int rowSize = 100;

            var tid = new Transaction();

            var encoder = new UTF8Encoding();
            db.CreateTable("Hotel", rowSize);

            var table = db.OpenTable("Hotel");

            var keys = new string[table.PageTable.RecordIndices.Length];
            var values = new string[table.PageTable.RecordIndices.Length];

            for (int index = 0; index < table.PageTable.RecordIndices.Length; index++)
            {
                keys[index] = Guid.NewGuid().ToString();
                values[index] = "VVVVVVVVVVVVVVVVVVVVV_" + index;
            }

            for (int index = 0; index < table.PageTable.RecordIndices.Length; index++)
            {
                db.InsertRecord(tid, table.Name, keys[index],
                                new Row(rowSize) { Data = encoder.GetBytes(values[index]) });
            }

            for (int index = 0; index < table.PageTable.RecordIndices.Length; index++)
            {
                var row = db.ReadRecord(tid, table.Name, keys[index]);
                Assert.AreEqual(values[index], row.DataString);
            }

            var rows = db.ReadAllRecords(null, "Hotel");
            Assert.AreEqual(table.PageTable.RecordIndices.Length, rows.Count);
        }