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 ReplicationConfigTest 20 { 21 private string testFixtureName; 22 private string testName; 23 24 [TestFixtureSetUp] 25 public void RunBeforeTests() 26 { 27 testFixtureName = "ReplicationConfigTest"; 28 } 29 30 [Test] 31 public void TestConfig() 32 { 33 testName = "TestConfig"; 34 35 ReplicationConfig repConfig = new ReplicationConfig(); 36 XmlElement xmlElem = Configuration.TestSetUp( 37 testFixtureName, testName); 38 Config(xmlElem, ref repConfig, true); 39 Confirm(xmlElem, repConfig, true); 40 41 repConfig.Clockskew(102, 100); 42 Assert.AreEqual(102, repConfig.ClockskewFast); 43 Assert.AreEqual(100, repConfig.ClockskewSlow); 44 45 repConfig.TransmitLimit(1, 1024); 46 Assert.AreEqual(1, repConfig.TransmitLimitGBytes); 47 Assert.AreEqual(1024, repConfig.TransmitLimitBytes); 48 49 repConfig.RetransmissionRequest(10, 100); 50 Assert.AreEqual(100, repConfig.RetransmissionRequestMax); 51 Assert.AreEqual(10, repConfig.RetransmissionRequestMin); 52 } 53 54 [Test] 55 public void TestRepMgrLocalSite() 56 { 57 string host = "127.0.0.0"; 58 uint port = 8888; 59 testName = "TestRepMgrLocalSite"; 60 61 ReplicationConfig repConfig1 = new ReplicationConfig(); 62 repConfig1.RepMgrLocalSite = new ReplicationHostAddress(); 63 repConfig1.RepMgrLocalSite.Host = host; 64 repConfig1.RepMgrLocalSite.Port = port; 65 Assert.AreEqual(host, repConfig1.RepMgrLocalSite.Host); 66 Assert.AreEqual(port, repConfig1.RepMgrLocalSite.Port); 67 68 ReplicationConfig repConfig2 = new ReplicationConfig(); 69 repConfig2.RepMgrLocalSite = 70 new ReplicationHostAddress(host, port); 71 Assert.AreEqual(host, repConfig2.RepMgrLocalSite.Host); 72 Assert.AreEqual(port, repConfig2.RepMgrLocalSite.Port); 73 74 ReplicationConfig repConfig3 = new ReplicationConfig(); 75 repConfig3.RepMgrLocalSite = 76 new ReplicationHostAddress(host + ":" + port); 77 Assert.AreEqual(host, repConfig3.RepMgrLocalSite.Host); 78 Assert.AreEqual(port, repConfig3.RepMgrLocalSite.Port); 79 } 80 81 [Test] 82 public void TestRepMgrAckPolicy() 83 { 84 testName = "TestRepMgrAckPolicy"; 85 86 ReplicationConfig repConfig = new ReplicationConfig(); 87 repConfig.RepMgrAckPolicy = AckPolicy.ALL; 88 Assert.AreEqual(AckPolicy.ALL, 89 repConfig.RepMgrAckPolicy); 90 91 repConfig.RepMgrAckPolicy = AckPolicy.ALL_PEERS; 92 Assert.AreEqual(AckPolicy.ALL_PEERS, 93 repConfig.RepMgrAckPolicy); 94 95 repConfig.RepMgrAckPolicy = AckPolicy.NONE; 96 Assert.AreEqual(AckPolicy.NONE, 97 repConfig.RepMgrAckPolicy); 98 99 repConfig.RepMgrAckPolicy = AckPolicy.ONE; 100 Assert.AreEqual(AckPolicy.ONE, 101 repConfig.RepMgrAckPolicy); 102 103 repConfig.RepMgrAckPolicy = AckPolicy.ONE_PEER; 104 Assert.AreEqual(AckPolicy.ONE_PEER, 105 repConfig.RepMgrAckPolicy); 106 107 repConfig.RepMgrAckPolicy = AckPolicy.QUORUM; 108 Assert.AreEqual(AckPolicy.QUORUM, 109 repConfig.RepMgrAckPolicy); 110 } 111 112 public static void Confirm(XmlElement xmlElement, 113 ReplicationConfig cfg, bool compulsory) 114 { 115 Configuration.ConfirmUint(xmlElement, 116 "AckTimeout", cfg.AckTimeout, 117 compulsory); 118 Configuration.ConfirmBool(xmlElement, "BulkTransfer", 119 cfg.BulkTransfer, compulsory); 120 Configuration.ConfirmUint(xmlElement, "CheckpointDelay", 121 cfg.CheckpointDelay, compulsory); 122 Configuration.ConfirmUint(xmlElement, "ConnectionRetry", 123 cfg.ConnectionRetry, compulsory); 124 Configuration.ConfirmBool(xmlElement, "DelayClientSync", 125 cfg.DelayClientSync, compulsory); 126 Configuration.ConfirmUint(xmlElement, "ElectionRetry", 127 cfg.ElectionRetry, compulsory); 128 Configuration.ConfirmUint(xmlElement, "ElectionTimeout", 129 cfg.ElectionTimeout, compulsory); 130 Configuration.ConfirmUint(xmlElement, "FullElectionTimeout", 131 cfg.FullElectionTimeout, compulsory); 132 Configuration.ConfirmUint(xmlElement, "HeartbeatMonitor", 133 cfg.HeartbeatMonitor, compulsory); 134 Configuration.ConfirmUint(xmlElement, "HeartbeatSend", 135 cfg.HeartbeatSend, compulsory); 136 Configuration.ConfirmUint(xmlElement, "LeaseTimeout", 137 cfg.LeaseTimeout, compulsory); 138 Configuration.ConfirmBool(xmlElement, "NoAutoInit", 139 cfg.NoAutoInit, compulsory); 140 Configuration.ConfirmBool(xmlElement, "NoBlocking", 141 cfg.NoBlocking, compulsory); 142 Configuration.ConfirmUint(xmlElement, "NSites", 143 cfg.NSites, compulsory); 144 Configuration.ConfirmUint(xmlElement, "Priority", 145 cfg.Priority, compulsory); 146 Configuration.ConfirmAckPolicy(xmlElement, 147 "RepMgrAckPolicy", cfg.RepMgrAckPolicy, compulsory); 148 Configuration.ConfirmReplicationHostAddress(xmlElement, 149 "RepMgrLocalSite", cfg.RepMgrLocalSite, compulsory); 150 Configuration.ConfirmBool(xmlElement, "Strict2Site", 151 cfg.Strict2Site, compulsory); 152 Configuration.ConfirmBool(xmlElement, "UseMasterLeases", 153 cfg.UseMasterLeases, compulsory); 154 } 155 156 public static void Config(XmlElement xmlElement, 157 ref ReplicationConfig cfg, bool compulsory) 158 { 159 uint uintValue = new uint(); 160 161 if (Configuration.ConfigUint(xmlElement, "AckTimeout", 162 ref uintValue, compulsory)) 163 cfg.AckTimeout = uintValue; 164 Configuration.ConfigBool(xmlElement, "BulkTransfer", 165 ref cfg.BulkTransfer, compulsory); 166 if (Configuration.ConfigUint(xmlElement, "CheckpointDelay", 167 ref uintValue, compulsory)) 168 cfg.CheckpointDelay = uintValue; 169 if (Configuration.ConfigUint(xmlElement, "ConnectionRetry", 170 ref uintValue, compulsory)) 171 cfg.ConnectionRetry = uintValue; 172 Configuration.ConfigBool(xmlElement, "DelayClientSync", 173 ref cfg.DelayClientSync, compulsory); 174 if (Configuration.ConfigUint(xmlElement, "ElectionRetry", 175 ref uintValue, compulsory)) 176 cfg.ElectionRetry = uintValue; 177 if (Configuration.ConfigUint(xmlElement, "ElectionTimeout", 178 ref uintValue, compulsory)) 179 cfg.ElectionTimeout = uintValue; 180 if (Configuration.ConfigUint(xmlElement, "FullElectionTimeout", 181 ref uintValue, compulsory)) 182 cfg.FullElectionTimeout = uintValue; 183 if (Configuration.ConfigUint(xmlElement, "HeartbeatMonitor", 184 ref uintValue, compulsory)) 185 cfg.HeartbeatMonitor = uintValue; 186 if (Configuration.ConfigUint(xmlElement, "HeartbeatSend", 187 ref uintValue, compulsory)) 188 cfg.HeartbeatSend = uintValue; 189 if (Configuration.ConfigUint(xmlElement, "LeaseTimeout", 190 ref uintValue, compulsory)) 191 cfg.LeaseTimeout = uintValue; 192 Configuration.ConfigBool(xmlElement, "NoAutoInit", 193 ref cfg.NoAutoInit, compulsory); 194 Configuration.ConfigBool(xmlElement, "NoBlocking", 195 ref cfg.NoBlocking, compulsory); 196 if (Configuration.ConfigUint(xmlElement, "NSites", 197 ref uintValue, compulsory)) 198 cfg.NSites = uintValue; 199 if (Configuration.ConfigUint(xmlElement, "Priority", 200 ref uintValue, compulsory)) 201 cfg.Priority = uintValue; 202 Configuration.ConfigAckPolicy(xmlElement, 203 "RepMgrAckPolicy", ref cfg.RepMgrAckPolicy, 204 compulsory); 205 cfg.RepMgrLocalSite = new ReplicationHostAddress(); 206 Configuration.ConfigReplicationHostAddress(xmlElement, 207 "RepMgrLocalSite", ref cfg.RepMgrLocalSite, compulsory); 208 Configuration.ConfigBool(xmlElement, "Strict2Site", 209 ref cfg.Strict2Site, compulsory); 210 Configuration.ConfigBool(xmlElement, "UseMasterLeases", 211 ref cfg.UseMasterLeases, compulsory); 212 } 213 214 } 215}