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.Threading; 13using System.Xml; 14using NUnit.Framework; 15using BerkeleyDB; 16 17namespace CsharpAPITest 18{ 19 [TestFixture] 20 public class SecondaryHashDatabaseConfigTest 21 { 22 private string testFixtureHome; 23 private string testFixtureName; 24 private string testName; 25 private string testHome; 26 27 [TestFixtureSetUp] 28 public void RunBeforeTests() 29 { 30 testFixtureName = "SecondaryHashDatabaseConfigTest"; 31 testFixtureHome = "./TestOut/" + testFixtureName; 32 33 Configuration.ClearDir(testFixtureHome); 34 } 35 36 [Test] 37 public void TestConfig() 38 { 39 testName = "TestConfig"; 40 testHome = testFixtureHome + "/" + testName; 41 string dbFileName = testHome + "/" + testName + ".db"; 42 43 Configuration.ClearDir(testHome); 44 XmlElement xmlElem = Configuration.TestSetUp( 45 testFixtureName, testName); 46 // Open a primary btree database. 47 HashDatabaseConfig hashDBConfig = 48 new HashDatabaseConfig(); 49 hashDBConfig.Creation = CreatePolicy.IF_NEEDED; 50 HashDatabase hashDB = HashDatabase.Open( 51 dbFileName, hashDBConfig); 52 53 SecondaryHashDatabaseConfig secDBConfig = 54 new SecondaryHashDatabaseConfig(hashDB, null); 55 56 Config(xmlElem, ref secDBConfig, true); 57 Confirm(xmlElem, secDBConfig, true); 58 59 // Close the primary btree database. 60 hashDB.Close(); 61 } 62 63 public static void Confirm(XmlElement xmlElement, 64 SecondaryHashDatabaseConfig secHashDBConfig, 65 bool compulsory) 66 { 67 SecondaryDatabaseConfig secDBConfig = 68 secHashDBConfig; 69 SecondaryDatabaseConfigTest.Confirm(xmlElement, 70 secDBConfig, compulsory); 71 72 // Confirm secondary hash database specific configuration. 73 Configuration.ConfirmCreatePolicy(xmlElement, 74 "Creation", secHashDBConfig.Creation, compulsory); 75 Configuration.ConfirmDuplicatesPolicy(xmlElement, 76 "Duplicates", secHashDBConfig.Duplicates, compulsory); 77 Configuration.ConfirmUint(xmlElement, "FillFactor", 78 secHashDBConfig.FillFactor, compulsory); 79 Configuration.ConfirmUint(xmlElement, 80 "NumElements", 81 secHashDBConfig.TableSize, compulsory); 82 } 83 84 public static void Config(XmlElement xmlElement, 85 ref SecondaryHashDatabaseConfig secHashDBConfig, 86 bool compulsory) 87 { 88 uint fillFactor = new uint(); 89 uint numElements = new uint(); 90 91 SecondaryDatabaseConfig secDBConfig = secHashDBConfig; 92 SecondaryDatabaseConfigTest.Config(xmlElement, 93 ref secDBConfig, compulsory); 94 95 // Configure specific fields/properties of hash db 96 Configuration.ConfigCreatePolicy(xmlElement, 97 "Creation", ref secHashDBConfig.Creation, compulsory); 98 Configuration.ConfigDuplicatesPolicy(xmlElement, 99 "Duplicates", ref secHashDBConfig.Duplicates, compulsory); 100 if (Configuration.ConfigUint(xmlElement, "FillFactor", 101 ref fillFactor, compulsory)) 102 secHashDBConfig.FillFactor = fillFactor; 103 if (Configuration.ConfigUint(xmlElement, "NumElements", 104 ref numElements, compulsory)) 105 secHashDBConfig.TableSize = numElements; 106 } 107 } 108} 109 110