summaryrefslogtreecommitdiff
path: root/db-4.8.30/test/scr037/Configuration.cs
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2016-12-17 21:28:53 -0800
committerJesse Morgan <jesse@jesterpm.net>2016-12-17 21:28:53 -0800
commit54df2afaa61c6a03cbb4a33c9b90fa572b6d07b8 (patch)
tree18147b92b969d25ffbe61935fb63035cac820dd0 /db-4.8.30/test/scr037/Configuration.cs
Berkeley DB 4.8 with rust build script for linux.
Diffstat (limited to 'db-4.8.30/test/scr037/Configuration.cs')
-rw-r--r--db-4.8.30/test/scr037/Configuration.cs1107
1 files changed, 1107 insertions, 0 deletions
diff --git a/db-4.8.30/test/scr037/Configuration.cs b/db-4.8.30/test/scr037/Configuration.cs
new file mode 100644
index 0000000..abf0079
--- /dev/null
+++ b/db-4.8.30/test/scr037/Configuration.cs
@@ -0,0 +1,1107 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2009 Oracle. All rights reserved.
+ *
+ */
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Xml;
+using BerkeleyDB;
+using NUnit.Framework;
+
+namespace CsharpAPITest
+{
+ public class Configuration
+ {
+ /*
+ * Configure the value with data in xml and return true or
+ * false to indicate if the value is configured. If there
+ * is no testing data and it is optional, return false. If
+ * there is no testing data in xml and it is compulsory,
+ * ConfigNotFoundException will be thrown. If any testing
+ * data is provided, the value will be set by the testing
+ * data and true will be returned.
+ */
+ #region Config
+ public static void ConfigAckPolicy(XmlElement xmlElem,
+ string name, ref AckPolicy ackPolicy, bool compulsory)
+ {
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem,
+ name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ string policy = xmlNode.InnerText;
+ if (policy == "ALL")
+ ackPolicy = AckPolicy.ALL;
+ else if (policy == "ALL_PEERS")
+ ackPolicy = AckPolicy.ALL_PEERS;
+ else if (policy == "NONE")
+ ackPolicy = AckPolicy.NONE;
+ else if (policy == "ONE")
+ ackPolicy = AckPolicy.ONE;
+ else if (policy == "ONE_PEER")
+ ackPolicy = AckPolicy.ONE_PEER;
+ else if (policy == "QUORUM")
+ ackPolicy = AckPolicy.QUORUM;
+ else
+ throw new InvalidConfigException(name);
+ }
+ }
+
+ public static bool ConfigBool(XmlElement xmlElem,
+ string name, ref bool value, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ value = bool.Parse(xmlNode.InnerText);
+ return true;
+ }
+
+ public static bool ConfigByteOrder(XmlElement xmlElem,
+ string name, ref ByteOrder byteOrder, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ byteOrder = ByteOrder.FromConst(
+ int.Parse(xmlNode.InnerText));
+ return true;
+ }
+
+ public static bool ConfigByteMatrix(XmlElement xmlElem,
+ string name, ref byte[,] byteMatrix, bool compulsory)
+ {
+ int i, j, matrixLen;
+
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ matrixLen = xmlNode.ChildNodes.Count;
+ byte[,] matrix = new byte[matrixLen, matrixLen];
+ for (i = 0; i < matrixLen; i++)
+ {
+ if (xmlNode.ChildNodes[i].ChildNodes.Count != matrixLen)
+ throw new ConfigNotFoundException(name);
+ for (j = 0; j < matrixLen; j++)
+ {
+ matrix[i, j] = byte.Parse(
+ xmlNode.ChildNodes[i].ChildNodes[j].InnerText);
+ }
+ }
+
+ byteMatrix = matrix;
+ return true;
+ }
+
+ public static bool ConfigCacheInfo(XmlElement xmlElem,
+ string name, ref CacheInfo cacheSize, bool compulsory)
+ {
+ XmlNode xmlNode;
+ XmlNode xmlChildNode;
+ uint bytes;
+ uint gigabytes;
+ int nCaches;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if ((xmlChildNode = XMLReader.GetNode(
+ (XmlElement)xmlNode, "Bytes")) != null)
+ {
+ bytes = uint.Parse(xmlChildNode.InnerText);
+ if ((xmlChildNode = XMLReader.GetNode(
+ (XmlElement)xmlNode, "Gigabytes")) != null)
+ {
+ gigabytes = uint.Parse(xmlChildNode.InnerText);
+ if ((xmlChildNode = XMLReader.GetNode(
+ (XmlElement)xmlNode, "NCaches")) != null)
+ {
+ nCaches = int.Parse(xmlChildNode.InnerText);
+ cacheSize = new CacheInfo(gigabytes,bytes,nCaches);
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public static bool ConfigCachePriority(XmlElement xmlElem,
+ string name, ref CachePriority cachePriority, bool compulsory)
+ {
+ XmlNode xmlNode;
+ string priority;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ priority = xmlNode.InnerText;
+ if (priority == "DEFAULT")
+ cachePriority = CachePriority.DEFAULT;
+ else if (priority == "HIGH")
+ cachePriority = CachePriority.HIGH;
+ else if (priority == "LOW")
+ cachePriority = CachePriority.LOW;
+ else if (priority == "VERY_HIGH")
+ cachePriority = CachePriority.VERY_HIGH;
+ else if (priority == "VERY_LOW")
+ cachePriority = CachePriority.VERY_LOW;
+ else
+ throw new InvalidConfigException(name);
+
+ return true;
+ }
+
+ public static bool ConfigCreatePolicy(XmlElement xmlElem,
+ string name, ref CreatePolicy createPolicy, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ if (xmlNode.InnerText == "ALWAYS")
+ createPolicy = CreatePolicy.ALWAYS;
+ else if (xmlNode.InnerText == "IF_NEEDED")
+ createPolicy = CreatePolicy.IF_NEEDED;
+ else if (xmlNode.InnerText == "NEVER")
+ createPolicy = CreatePolicy.NEVER;
+ else
+ throw new InvalidConfigException(name);
+
+ return true;
+ }
+
+ public static bool ConfigDuplicatesPolicy(XmlElement xmlElem,
+ string name, ref DuplicatesPolicy duplicatePolicy,bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ if (xmlNode.InnerText == "NONE")
+ duplicatePolicy = DuplicatesPolicy.NONE;
+ else if (xmlNode.InnerText == "SORTED")
+ duplicatePolicy = DuplicatesPolicy.SORTED;
+ else if (xmlNode.InnerText == "UNSORTED")
+ duplicatePolicy = DuplicatesPolicy.UNSORTED;
+ else
+ throw new InvalidConfigException(name);
+
+ return true;
+ }
+
+ public static bool ConfigDateTime(XmlElement xmlElem,
+ string name, ref DateTime time, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ time = DateTime.Parse(xmlNode.InnerText);
+ return true;
+ }
+
+ public static bool ConfigDeadlockPolicy(XmlElement xmlElem,
+ string name, ref DeadlockPolicy deadlockPolicy, bool compulsory)
+ {
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ string policy = xmlNode.InnerText;
+ if (policy == "DEFAULT")
+ deadlockPolicy = DeadlockPolicy.DEFAULT;
+ else if (policy == "EXPIRE")
+ deadlockPolicy = DeadlockPolicy.EXPIRE;
+ else if (policy == "MAX_LOCKS")
+ deadlockPolicy = DeadlockPolicy.MAX_LOCKS;
+ else if (policy == "MAX_WRITE")
+ deadlockPolicy = DeadlockPolicy.MAX_WRITE;
+ else if (policy == "MIN_LOCKS")
+ deadlockPolicy = DeadlockPolicy.MIN_LOCKS;
+ else if (policy == "MIN_WRITE")
+ deadlockPolicy = DeadlockPolicy.MIN_WRITE;
+ else if (policy == "OLDEST")
+ deadlockPolicy = DeadlockPolicy.OLDEST;
+ else if (policy == "RANDOM")
+ deadlockPolicy = DeadlockPolicy.RANDOM;
+ else if (policy == "YOUNGEST")
+ deadlockPolicy = DeadlockPolicy.YOUNGEST;
+ else
+ throw new InvalidConfigException(name);
+ return true;
+ }
+
+ public static bool ConfigEncryption(XmlElement xmlElem,
+ string name, DatabaseConfig dbConfig, bool compulsory)
+ {
+ EncryptionAlgorithm alg;
+ XmlNode xmlNode;
+ string tmp, password;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ password = XMLReader.GetNode((XmlElement)xmlNode,
+ "password").InnerText;
+ tmp = XMLReader.GetNode((XmlElement)xmlNode, "algorithm").InnerText;
+ if (tmp == "AES")
+ alg = EncryptionAlgorithm.AES;
+ else
+ alg = EncryptionAlgorithm.DEFAULT;
+ dbConfig.SetEncryption(password, alg);
+ return true;
+ }
+
+ public static bool ConfigInt(XmlElement xmlElem,
+ string name, ref int value, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ value = int.Parse(xmlNode.InnerText);
+ return true;
+ }
+
+ public static bool ConfigIsolation(XmlElement xmlElem,
+ string name, ref Isolation value, bool compulsory)
+ {
+ XmlNode xmlNode;
+ int isolationDegree;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ isolationDegree = int.Parse(xmlNode.InnerText);
+ if (isolationDegree == 1)
+ value = Isolation.DEGREE_ONE;
+ else if (isolationDegree == 2)
+ value = Isolation.DEGREE_TWO;
+ else if (isolationDegree == 3)
+ value = Isolation.DEGREE_THREE;
+ else
+ throw new InvalidConfigException(name);
+
+ return true;
+ }
+
+ public static bool ConfigLogFlush(XmlElement xmlElem,
+ string name, ref TransactionConfig.LogFlush value,
+ bool compulsory)
+ {
+ XmlNode xmlNode;
+ string logFlush;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ logFlush = xmlNode.InnerText;
+ if (logFlush == "DEFAULT")
+ value = TransactionConfig.LogFlush.DEFAULT;
+ else if (logFlush == "NOSYNC")
+ value = TransactionConfig.LogFlush.NOSYNC;
+ else if (logFlush == "WRITE_NOSYNC")
+ value = TransactionConfig.LogFlush.WRITE_NOSYNC;
+ else if (logFlush == "SYNC")
+ value = TransactionConfig.LogFlush.SYNC;
+ else
+ throw new InvalidConfigException(name);
+
+ return true;
+ }
+
+ public static bool ConfigLong(XmlElement xmlElem,
+ string name, ref long value, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ value = long.Parse(xmlNode.InnerText);
+ return true;
+ }
+
+ public static bool ConfigMaxSequentialWrites(
+ XmlElement xmlElem, string name,
+ MPoolConfig mpoolConfig, bool compulsory)
+ {
+ XmlNode xmlNode;
+ uint pause;
+ int writes;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ pause = uint.Parse(XMLReader.GetNode(
+ (XmlElement)xmlNode, "pause").InnerText);
+ writes = int.Parse(XMLReader.GetNode(
+ (XmlElement)xmlNode,"maxWrites").InnerText);
+ mpoolConfig.SetMaxSequentialWrites(writes, pause);
+ return true;
+ }
+
+ public static bool ConfigReplicationHostAddress(
+ XmlElement xmlElem, string name,
+ ref ReplicationHostAddress address, bool compulsory)
+ {
+ XmlNode xmlNode = XMLReader.GetNode(
+ xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ address.Host = XMLReader.GetNode(
+ (XmlElement)xmlNode, "Host").InnerText;
+ address.Port = uint.Parse(XMLReader.GetNode(
+ (XmlElement)xmlNode, "Port").InnerText);
+ return true;
+ }
+
+ public static bool ConfigString(XmlElement xmlElem,
+ string name, ref string valChar, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ valChar = xmlNode.InnerText;
+ return true;
+ }
+
+ public static bool ConfigStringList(XmlElement xmlElem,
+ string name, ref List<string> strings, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ XmlNodeList list = xmlNode.ChildNodes;
+ for (int i = 0; i < list.Count; i++)
+ strings.Add(list[i].InnerText);
+
+ return true;
+ }
+
+ public static bool ConfigUint(XmlElement xmlElem,
+ string name, ref uint value, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ value = uint.Parse(xmlNode.InnerText);
+ return true;
+ }
+
+ public static bool ConfigVerboseMessages(
+ XmlElement xmlElem, string name,
+ ref VerboseMessages verbose, bool compulsory)
+ {
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem,
+ name);
+ if (xmlNode == null && compulsory == false)
+ return false;
+ else if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+
+ ConfigBool((XmlElement)xmlNode, "AllFileOps",
+ ref verbose.AllFileOps, compulsory);
+ ConfigBool((XmlElement)xmlNode, "Deadlock",
+ ref verbose.Deadlock, compulsory);
+ ConfigBool((XmlElement)xmlNode, "FileOps",
+ ref verbose.FileOps, compulsory);
+ ConfigBool((XmlElement)xmlNode, "Recovery",
+ ref verbose.Recovery, compulsory);
+ ConfigBool((XmlElement)xmlNode, "Register",
+ ref verbose.Register, compulsory);
+ ConfigBool((XmlElement)xmlNode, "Replication",
+ ref verbose.Replication, compulsory);
+ ConfigBool((XmlElement)xmlNode, "ReplicationElection",
+ ref verbose.ReplicationElection, compulsory);
+ ConfigBool((XmlElement)xmlNode, "ReplicationLease",
+ ref verbose.ReplicationLease, compulsory);
+ ConfigBool((XmlElement)xmlNode, "ReplicationMessages",
+ ref verbose.ReplicationMessages, compulsory);
+ ConfigBool((XmlElement)xmlNode, "ReplicationMisc",
+ ref verbose.ReplicationMisc, compulsory);
+ ConfigBool((XmlElement)xmlNode, "ReplicationSync",
+ ref verbose.ReplicationSync, compulsory);
+ ConfigBool((XmlElement)xmlNode, "RepMgrConnectionFailure",
+ ref verbose.RepMgrConnectionFailure, compulsory);
+ ConfigBool((XmlElement)xmlNode, "RepMgrMisc",
+ ref verbose.RepMgrMisc, compulsory);
+ ConfigBool((XmlElement)xmlNode, "WaitsForTable",
+ ref verbose.WaitsForTable, compulsory);
+ return true;
+ }
+
+ #endregion Config
+
+ /*
+ * Confirm that the given value is the same with that in
+ * xml. If there is no testing data in xml and it is
+ * compulsory, the ConfigNotFoundException will be thrown.
+ * If there is no testing data and it is optional, nothing
+ * will be done. If any testing data is provided, the value
+ * will be checked.
+ */
+ #region Confirm
+ public static void ConfirmAckPolicy(XmlElement xmlElem,
+ string name, AckPolicy ackPolicy, bool compulsory)
+ {
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem,
+ name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ string policy = xmlNode.InnerText;
+ if (policy == "ALL")
+ Assert.AreEqual(AckPolicy.ALL,
+ ackPolicy);
+ else if (policy == "ALL_PEERS")
+ Assert.AreEqual(AckPolicy.ALL_PEERS,
+ ackPolicy);
+ else if (policy == "NONE")
+ Assert.AreEqual(AckPolicy.NONE,
+ ackPolicy);
+ else if (policy == "ONE")
+ Assert.AreEqual(AckPolicy.ONE,
+ ackPolicy);
+ else if (policy == "ONE_PEER")
+ Assert.AreEqual(AckPolicy.ONE_PEER,
+ ackPolicy);
+ else if (policy == "QUORUM")
+ Assert.AreEqual(AckPolicy.QUORUM,
+ ackPolicy);
+ else
+ throw new InvalidConfigException(name);
+ }
+ }
+
+ public static void ConfirmBool(XmlElement xmlElem,
+ string name, bool value, bool compulsory)
+ {
+ XmlNode xmlNode;
+ bool expected;
+
+ xmlNode = XMLReader.GetNode(xmlElem,
+ name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if (xmlNode.ChildNodes.Count > 1)
+ {
+ expected = bool.Parse(
+ xmlNode.FirstChild.NextSibling.InnerText);
+ Assert.AreEqual(expected, value);
+ }
+ }
+ }
+
+ /*
+ * If configure MACHINE, the ByteOrder in database will
+ * switch to LITTLE_ENDIAN or BIG_ENDIAN according to the
+ * current machine.
+ */
+ public static void ConfirmByteOrder(XmlElement xmlElem,
+ string name, ByteOrder byteOrder, bool compulsory)
+ {
+ XmlNode xmlNode;
+ ByteOrder specOrder;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ specOrder = ByteOrder.FromConst(int.Parse(
+ xmlNode.InnerText));
+ if (specOrder == ByteOrder.MACHINE)
+ Assert.AreNotEqual(specOrder, byteOrder);
+ else
+ Assert.AreEqual(specOrder, byteOrder);
+ }
+ }
+
+ public static void ConfirmByteMatrix(XmlElement xmlElem,
+ string name, byte[,] byteMatrix, bool compulsory)
+ {
+ int i, j, matrixLen;
+
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ /*
+ * If the length of the 2 matrixes are not
+ * the same, the matrixes are definately
+ * not equal.
+ */
+ matrixLen = xmlNode.ChildNodes.Count;
+ Assert.AreEqual(matrixLen * matrixLen,byteMatrix.Length);
+
+ /*
+ * Go over every element in the matrix to
+ * see if the same with the given xml data.
+ */
+ for (i = 0; i < matrixLen; i++)
+ {
+ if (xmlNode.ChildNodes[i].ChildNodes.Count != matrixLen)
+ throw new ConfigNotFoundException(name);
+ for (j = 0; j < matrixLen; j++)
+ Assert.AreEqual(
+ byte.Parse(xmlNode.ChildNodes[i].ChildNodes[j].InnerText),
+ byteMatrix[i, j]);
+ }
+ }
+ }
+
+ public static void ConfirmCachePriority(XmlElement xmlElem,
+ string name, CachePriority priority, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if (xmlNode.InnerText == "DEFAULT")
+ Assert.AreEqual(CachePriority.DEFAULT, priority);
+ else if (xmlNode.InnerText == "HIGH")
+ Assert.AreEqual(CachePriority.HIGH, priority);
+ else if (xmlNode.InnerText == "LOW")
+ Assert.AreEqual(CachePriority.LOW, priority);
+ else if (xmlNode.InnerText == "VERY_HIGH")
+ Assert.AreEqual(CachePriority.VERY_HIGH, priority);
+ else if (xmlNode.InnerText == "VERY_LOW")
+ Assert.AreEqual(CachePriority.VERY_LOW, priority);
+ }
+ }
+
+ public static void ConfirmCacheSize(XmlElement xmlElem,
+ string name, CacheInfo cache, bool compulsory)
+ {
+ uint bytes;
+ uint gigabytes;
+ int nCaches;
+ XmlNode xmlNode;
+ XmlNode xmlChildNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if ((xmlChildNode = XMLReader.GetNode(
+ (XmlElement)xmlNode, "Bytes")) != null)
+ {
+ bytes = uint.Parse(xmlChildNode.InnerText);
+ if ((xmlChildNode = XMLReader.GetNode(
+ (XmlElement)xmlNode, "Gigabytes")) != null)
+ {
+ gigabytes = uint.Parse(xmlChildNode.InnerText);
+ if ((xmlChildNode = XMLReader.GetNode(
+ (XmlElement)xmlNode,
+ "NCaches")) != null)
+ {
+ nCaches = int.Parse(xmlChildNode.InnerText);
+ Assert.LessOrEqual(bytes, cache.Bytes);
+ Assert.AreEqual(gigabytes, cache.Gigabytes);
+ Assert.AreEqual(nCaches, cache.NCaches);
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * If bytes in CacheSize is assigned, the bytes in cachesize
+ * couldn't be the default one.
+ */
+ public static void ConfirmCacheSize(XmlElement xmlElem,
+ string name, CacheInfo cache, uint defaultCache,
+ bool compulsory)
+ {
+ uint bytes;
+ uint gigabytes;
+ int nCaches;
+ XmlNode xmlNode;
+ XmlNode xmlChildNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if ((xmlChildNode = XMLReader.GetNode(
+ (XmlElement)xmlNode, "Bytes")) != null)
+ {
+ bytes = defaultCache;
+ if ((xmlChildNode = XMLReader.GetNode(
+ (XmlElement)xmlNode, "Gigabytes")) != null)
+ {
+ gigabytes = uint.Parse(xmlChildNode.InnerText);
+ if ((xmlChildNode = XMLReader.GetNode(
+ (XmlElement)xmlNode, "NCaches")) != null)
+ {
+ nCaches = int.Parse(xmlChildNode.InnerText);
+ Assert.AreNotEqual(bytes, cache.Bytes);
+ Assert.AreEqual(gigabytes, cache.Gigabytes);
+ Assert.AreEqual(nCaches, cache.NCaches);
+ }
+ }
+ }
+ }
+ }
+
+ public static void ConfirmCreatePolicy(XmlElement xmlElem,
+ string name, CreatePolicy createPolicy, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if (xmlNode.InnerText == "ALWAYS")
+ Assert.IsTrue(createPolicy.Equals(CreatePolicy.ALWAYS));
+ else if (xmlNode.InnerText == "IF_NEEDED")
+ Assert.IsTrue(createPolicy.Equals(CreatePolicy.IF_NEEDED));
+ else if (xmlNode.InnerText == "NEVER")
+ Assert.IsTrue(createPolicy.Equals(CreatePolicy.NEVER));
+ }
+ }
+
+ public static void ConfirmDataBaseType(XmlElement xmlElem,
+ string name, DatabaseType dbType, bool compulsory)
+ {
+ XmlNode xmlNode;
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if (xmlNode.InnerText == "BTREE")
+ Assert.AreEqual(dbType, DatabaseType.BTREE);
+ else if (xmlNode.InnerText == "HASH")
+ Assert.AreEqual(dbType, DatabaseType.HASH);
+ else if (xmlNode.InnerText == "QUEUE")
+ Assert.AreEqual(dbType, DatabaseType.QUEUE);
+ else if (xmlNode.InnerText == "RECNO")
+ Assert.AreEqual(dbType, DatabaseType.RECNO);
+ else if (xmlNode.InnerText == "UNKNOWN")
+ Assert.AreEqual(dbType, DatabaseType.UNKNOWN);
+ }
+ }
+
+ public static void ConfirmDateTime(XmlElement xmlElem,
+ string name, DateTime time, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ Assert.AreEqual(DateTime.Parse(
+ xmlNode.InnerText), time);
+ }
+
+ public static void ConfirmDeadlockPolicy(XmlElement xmlElem,
+ string name, DeadlockPolicy deadlockPolicy, bool compulsory)
+ {
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ string policy = xmlNode.InnerText;
+ if (policy == "DEFAULT")
+ Assert.AreEqual(DeadlockPolicy.DEFAULT, deadlockPolicy);
+ else if (policy == "EXPIRE")
+ Assert.AreEqual(DeadlockPolicy.EXPIRE, deadlockPolicy);
+ else if (policy == "MAX_LOCKS")
+ Assert.AreEqual(DeadlockPolicy.MAX_LOCKS, deadlockPolicy);
+ else if (policy == "MAX_WRITE")
+ Assert.AreEqual(DeadlockPolicy.MAX_WRITE, deadlockPolicy);
+ else if (policy == "MIN_LOCKS")
+ Assert.AreEqual(DeadlockPolicy.MIN_LOCKS, deadlockPolicy);
+ else if (policy == "MIN_WRITE")
+ Assert.AreEqual(DeadlockPolicy.MIN_WRITE, deadlockPolicy);
+ else if (policy == "OLDEST")
+ Assert.AreEqual(DeadlockPolicy.OLDEST, deadlockPolicy);
+ else if (policy == "RANDOM")
+ Assert.AreEqual(DeadlockPolicy.RANDOM, deadlockPolicy);
+ else if (policy == "YOUNGEST")
+ Assert.AreEqual(DeadlockPolicy.YOUNGEST, deadlockPolicy);
+ else
+ throw new InvalidConfigException(name);
+ }
+ }
+
+ public static void ConfirmDuplicatesPolicy(
+ XmlElement xmlElem, string name,
+ DuplicatesPolicy duplicatedPolicy, bool compulsory)
+ {
+ XmlNode xmlNode;
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if (xmlNode.InnerText == "NONE")
+ Assert.AreEqual(duplicatedPolicy, DuplicatesPolicy.NONE);
+ else if (xmlNode.InnerText == "SORTED")
+ Assert.AreEqual(duplicatedPolicy, DuplicatesPolicy.SORTED);
+ else if (xmlNode.InnerText == "UNSORTED")
+ Assert.AreEqual(duplicatedPolicy, DuplicatesPolicy.UNSORTED);
+ }
+ }
+
+ public static void ConfirmEncryption(XmlElement xmlElem,
+ string name, string dPwd, EncryptionAlgorithm dAlg, bool compulsory)
+ {
+ EncryptionAlgorithm alg;
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem,
+ name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ string password = XMLReader.GetNode(
+ (XmlElement)xmlNode, "password").InnerText;
+ string tmp = XMLReader.GetNode(
+ (XmlElement)xmlNode, "algorithm").InnerText;
+ if (tmp == "AES")
+ alg = EncryptionAlgorithm.AES;
+ else
+ alg = EncryptionAlgorithm.DEFAULT;
+ Assert.AreEqual(dAlg, alg);
+ Assert.AreEqual(dPwd, dPwd);
+ }
+ }
+
+ public static void ConfirmInt(XmlElement xmlElem,
+ string name, int value, bool compulsory)
+ {
+ XmlNode xmlNode;
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ Assert.AreEqual(int.Parse(xmlNode.InnerText), value);
+ }
+
+ public static void ConfirmIsolation(XmlElement xmlElem,
+ string name, Isolation value, bool compulsory)
+ {
+ XmlNode xmlNode;
+ int isolationDegree;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ isolationDegree = int.Parse(xmlNode.InnerText);
+ if (isolationDegree == 1)
+ Assert.AreEqual(Isolation.DEGREE_ONE, value);
+ else if (isolationDegree == 2)
+ Assert.AreEqual(Isolation.DEGREE_TWO, value);
+ else if (isolationDegree == 3)
+ Assert.AreEqual(Isolation.DEGREE_THREE, value);
+ else
+ throw new InvalidConfigException(name);
+ }
+ }
+
+ public static void ConfirmLogFlush(XmlElement xmlElem,
+ string name, TransactionConfig.LogFlush value,
+ bool compulsory)
+ {
+ XmlNode xmlNode;
+ string logFlush;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ logFlush = xmlNode.InnerText;
+ if (logFlush == "DEFAULT")
+ Assert.AreEqual(TransactionConfig.LogFlush.DEFAULT, value);
+ else if (logFlush == "NOSYNC")
+ Assert.AreEqual(TransactionConfig.LogFlush.NOSYNC, value);
+ else if (logFlush == "WRITE_NOSYNC")
+ Assert.AreEqual(TransactionConfig.LogFlush.WRITE_NOSYNC, value);
+ else if (logFlush == "SYNC")
+ Assert.AreEqual(TransactionConfig.LogFlush.SYNC, value);
+ else
+ throw new InvalidConfigException(name);
+ }
+ }
+
+ public static void ConfirmLong(XmlElement xmlElem,
+ string name, long value, bool compulsory)
+ {
+ XmlNode xmlNode;
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ Assert.AreEqual(long.Parse(xmlNode.InnerText), value);
+ }
+
+ public static void ConfirmMaxSequentialWrites(
+ XmlElement xmlElem, string name,
+ uint mPause, int mWrites, bool compulsory)
+ {
+ XmlNode xmlNode;
+ uint pause;
+ int writes;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ writes = int.Parse(XMLReader.GetNode(
+ (XmlElement)xmlNode, "maxWrites").InnerText);
+ pause = uint.Parse(XMLReader.GetNode(
+ (XmlElement)xmlNode, "pause").InnerText);
+
+ Assert.AreEqual(mPause, pause);
+ Assert.AreEqual(mWrites, writes);
+ }
+ }
+
+ public static void ConfirmReplicationHostAddress(
+ XmlElement xmlElem, string name,
+ ReplicationHostAddress address, bool compulsory)
+ {
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ string host = XMLReader.GetNode(
+ (XmlElement)xmlNode, "Host").InnerText;
+ uint port = uint.Parse(XMLReader.GetNode(
+ (XmlElement)xmlNode, "Port").InnerText);
+
+ Assert.AreEqual(host, address.Host);
+ Assert.AreEqual(port, address.Port);
+ }
+ }
+
+ public static void ConfirmString(XmlElement xmlElem,
+ string name, string str, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ if (str != null)
+ {
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if (xmlNode.HasChildNodes)
+ Assert.AreEqual(
+ xmlNode.FirstChild.InnerText, str);
+ }
+ }
+ }
+
+ public static void ConfirmStringList(XmlElement xmlElem,
+ string name, List<string> strings, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ if (strings != null)
+ {
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ if (xmlNode.HasChildNodes)
+ {
+ XmlNodeList list = xmlNode.ChildNodes;
+ for (int i = 0; i < xmlNode.ChildNodes.Count;i++)
+ Assert.IsTrue(
+ strings.Contains(list[i].InnerText));
+ }
+ }
+ }
+ }
+
+ public static void ConfirmUint(XmlElement xmlElem,
+ string name, uint value, bool compulsory)
+ {
+ XmlNode xmlNode;
+
+ xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ Assert.AreEqual(uint.Parse(xmlNode.InnerText), value);
+ }
+
+ public static void ConfirmVerboseMessages(
+ XmlElement xmlElem, string name,
+ VerboseMessages verbose, bool compulsory)
+ {
+ XmlNode xmlNode = XMLReader.GetNode(xmlElem, name);
+ if (xmlNode == null && compulsory == true)
+ throw new ConfigNotFoundException(name);
+ else if (xmlNode != null)
+ {
+ ConfirmBool((XmlElement)xmlNode, "AllFileOps",
+ verbose.AllFileOps, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "Deadlock",
+ verbose.Deadlock, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "FileOps",
+ verbose.FileOps, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "Recovery",
+ verbose.Recovery, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "Register",
+ verbose.Register, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "Replication",
+ verbose.Replication, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "ReplicationElection",
+ verbose.ReplicationElection, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "ReplicationLease",
+ verbose.ReplicationLease, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "ReplicationMessages",
+ verbose.ReplicationMessages, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "ReplicationMisc",
+ verbose.ReplicationMisc, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "ReplicationSync",
+ verbose.ReplicationSync, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "RepMgrConnectionFailure",
+ verbose.RepMgrConnectionFailure, compulsory);
+ ConfirmBool((XmlElement)xmlNode, "RepMgrMisc",
+ verbose.RepMgrMisc, compulsory);
+ ConfirmBool((XmlElement)xmlNode,"WaitsForTable",
+ verbose.WaitsForTable, compulsory);
+ }
+ }
+ #endregion Confirm
+
+ public static void dbtFromString(DatabaseEntry dbt, string s)
+ {
+ dbt.Data = System.Text.Encoding.ASCII.GetBytes(s);
+ }
+
+ public static string strFromDBT(DatabaseEntry dbt)
+ {
+
+ System.Text.ASCIIEncoding decode = new ASCIIEncoding();
+ return decode.GetString(dbt.Data);
+ }
+
+ /*
+ * Reading params successfully returns true. Unless returns
+ * false. The retrieved Xml fragment is returning in xmlElem.
+ */
+ public static XmlElement TestSetUp(string testFixtureName, string testName)
+ {
+ XMLReader xmlReader = new XMLReader("../../AllTestData.xml");
+ XmlElement xmlElem = xmlReader.GetXmlElement(testFixtureName, testName);
+ if (xmlElem == null)
+ throw new ConfigNotFoundException(testFixtureName + ":" + testName);
+ else
+ return xmlElem;
+ }
+
+ /*
+ * Delete existing test output directory and its files,
+ * then create a new one.
+ */
+ public static void ClearDir(string testDir)
+ {
+ if (Directory.Exists(testDir))
+ Directory.Delete(testDir, true);
+ Directory.CreateDirectory(testDir);
+ }
+ }
+}