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 SecondaryQueueDatabaseConfigTest
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 = "SecondaryQueueDatabaseConfigTest";
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
47			// Open a primary btree database.
48			QueueDatabaseConfig queueDBConfig =
49			    new QueueDatabaseConfig();
50			queueDBConfig.Creation = CreatePolicy.IF_NEEDED;
51			QueueDatabase queueDB = QueueDatabase.Open(
52			    dbFileName, queueDBConfig);
53
54			SecondaryQueueDatabaseConfig secDBConfig =
55			    new SecondaryQueueDatabaseConfig(queueDB, null);
56
57			Config(xmlElem, ref secDBConfig, true);
58			Confirm(xmlElem, secDBConfig, true);
59
60			// Close the primary btree database.
61			queueDB.Close();
62		}
63
64		public static void Confirm(XmlElement xmlElement,
65		    SecondaryQueueDatabaseConfig secQueueDBConfig,
66		    bool compulsory)
67		{
68			SecondaryDatabaseConfig secDBConfig =
69			    secQueueDBConfig;
70			SecondaryDatabaseConfigTest.Confirm(xmlElement,
71			    secDBConfig, compulsory);
72
73			// Confirm secondary hash database specific configuration.
74			Configuration.ConfirmCreatePolicy(xmlElement,
75			    "Creation", secQueueDBConfig.Creation, compulsory);
76			Configuration.ConfirmUint(xmlElement,
77			    "ExtentSize", secQueueDBConfig.ExtentSize, compulsory);
78			Configuration.ConfirmUint(xmlElement, "Length",
79			    secQueueDBConfig.Length, compulsory);
80			Configuration.ConfirmInt(xmlElement, "PadByte",
81			    secQueueDBConfig.PadByte, compulsory);
82		}
83
84		public static void Config(XmlElement xmlElement,
85		    ref SecondaryQueueDatabaseConfig secQueueDBConfig,
86		    bool compulsory)
87		{
88			uint uintValue = new uint();
89			int intValue = new int();
90			SecondaryDatabaseConfig secConfig = secQueueDBConfig;
91			SecondaryDatabaseConfigTest.Config(xmlElement,
92			    ref secConfig, compulsory);
93
94			// Configure specific fields/properties of Queue database
95			Configuration.ConfigCreatePolicy(xmlElement, "Creation",
96			    ref secQueueDBConfig.Creation, compulsory);
97			if (Configuration.ConfigUint(xmlElement, "Length",
98			    ref uintValue, compulsory))
99				secQueueDBConfig.Length = uintValue;
100			if (Configuration.ConfigInt(xmlElement, "PadByte",
101			    ref intValue, compulsory))
102				secQueueDBConfig.PadByte = intValue;
103			if (Configuration.ConfigUint(xmlElement, "ExtentSize",
104			    ref uintValue, compulsory))
105				secQueueDBConfig.ExtentSize = uintValue;
106		}
107	}
108}
109
110