Esempio n. 1
0
        public void TestDeleteMultiple()
        {
            testName = "TestDeleteMultiple";
            SetUpTest(true);

            QueueDatabaseConfig dbConfig = new QueueDatabaseConfig();

            dbConfig.Creation   = CreatePolicy.IF_NEEDED;
            dbConfig.ExtentSize = 1024;
            dbConfig.Length     = 270;
            QueueDatabase db = QueueDatabase.Open(testHome + "/" +
                                                  testName + ".db", dbConfig);

            List <uint>          rList = new List <uint>();
            List <DatabaseEntry> kList = new List <DatabaseEntry>();
            List <DatabaseEntry> vList = new List <DatabaseEntry>();
            DatabaseEntry        key, data;

            for (uint i = 1; i <= 100; i++)
            {
                key  = new DatabaseEntry(BitConverter.GetBytes(i));
                data = new DatabaseEntry(
                    ASCIIEncoding.ASCII.GetBytes(
                        "data" + i.ToString() +
                        Configuration.RandomString(256)));
                rList.Add(i);
                kList.Add(key);
                vList.Add(data);
                db.Put(key, data);
            }

            // Bulk delete all records with recno in rList.
            db.Delete(new MultipleDatabaseEntry(rList));
            Cursor cursor = db.Cursor();

            Assert.IsFalse(cursor.MoveFirst());

            /*
             * Bulk insert records whose key bulk buffer is
             * constructed by recno lists, then delete all.
             */
            db.Put(new MultipleDatabaseEntry(rList),
                   new MultipleDatabaseEntry(vList, false));
            Assert.IsTrue(cursor.MoveFirst());
            db.Delete(new MultipleDatabaseEntry(kList, true));
            Assert.IsFalse(cursor.MoveFirst());

            /*
             * Bulk insert records whose key bulk buffer is
             * constructed by DatabaseEntry lists, then delete all.
             */
            db.Put(new MultipleDatabaseEntry(kList, true),
                   new MultipleDatabaseEntry(vList, false));
            Assert.IsTrue(cursor.MoveFirst());
            db.Delete(new MultipleDatabaseEntry(kList, true));
            Assert.IsFalse(cursor.MoveFirst());

            cursor.Close();
            db.Close();
        }
Esempio n. 2
0
        public void TestDeleteMultipleKey()
        {
            testName = "TestDeleteMultipleKey";
            SetUpTest(true);

            QueueDatabaseConfig dbConfig = new QueueDatabaseConfig();

            dbConfig.Creation   = CreatePolicy.IF_NEEDED;
            dbConfig.ExtentSize = 1024;
            dbConfig.Length     = 520;
            QueueDatabase db = QueueDatabase.Open(testHome + "/" +
                                                  testName + ".db", dbConfig);

            List <KeyValuePair <DatabaseEntry, DatabaseEntry> > pList =
                new List <KeyValuePair <DatabaseEntry, DatabaseEntry> >();
            DatabaseEntry key, data;

            for (uint i = 1; i <= 100; i++)
            {
                key = new DatabaseEntry(
                    BitConverter.GetBytes(i));
                data = new DatabaseEntry(
                    ASCIIEncoding.ASCII.GetBytes(
                        "data" + i.ToString() +
                        Configuration.RandomString(512)));
                pList.Add(new KeyValuePair <
                              DatabaseEntry, DatabaseEntry>(key, data));
                db.Put(key, data);
            }

            // Create key/value pair bulk buffer and delete all.
            db.Delete(new MultipleKeyDatabaseEntry(pList, true));
            // Verify that the database is empty.
            Assert.AreEqual(0, db.Truncate());
            db.Close();
        }