1/*- 2 * See the file LICENSE for redistribution information. 3 * 4 * Copyright (c) 2009 Oracle. All rights reserved. 5 * 6 */ 7using System; 8using System.Collections; 9using System.Collections.Generic; 10using System.IO; 11using System.Text; 12using System.Xml; 13using NUnit.Framework; 14using BerkeleyDB; 15 16namespace CsharpAPITest 17{ 18 [TestFixture] 19 public class SecondaryBTreeDatabaseConfigTest 20 { 21 private string testFixtureHome; 22 private string testFixtureName; 23 private string testName; 24 private string testHome; 25 26 [TestFixtureSetUp] 27 public void RunBeforeTests() 28 { 29 testFixtureName = "SecondaryBTreeDatabaseConfigTest"; 30 testFixtureHome = "./TestOut/" + testFixtureName; 31 32 Configuration.ClearDir(testFixtureHome); 33 } 34 35 [Test] 36 public void TestConfig() 37 { 38 testName = "TestConfig"; 39 testHome = testFixtureHome + "/" + testName; 40 string dbFileName = testHome + "/" + testName + ".db"; 41 42 Configuration.ClearDir(testHome); 43 XmlElement xmlElem = Configuration.TestSetUp( 44 testFixtureName, testName); 45 46 // Open a primary btree database. 47 BTreeDatabaseConfig btreeDBConfig = 48 new BTreeDatabaseConfig(); 49 btreeDBConfig.Creation = CreatePolicy.IF_NEEDED; 50 BTreeDatabase btreeDB = BTreeDatabase.Open( 51 dbFileName, btreeDBConfig); 52 53 SecondaryBTreeDatabaseConfig secDBConfig = 54 new SecondaryBTreeDatabaseConfig(btreeDB, null); 55 56 Config(xmlElem, ref secDBConfig, true); 57 Confirm(xmlElem, secDBConfig, true); 58 59 // Close the primary btree database. 60 btreeDB.Close(); 61 } 62 63 public static void Confirm(XmlElement xmlElement, 64 SecondaryBTreeDatabaseConfig secBtreeDBConfig, 65 bool compulsory) 66 { 67 SecondaryDatabaseConfig secDBConfig = 68 secBtreeDBConfig; 69 SecondaryDatabaseConfigTest.Confirm(xmlElement, 70 secDBConfig, compulsory); 71 72 // Confirm secondary btree database specific configuration. 73 Configuration.ConfirmCreatePolicy(xmlElement, 74 "Creation", secBtreeDBConfig.Creation, compulsory); 75 Configuration.ConfirmDuplicatesPolicy(xmlElement, 76 "Duplicates", secBtreeDBConfig.Duplicates, compulsory); 77 Configuration.ConfirmUint(xmlElement, "MinKeysPerPage", 78 secBtreeDBConfig.MinKeysPerPage, compulsory); 79 Configuration.ConfirmBool(xmlElement, 80 "NoReverseSplitting", 81 secBtreeDBConfig.NoReverseSplitting, compulsory); 82 Configuration.ConfirmBool(xmlElement, 83 "UseRecordNumbers", 84 secBtreeDBConfig.UseRecordNumbers, 85 compulsory); 86 } 87 88 public static void Config(XmlElement xmlElement, 89 ref SecondaryBTreeDatabaseConfig secBtreeDBConfig, 90 bool compulsory) 91 { 92 uint minKeysPerPage = new uint(); 93 94 SecondaryDatabaseConfig secDBConfig = secBtreeDBConfig; 95 SecondaryDatabaseConfigTest.Config(xmlElement, 96 ref secDBConfig, compulsory); 97 98 // Configure specific fields/properties of Btree db 99 Configuration.ConfigCreatePolicy(xmlElement, 100 "Creation", ref secBtreeDBConfig.Creation, compulsory); 101 Configuration.ConfigDuplicatesPolicy(xmlElement, 102 "Duplicates", ref secBtreeDBConfig.Duplicates, 103 compulsory); 104 if (Configuration.ConfigUint(xmlElement, 105 "MinKeysPerPage", ref minKeysPerPage, compulsory)) 106 secBtreeDBConfig.MinKeysPerPage = minKeysPerPage; 107 Configuration.ConfigBool(xmlElement, 108 "NoReverseSplitting", 109 ref secBtreeDBConfig.NoReverseSplitting, compulsory); 110 Configuration.ConfigBool(xmlElement, 111 "UseRecordNumbers", 112 ref secBtreeDBConfig.UseRecordNumbers, compulsory); 113 } 114 } 115} 116