virtual public void TestConfig() { testName = "TestConfig"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName; Configuration.ClearDir(testHome); XmlElement xmlElem = Configuration.TestSetUp( testFixtureName, testName); // Open a primary btree database. BTreeDatabaseConfig btreeDBConfig = new BTreeDatabaseConfig(); btreeDBConfig.Creation = CreatePolicy.IF_NEEDED; BTreeDatabase btreeDB = BTreeDatabase.Open( dbFileName, btreeDBConfig); SecondaryDatabaseConfig secDBConfig = new SecondaryDatabaseConfig(btreeDB, null); Config(xmlElem, ref secDBConfig, true); Confirm(xmlElem, secDBConfig, true); btreeDB.Close(); }
public void TestOpenNewQueueDB() { testName = "TestOpenNewQueueDB"; testHome = testFixtureHome + "/" + testName; string queueDBFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); // Configure all fields/properties in queue database. XmlElement xmlElem = Configuration.TestSetUp( testFixtureName, testName); QueueDatabaseConfig queueConfig = new QueueDatabaseConfig(); QueueDatabaseConfigTest.Config(xmlElem, ref queueConfig, true); queueConfig.Feedback = new DatabaseFeedbackDelegate(DbFeedback); // Open the queue database with above configuration. QueueDatabase queueDB = QueueDatabase.Open( queueDBFileName, queueConfig); // Check the fields/properties in opened queue database. Confirm(xmlElem, queueDB, true); queueDB.Close(); }
public void TestStats() { testName = "TestStats"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); QueueDatabaseConfig dbConfig = new QueueDatabaseConfig(); ConfigCase1(dbConfig); QueueDatabase db = QueueDatabase.Open(dbFileName, dbConfig); QueueStats stats = db.Stats(); ConfirmStatsPart1Case1(stats); db.PrintFastStats(true); // Put 500 records into the database. PutRecordCase1(db, null); stats = db.Stats(); ConfirmStatsPart2Case1(stats); db.PrintFastStats(); db.Close(); }
public void RunBeforeTests() { testFixtureName = "LockingConfigTest"; testFixtureHome = "./TestOut/" + testFixtureName; Configuration.ClearDir(testFixtureHome); }
public void RunBeforeTests() { testFixtureName = "QueueDatabaseTest"; testFixtureHome = "./TestOut/" + testFixtureName; Configuration.ClearDir(testFixtureHome); }
public void TestPutNoDuplicate() { testName = "TestPutNoDuplicate"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); HashDatabaseConfig hashConfig = new HashDatabaseConfig(); hashConfig.Creation = CreatePolicy.ALWAYS; hashConfig.Duplicates = DuplicatesPolicy.SORTED; hashConfig.TableSize = 20; HashDatabase hashDB = HashDatabase.Open(dbFileName, hashConfig); DatabaseEntry key, data; for (int i = 1; i <= 10; i++) { key = new DatabaseEntry(BitConverter.GetBytes(i)); data = new DatabaseEntry(BitConverter.GetBytes(i)); hashDB.PutNoDuplicate(key, data); } Assert.IsTrue(hashDB.Exists( new DatabaseEntry(BitConverter.GetBytes((int)5)))); hashDB.Close(); }
public void TestLocalSite() { testName = "TestLocalSite"; SetUpTest(true); Configuration.ClearDir(testHome); DatabaseEnvironmentConfig envConfig = new DatabaseEnvironmentConfig(); envConfig.Create = true; envConfig.UseLocking = true; envConfig.UseLogging = true; envConfig.UseMPool = true; envConfig.UseReplication = true; envConfig.UseTxns = true; ReplicationHostAddress addr = new ReplicationHostAddress("localhost:6060"); ReplicationConfig repCfg = new ReplicationConfig(); DbSiteConfig dbSiteConfig = new DbSiteConfig(); dbSiteConfig.Host = addr.Host; dbSiteConfig.Port = addr.Port; dbSiteConfig.LocalSite = true; repCfg.RepmgrSitesConfig.Add(dbSiteConfig); envConfig.RepSystemCfg = repCfg; DatabaseEnvironment env = DatabaseEnvironment.Open(testHome, envConfig); ReplicationHostAddress testAddr = env.RepMgrLocalSite.Address; Assert.AreEqual(addr.Host, testAddr.Host); Assert.AreEqual(addr.Port, testAddr.Port); env.Close(); }
public void RunBeforeTests() { testFixtureName = "JoinCursorTest"; testFixtureHome = "./TestOut/" + testFixtureName; Configuration.ClearDir(testFixtureHome); }
public void RunBeforeTests() { testFixtureName = "DatabaseEnvironmentConfigTest"; testFixtureHome = "./TestOut/" + testFixtureName; Configuration.ClearDir(testFixtureHome); }
public void TestMoveNextUnique() { testName = "TestMoveNextUnique"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; string dbSecFileName = testHome + "/" + testName + "_sec.db"; Configuration.ClearDir(testHome); BTreeDatabase db; SecondaryBTreeDatabase secDB; OpenSecDB(dbFileName, dbSecFileName, out db, out secDB); WriteRecords(db); /* * Move cursor to duplicate record. Since the duplicate * record has the largest key, moving to the next * unique record should fail. */ SecondaryCursor cursor = secDB.SecondaryCursor(); cursor.Move(new DatabaseEntry( BitConverter.GetBytes((int)10)), true); Assert.IsFalse(cursor.MoveNextUnique()); cursor.Close(); secDB.Close(); db.Close(); }
public void TestMovePrev() { testName = "TestMovePrev"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; string dbSecFileName = testHome + "/" + testName + "_sec.db"; Configuration.ClearDir(testHome); BTreeDatabase db; SecondaryBTreeDatabase secDB; OpenSecDB(dbFileName, dbSecFileName, out db, out secDB); WriteRecords(db); SecondaryCursor cursor = secDB.SecondaryCursor(); cursor.MoveLast(); for (int i = 0; i < 5; i++) { Assert.IsTrue(cursor.MovePrev()); } cursor.Close(); secDB.Close(); db.Close(); }
public void TestMoveNextDuplicate() { testName = "TestMoveNextDuplicate"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; string dbSecFileName = testHome + "/" + testName + "_sec.db"; Configuration.ClearDir(testHome); BTreeDatabase db; SecondaryBTreeDatabase secDB; OpenSecDB(dbFileName, dbSecFileName, out db, out secDB); WriteRecords(db); // Create a cursor and move the cursor to duplicate record. SecondaryCursor cursor = secDB.SecondaryCursor(); cursor.Move(new DatabaseEntry( BitConverter.GetBytes((int)10)), true); Assert.IsTrue(cursor.MoveNextDuplicate()); Assert.AreEqual(BitConverter.GetBytes((int)10), cursor.Current.Key.Data); cursor.Close(); secDB.Close(); db.Close(); }
public void TestMoveLast() { testName = "TestMoveLast"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; string dbSecFileName = testHome + "/" + testName + "_sec.db"; Configuration.ClearDir(testHome); BTreeDatabase db; SecondaryBTreeDatabase secDB; OpenSecDB(dbFileName, dbSecFileName, out db, out secDB); WriteRecords(db); SecondaryCursor cursor = secDB.SecondaryCursor(); Assert.IsTrue(cursor.MoveLast()); Assert.AreEqual(BitConverter.GetBytes((int)10), cursor.Current.Key.Data); cursor.Close(); secDB.Close(); db.Close(); }
public void TestMoveFirst() { testName = "TestMoveFirst"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; string dbSecFileName = testHome + "/" + testName + "_sec.db"; Configuration.ClearDir(testHome); // Open primary and secondary database. BTreeDatabase db; SecondaryBTreeDatabase secDB; OpenSecDB(dbFileName, dbSecFileName, out db, out secDB); // Write ten records into the database. WriteRecords(db); // Move the cursor to the first record(0,0). SecondaryCursor cursor = secDB.SecondaryCursor(); Assert.IsTrue(cursor.MoveFirst()); Assert.AreEqual(BitConverter.GetBytes((int)0), cursor.Current.Key.Data); // Close all. cursor.Close(); secDB.Close(); db.Close(); }
public void TestPutNoDuplicateWithUnsortedDuplicate() { testName = "TestPutNoDuplicateWithUnsortedDuplicate"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); HashDatabaseConfig hashConfig = new HashDatabaseConfig(); hashConfig.Creation = CreatePolicy.ALWAYS; hashConfig.Duplicates = DuplicatesPolicy.UNSORTED; hashConfig.ErrorPrefix = testName; HashDatabase hashDB = HashDatabase.Open(dbFileName, hashConfig); DatabaseEntry key, data; key = new DatabaseEntry(ASCIIEncoding.ASCII.GetBytes("1")); data = new DatabaseEntry(ASCIIEncoding.ASCII.GetBytes("1")); try { hashDB.PutNoDuplicate(key, data); } catch (DatabaseException) { throw new ExpectedTestException(); } finally { hashDB.Close(); } }
public void TestStats() { testName = "TestStats"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); RecnoDatabaseConfig dbConfig = new RecnoDatabaseConfig(); ConfigCase1(dbConfig); RecnoDatabase db = RecnoDatabase.Open(dbFileName, dbConfig); RecnoStats stats = db.Stats(); ConfirmStatsPart1Case1(stats); // Put 1000 records into the database. PutRecordCase1(db, null); stats = db.Stats(); ConfirmStatsPart2Case1(stats); // Delete 500 records. for (int i = 250; i <= 750; i++) { db.Delete(new DatabaseEntry(BitConverter.GetBytes(i))); } stats = db.Stats(); ConfirmStatsPart3Case1(stats); db.Close(); }
public void TestKeyExistException() { testName = "TestKeyExistException"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); HashDatabaseConfig hashConfig = new HashDatabaseConfig(); hashConfig.Creation = CreatePolicy.ALWAYS; hashConfig.Duplicates = DuplicatesPolicy.SORTED; HashDatabase hashDB = HashDatabase.Open(dbFileName, hashConfig); // Put the same record into db twice. DatabaseEntry key, data; key = new DatabaseEntry(ASCIIEncoding.ASCII.GetBytes("1")); data = new DatabaseEntry(ASCIIEncoding.ASCII.GetBytes("1")); try { hashDB.PutNoDuplicate(key, data); hashDB.PutNoDuplicate(key, data); } catch (KeyExistException) { throw new ExpectedTestException(); } finally { hashDB.Close(); } }
public void TestOpenExistingRecnoDB() { testName = "TestOpenExistingRecnoDB"; testHome = testFixtureHome + "/" + testName; string recnoDBFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); RecnoDatabaseConfig recConfig = new RecnoDatabaseConfig(); recConfig.Creation = CreatePolicy.ALWAYS; RecnoDatabase recDB = RecnoDatabase.Open( recnoDBFileName, recConfig); recDB.Close(); RecnoDatabaseConfig dbConfig = new RecnoDatabaseConfig(); string backingFile = testHome + "/backingFile"; File.Copy(recnoDBFileName, backingFile); dbConfig.BackingFile = backingFile; RecnoDatabase db = RecnoDatabase.Open(recnoDBFileName, dbConfig); Assert.AreEqual(db.Type, DatabaseType.RECNO); db.Close(); }
public void TestStats() { testName = "TestStats"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); HashDatabaseConfig dbConfig = new HashDatabaseConfig(); ConfigCase1(dbConfig); HashDatabase db = HashDatabase.Open(dbFileName, dbConfig); HashStats stats = db.Stats(); HashStats fastStats = db.FastStats(); ConfirmStatsPart1Case1(stats); ConfirmStatsPart1Case1(fastStats); // Put 100 records into the database. PutRecordCase1(db, null); stats = db.Stats(); ConfirmStatsPart2Case1(stats); // Delete some data to get some free pages. byte[] bigArray = new byte[262144]; db.Delete(new DatabaseEntry(bigArray)); stats = db.Stats(); ConfirmStatsPart3Case1(stats); db.Close(); }
public void TestTruncateUnusedPages() { testName = "TestTruncateUnusedPages"; testHome = testFixtureHome + "/" + testName; Configuration.ClearDir(testHome); DatabaseEnvironmentConfig envConfig = new DatabaseEnvironmentConfig(); envConfig.Create = true; envConfig.UseCDB = true; envConfig.UseMPool = true; DatabaseEnvironment env = DatabaseEnvironment.Open( testHome, envConfig); RecnoDatabaseConfig dbConfig = new RecnoDatabaseConfig(); dbConfig.Creation = CreatePolicy.IF_NEEDED; dbConfig.Env = env; dbConfig.PageSize = 512; RecnoDatabase db = RecnoDatabase.Open( testName + ".db", dbConfig); ModifyRecordsInDB(db, null); Assert.Less(0, db.TruncateUnusedPages()); db.Close(); env.Close(); }
public void TestConfig() { testName = "TestConfig"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); XmlElement xmlElem = Configuration.TestSetUp( testFixtureName, testName); // Open a primary btree database. HashDatabaseConfig hashDBConfig = new HashDatabaseConfig(); hashDBConfig.Creation = CreatePolicy.IF_NEEDED; HashDatabase hashDB = HashDatabase.Open( dbFileName, hashDBConfig); SecondaryHashDatabaseConfig secDBConfig = new SecondaryHashDatabaseConfig(hashDB, null); Config(xmlElem, ref secDBConfig, true); Confirm(xmlElem, secDBConfig, true); // Close the primary btree database. hashDB.Close(); }
public void TestAppendWithoutTxn() { testName = "TestAppendWithoutTxn"; testHome = testFixtureHome + "/" + testName; string recnoDBFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); RecnoDatabaseConfig recnoConfig = new RecnoDatabaseConfig(); recnoConfig.Creation = CreatePolicy.ALWAYS; RecnoDatabase recnoDB = RecnoDatabase.Open( recnoDBFileName, recnoConfig); DatabaseEntry data = new DatabaseEntry( ASCIIEncoding.ASCII.GetBytes("data")); uint num = recnoDB.Append(data); DatabaseEntry key = new DatabaseEntry( BitConverter.GetBytes(num)); Assert.IsTrue(recnoDB.Exists(key)); KeyValuePair <DatabaseEntry, DatabaseEntry> record = recnoDB.Get(key); Assert.IsTrue(data.Data.Length == record.Value.Data.Length); for (int i = 0; i < data.Data.Length; i++) { Assert.IsTrue(data.Data[i] == record.Value.Data[i]); } recnoDB.Close(); }
public void TestMaxLock() { testName = "TestMaxLock"; testHome = testFixtureHome + "/" + testName; Configuration.ClearDir(testHome); DatabaseEnvironment env; uint maxLocks; DatabaseEntry obj; maxLocks = 1; obj = new DatabaseEntry(); /* * Initialize environment using locking subsystem. The max number * of locks should be larger than environment's partitions. So in * order to make the MaxLock work, the environment paritition is * set to be the same value as MaxLock. */ LockTest.LockingEnvSetUp(testHome, testName, out env, maxLocks, 0, 0, maxLocks); Assert.AreEqual(maxLocks, env.MaxLocks); env.Close(); }
public void TestGet() { testName = "TestGet"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); // Open a database and an increase sequence. BTreeDatabase db; Sequence seq; OpenNewSequence(dbFileName, out db, out seq); /* * Check the delta of two sequence number get * from sequence. */ int delta = 100; long seqNum1 = seq.Get(delta); long seqNum2 = seq.Get(delta); Assert.AreEqual(delta, seqNum2 - seqNum1); // Close all. seq.Close(); db.Close(); }
public void TestAppendWithoutTxn() { testName = "TestAppendWithoutTxn"; testHome = testFixtureHome + "/" + testName; string queueDBFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); QueueDatabaseConfig queueConfig = new QueueDatabaseConfig(); queueConfig.Creation = CreatePolicy.ALWAYS; queueConfig.Length = 1000; QueueDatabase queueDB = QueueDatabase.Open( queueDBFileName, queueConfig); byte[] byteArr = new byte[4]; byteArr = BitConverter.GetBytes((int)1); DatabaseEntry data = new DatabaseEntry(byteArr); uint recno = queueDB.Append(data); // Confirm that the recno is larger than 0. Assert.AreNotEqual(0, recno); // Confirm that the record exists in the database. byteArr = BitConverter.GetBytes(recno); DatabaseEntry key = new DatabaseEntry(); key.Data = byteArr; Assert.IsTrue(queueDB.Exists(key)); queueDB.Close(); }
public void TestGetWithinTxn() { testName = "TestGetWithinTxn"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); // Open a database and an increase sequence. BTreeDatabase db; DatabaseEnvironment env; Sequence seq; OpenNewSequenceInEnv(testHome, testName, out env, out db, out seq); /* * Check the delta of two sequence number get * from sequence. */ int delta = 100; Transaction txn = env.BeginTransaction(); long seqNum1 = seq.Get(delta, txn); long seqNum2 = seq.Get(delta, txn); Assert.AreEqual(delta, seqNum2 - seqNum1); txn.Commit(); // Close all. seq.Close(); db.Close(); env.Close(); }
public void TestPutToQueue() { KeyValuePair <DatabaseEntry, DatabaseEntry> pair; testName = "TestPutQueue"; testHome = testFixtureHome + "/" + testName; string queueDBFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); QueueDatabaseConfig queueConfig = new QueueDatabaseConfig(); queueConfig.Length = 512; queueConfig.Creation = CreatePolicy.ALWAYS; using (QueueDatabase queueDB = QueueDatabase.Open( queueDBFileName, queueConfig)) { DatabaseEntry key = new DatabaseEntry(); key.Data = BitConverter.GetBytes((int)100); DatabaseEntry data = new DatabaseEntry( BitConverter.GetBytes((int)1)); queueDB.Put(key, data); pair = queueDB.GetBoth(key, data); } }
public void TestHashComparison() { testName = "TestHashComparison"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; Configuration.ClearDir(testHome); HashDatabaseConfig dbConfig = new HashDatabaseConfig(); dbConfig.Creation = CreatePolicy.IF_NEEDED; dbConfig.HashComparison = new EntryComparisonDelegate(EntryComparison); HashDatabase db = HashDatabase.Open(dbFileName, dbConfig); int ret; /* * Comparison gets the value that lowest byte of the * former dbt minus that of the latter one. */ ret = db.Compare(new DatabaseEntry(BitConverter.GetBytes(2)), new DatabaseEntry(BitConverter.GetBytes(2))); Assert.AreEqual(0, ret); ret = db.Compare(new DatabaseEntry(BitConverter.GetBytes(256)), new DatabaseEntry(BitConverter.GetBytes(1))); Assert.Greater(0, ret); db.Close(); }
public void RunBeforeTests() { testFixtureName = "SecondaryRecnoDatabaseConfigTest"; testFixtureHome = "./TestOut/" + testFixtureName; Configuration.ClearDir(testFixtureHome); }
public void TestDuplicates() { testName = "TestDuplicates"; testHome = testFixtureHome + "/" + testName; string dbFileName = testHome + "/" + testName + ".db"; string dbSecFileName = testHome + "/" + testName + "_sec.db"; Configuration.ClearDir(testHome); // Open a primary btree database. BTreeDatabaseConfig btreeDBConfig = new BTreeDatabaseConfig(); btreeDBConfig.Creation = CreatePolicy.IF_NEEDED; BTreeDatabase btreeDB = BTreeDatabase.Open( dbFileName, btreeDBConfig); // Open a secondary btree database. SecondaryBTreeDatabaseConfig secBtreeDBConfig = new SecondaryBTreeDatabaseConfig(btreeDB, null); secBtreeDBConfig.Creation = CreatePolicy.IF_NEEDED; secBtreeDBConfig.Duplicates = DuplicatesPolicy.SORTED; SecondaryBTreeDatabase secDB = SecondaryBTreeDatabase.Open(dbSecFileName, secBtreeDBConfig); secDB.Close(); btreeDB.Close(); }