예제 #1
0
        public void GetCursur(string dbFileName, bool ifConfig)
        {
            QueueDatabaseConfig dbConfig = new QueueDatabaseConfig();

            dbConfig.Creation = CreatePolicy.IF_NEEDED;
            dbConfig.Length   = 100;
            QueueDatabase db = QueueDatabase.Open(dbFileName, dbConfig);
            Cursor        cursor;
            CursorConfig  cursorConfig = new CursorConfig();

            cursorConfig.Priority = CachePriority.HIGH;
            if (ifConfig == false)
            {
                cursor = db.Cursor();
            }
            else
            {
                cursor = db.Cursor(cursorConfig);
            }
            cursor.Add(new KeyValuePair <DatabaseEntry, DatabaseEntry>(
                           new DatabaseEntry(BitConverter.GetBytes((int)1)),
                           new DatabaseEntry(BitConverter.GetBytes((int)1))));
            Cursor dupCursor = cursor.Duplicate(false);

            Assert.IsNull(dupCursor.Current.Key);
            Assert.AreEqual(CachePriority.HIGH, dupCursor.Priority);
            dupCursor.Close();
            cursor.Close();
            db.Close();
        }
예제 #2
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();
        }
예제 #3
0
        public void GetCursur(string dbFileName, bool ifConfig)
        {
            QueueDatabaseConfig dbConfig = new QueueDatabaseConfig();

            dbConfig.Creation = CreatePolicy.IF_NEEDED;
            dbConfig.Length   = 100;
            QueueDatabase db = QueueDatabase.Open(dbFileName, dbConfig);
            Cursor        cursor;

            if (ifConfig == false)
            {
                cursor = db.Cursor();
            }
            else
            {
                cursor = db.Cursor(new CursorConfig());
            }
            cursor.Close();
            db.Close();
        }
예제 #4
0
        public void TestPutMultiple()
        {
            testName = "TestPutMultiple";
            SetUpTest(true);

            QueueDatabaseConfig dbConfig = new QueueDatabaseConfig();

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

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

            for (uint i = 1; i <= 9; i++)
            {
                key  = new DatabaseEntry(BitConverter.GetBytes(i));
                data = new DatabaseEntry(
                    ASCIIEncoding.ASCII.GetBytes("data" + i +
                                                 Configuration.RandomString(512)));
                kList.Add(i);
                vList.Add(data);
            }

            // Create bulk buffer for recno based keys.
            MultipleDatabaseEntry kBuff =
                new MultipleDatabaseEntry(kList);

            Assert.IsTrue(kBuff.Recno);
            int val = 0;

            foreach (DatabaseEntry dbt in kBuff)
            {
                Assert.AreEqual(
                    BitConverter.GetBytes(kList[val]),
                    dbt.Data);
                val++;
            }
            Assert.AreEqual(9, val);

            // Create bulk buffer for data.
            MultipleDatabaseEntry vBuff =
                new MultipleDatabaseEntry(vList, false);

            /*
             * Create recno bulk buffer from another recno bulk
             * buffer.
             */
            MultipleDatabaseEntry kBuff1 =
                new MultipleDatabaseEntry(kBuff.Data, kBuff.Recno);

            val = 0;
            foreach (DatabaseEntry dbt in kBuff1)
            {
                Assert.AreEqual(
                    BitConverter.GetBytes(kList[val]),
                    dbt.Data);
                val++;
            }
            Assert.AreEqual(9, val);

            // Bulk insert to database with key and value buffers.
            db.Put(kBuff, vBuff);
            Cursor cursor = db.Cursor();
            KeyValuePair <DatabaseEntry, DatabaseEntry> pair;

            val = 0;
            while (cursor.MoveNext())
            {
                pair = cursor.Current;
                Assert.AreEqual(
                    BitConverter.GetBytes(kList[val]),
                    pair.Key.Data);
                for (int i = 0; i < 520; i++)
                {
                    if (i < vList[val].Data.Length)
                    {
                        Assert.AreEqual(vList[val].Data[i],
                                        pair.Value.Data[i]);
                    }
                    else
                    {
                        // The pad byte is 0.
                        Assert.AreEqual(0, pair.Value.Data[i]);
                    }
                }
                Assert.IsFalse(cursor.MoveNextDuplicate());
                val++;
            }
            Assert.AreEqual(9, val);

            cursor.Close();
            db.Close();
        }