public void MyTestInitialize() { // check whether it is in the cluster environment or not if (!Constants.isClusterEnv(sdb)) { Console.WriteLine("removeRG is for cluster environment only."); return; } // argument groupName = config.conf.Groups[0].GroupName; hostName = config.conf.Groups[0].Nodes[0].HostName; port = config.conf.Groups[0].Nodes[0].Port; dbpath = config.conf.Groups[0].Nodes[0].DBPath; // drop the exist group group = sdb.GetReplicaGroup(groupName); if (group != null) { // drop all the cs in current group, and then remove this group int nodeNum = group.GetNodeNum(SDBConst.NodeStatus.SDB_NODE_ALL); if (nodeNum > 0) { var nd = group.GetMaster(); Sequoiadb db = new Sequoiadb(nd.HostName, nd.Port); Assert.IsTrue(nd.Start()); db.Connect(config.conf.UserName, config.conf.Password); DBCursor cursor = db.ListCollectionSpaces(); while (cursor.Next() != null) { BsonDocument obj = cursor.Current(); string temp = null; if (obj.Contains("Name")) { temp = obj["Name"].AsString; } sdb.DropCollectionSpace(temp); } db.Disconnect(); } try { sdb.RemoveReplicaGroup(group.GroupName); } catch (BaseException e) { string errInfo = e.Message; Console.WriteLine("Error code is: " + errInfo); } } // create a new group group = sdb.CreateReplicaGroup(groupName); Assert.IsTrue(groupName.Equals(group.GroupName)); // create a node Dictionary <string, string> map = new Dictionary <string, string>(); map.Add("diaglevel", config.conf.Groups[0].Nodes[0].DiagLevel); node = group.CreateNode(hostName, port, dbpath, map); Assert.IsNotNull(node); group.Start(); }
public void MyTestInitialize() { // check whether it is in the cluster environment or not if (!Constants.isClusterEnv(sdb)) { Console.WriteLine("removeRG is for cluster environment only."); return; } // argument groupName = config.conf.Groups[0].GroupName; hostName = config.conf.Groups[0].Nodes[0].HostName; port = config.conf.Groups[0].Nodes[0].Port; dbpath = config.conf.Groups[0].Nodes[0].DBPath; // drop the exist group group = sdb.GetReplicaGroup(groupName); if (group != null) { // drop all the cs in current group, and then remove this group int nodeNum = group.GetNodeNum(SDBConst.NodeStatus.SDB_NODE_ALL); if (nodeNum > 0) { var nd = group.GetMaster(); Sequoiadb db = new Sequoiadb(nd.HostName, nd.Port); Assert.IsTrue(nd.Start()); db.Connect(config.conf.UserName, config.conf.Password); DBCursor cursor = db.ListCollectionSpaces(); while (cursor.Next() != null) { BsonDocument obj = cursor.Current(); string temp = null; if (obj.Contains("Name")) temp = obj["Name"].AsString; sdb.DropCollectionSpace(temp); } db.Disconnect(); } try { sdb.RemoveReplicaGroup(group.GroupName); } catch (BaseException e) { string errInfo = e.Message; Console.WriteLine("Error code is: " + errInfo); } } // create a new group group = sdb.CreateReplicaGroup(groupName); Assert.IsTrue(groupName.Equals(group.GroupName)); // create a node Dictionary<string, string> map = new Dictionary<string, string>(); map.Add("diaglevel", config.conf.Groups[0].Nodes[0].DiagLevel); node = group.CreateNode(hostName, port, dbpath, map); Assert.IsNotNull(node); group.Start(); }
public void getNodeTest() { if (!isCluster) { return; } // case 1: normal case groupName = "SYSCatalogGroup"; group = sdb.GetReplicaGroup(groupName); SequoiaDB.Node master = group.GetMaster(); Console.WriteLine(string.Format("group is: {0}, master is: {1}", groupName, master.NodeName)); String hostName = master.HostName; int hostPort = master.Port; SequoiaDB.Node node1 = group.GetNode(hostName, hostPort); Console.WriteLine(string.Format("group is: {0}, node1 is: {1}", groupName, node1.NodeName)); SequoiaDB.Node node2 = group.GetNode(hostName + ":" + hostPort); Console.WriteLine(string.Format("group is: {0}, node2 is: {1}", groupName, node2.NodeName)); // case 2: get a node which is not exist SequoiaDB.Node node3 = null; try { node3 = group.GetNode("ubuntu", 30000); Assert.Fail("should get SDB_SYS(-10) error"); } catch (BaseException e) { Assert.AreEqual("SDB_CLS_NODE_NOT_EXIST", e.ErrorType); } try { node3 = group.GetNode(hostName, 0); Assert.Fail("should get SDB_CLS_NODE_NOT_EXIST(-155) error"); } catch (BaseException e) { Assert.AreEqual("SDB_CLS_NODE_NOT_EXIST", e.ErrorType); } // case 3: get a node from empty group groupName = "groupNoteExist"; group = sdb.CreateReplicaGroup(groupName); try { node3 = group.GetNode(hostName, 0); Assert.Fail("should get SDB_CLS_NODE_NOT_EXIST(-155) error"); } catch (BaseException e) { Assert.AreEqual("SDB_CLS_NODE_NOT_EXIST", e.ErrorType); } finally { sdb.RemoveReplicaGroup(groupName); } }
public void RGTest() { String hostName = "192.168.20.166"; int port = 45000; // check whether it is in the cluster environment or not if (!Constants.isClusterEnv(sdb)) { Console.WriteLine("It's not a cluster environment."); return; } group = sdb.GetReplicaGroup(groupName); if (group == null) { group = sdb.CreateReplicaGroup(groupName); } ReplicaGroup group1 = sdb.GetReplicaGroup(group.GroupID); Assert.AreEqual(group.GroupName, group1.GroupName); ReplicaGroup group2 = sdb.GetReplicaGroup(1); Assert.IsNotNull(group2); node = group.GetNode(hostName, port); if (node == null) { string dbpath = config.conf.Groups[0].Nodes[0].DBPath; Dictionary <string, string> map = new Dictionary <string, string>(); map.Add("diaglevel", config.conf.Groups[0].Nodes[0].DiagLevel); node = group.CreateNode(hostName, port, dbpath, map); } group.Start(); int num = group.GetNodeNum(SDBConst.NodeStatus.SDB_NODE_ALL); Assert.IsTrue(num > 0); BsonDocument detail = group.GetDetail(); string gn = detail["GroupName"].AsString; Assert.IsTrue(groupName.Equals(gn)); SequoiaDB.Node master = group.GetMaster(); Assert.IsNotNull(master); SequoiaDB.Node slave = group.GetSlave(); Assert.IsNotNull(slave); Assert.IsTrue(node.Stop()); Assert.IsTrue(node.Start()); SDBConst.NodeStatus status = node.GetStatus(); Assert.IsTrue(status == SDBConst.NodeStatus.SDB_NODE_ACTIVE); Sequoiadb db = node.Connect(config.conf.UserName, config.conf.Password); db.Disconnect(); node.Stop(); group.Stop(); }
public void GetMasterAndSlaveNodeTest() { if (!isCluster) { return; } //groupName = "db2"; group = sdb.GetReplicaGroup(groupName); SequoiaDB.Node master = group.GetMaster(); SequoiaDB.Node slave = group.GetSlave(); Console.WriteLine("group is: " + groupName + ", master is: " + master.NodeName + ", slave is: " + slave.NodeName); }
public static void SequoiadbCleamUp() { // check whether it is in the cluster environment or not if (!Constants.isClusterEnv(sdb)) { return; } group = sdb.GetReplicaGroup(groupName); if (null != group) { // drop all the cs in current group, and then remove this group int nodeNum = group.GetNodeNum(SDBConst.NodeStatus.SDB_NODE_ALL); if (nodeNum > 0) { SequoiaDB.Node nd = group.GetMaster(); Sequoiadb db = new Sequoiadb(nd.HostName, nd.Port); Assert.IsTrue(nd.Start()); db.Connect(config.conf.UserName, config.conf.Password); DBCursor cursor = db.ListCollectionSpaces(); while (cursor.Next() != null) { BsonDocument obj = cursor.Current(); string temp = null; if (obj.Contains("Name")) { temp = obj["Name"].AsString; } sdb.DropCollectionSpace(temp); } db.Disconnect(); } Assert.IsTrue(group.Stop()); // remove group try { sdb.RemoveReplicaGroup(group.GroupName); } catch (BaseException e) { string errInfo = e.Message; Console.WriteLine("Error code is: " + errInfo); } } create_node_flag = false; create_node2_flag = false; // disconnect sdb.Disconnect(); }
public static void SequoiadbInitialize(TestContext testContext) { if (config == null) { config = new Config(); } sdb = new Sequoiadb(config.conf.Coord.Address); sdb.Connect(config.conf.UserName, config.conf.Password); // check whether it is in the cluster environment or not if (!Constants.isClusterEnv(sdb)) { return; } // argument groupName = config.conf.Groups[3].GroupName; hostName = config.conf.Groups[3].Nodes[0].HostName; port = config.conf.Groups[3].Nodes[0].Port; dbpath = config.conf.Groups[3].Nodes[0].DBPath; // drop the exist group group = sdb.GetReplicaGroup(groupName); if (group != null) { // drop all the cs in current group, and then remove this group int nodeNum = group.GetNodeNum(SDBConst.NodeStatus.SDB_NODE_ALL); if (nodeNum > 0) { SequoiaDB.Node nd = group.GetMaster(); Sequoiadb db = new Sequoiadb(nd.HostName, nd.Port); Assert.IsTrue(nd.Start()); db.Connect(config.conf.UserName, config.conf.Password); DBCursor cursor = db.ListCollectionSpaces(); while (cursor.Next() != null) { BsonDocument obj = cursor.Current(); string temp = null; if (obj.Contains("Name")) { temp = obj["Name"].AsString; } sdb.DropCollectionSpace(temp); } db.Disconnect(); } try { sdb.RemoveReplicaGroup(group.GroupName); } catch (BaseException e) { string errInfo = e.Message; Console.WriteLine("Error code is: " + errInfo); } } // create a new group group = sdb.CreateReplicaGroup(groupName); Assert.IsTrue(groupName.Equals(group.GroupName)); create_rg_flag = true; // create a node BsonDocument options = new BsonDocument(); options.Add("logfilenum", 1); node = group.CreateNode(hostName, port, dbpath, options); Assert.IsNotNull(node); node.Start(); create_node_flag = true; }
public void MyTestCleanup() { // check whether it is in the cluster environment or not if (!Constants.isClusterEnv(sdb)) { Console.WriteLine("removeRG is for cluster environment only."); return; } group = sdb.GetReplicaGroup(groupName); if (group != null) { // drop all the cs in current group, and then remove this group int nodeNum = group.GetNodeNum(SDBConst.NodeStatus.SDB_NODE_ALL); if (nodeNum > 0) { var nd = group.GetMaster(); var db = new Sequoiadb(nd.HostName, nd.Port); Assert.IsTrue(nd.Start()); db.Connect(config.conf.UserName, config.conf.Password); DBCursor cursor = db.ListCollectionSpaces(); while (cursor.Next() != null) { BsonDocument obj = cursor.Current(); string temp = null; if (obj.Contains("Name")) temp = obj["Name"].AsString; sdb.DropCollectionSpace(temp); } db.Disconnect(); } Assert.IsTrue(group.Stop()); // remove group try { sdb.RemoveReplicaGroup(group.GroupName); } catch (BaseException e) { string errInfo = e.Message; Console.WriteLine("Error code is: " + errInfo); } } sdb.Disconnect(); }
public void GetMasterAndSlaveNodeTest() { if (!isCluster) { return; } groupName = "SYSCatalogGroup"; group = sdb.GetReplicaGroup(groupName); BsonDocument detail = group.GetDetail(); BsonArray nodeList = (BsonArray)detail["Group"]; int primaryNodePosition = _GetMasterPosition(group); int nodeCount = nodeList.Count; Assert.IsTrue(nodeCount != 0); SequoiaDB.Node master = null; SequoiaDB.Node slave = null; // case 1 master = group.GetMaster(); slave = group.GetSlave(); Console.WriteLine(String.Format("case1: group is: {0}, master is: {1}, slave is: {2}", groupName, master == null ? null : master.NodeName, slave == null ? null : slave.NodeName)); if (nodeCount == 1) { Assert.AreEqual(master.NodeName, slave.NodeName); } else { Assert.AreNotEqual(master.NodeName, slave.NodeName); } // case 2 slave = group.GetSlave(1, 2, 3, 4, 5, 6, 7); Console.WriteLine(String.Format("case2: group is: {0}, master is: {1}, slave is: {2}", groupName, master == null ? null : master.NodeName, slave == null ? null : slave.NodeName)); if (nodeCount == 1) { Assert.AreEqual(master.NodeName, slave.NodeName); } else { Assert.AreNotEqual(master.NodeName, slave.NodeName); } // case 3 Random random = new Random(); int pos1 = random.Next(7) + 1; int pos2 = 0; while (true) { pos2 = random.Next(7) + 1; if (pos2 != pos1) { break; } } //pos1 = 4; pos2 = 7; slave = group.GetSlave(pos1, pos2); Console.WriteLine(String.Format("case3: group is: {0}, master is: {1}, slave is: {2}", groupName, master == null ? null : master.NodeName, slave == null ? null : slave.NodeName)); if (nodeCount == 1) { Assert.AreEqual(master.NodeName, slave.NodeName); } else { if ((pos1 % nodeCount == pos2 % nodeCount) && (primaryNodePosition == (pos1 - 1) % nodeCount + 1)) { Assert.AreEqual(master.NodeName, slave.NodeName); } else { Assert.AreNotEqual(master.NodeName, slave.NodeName); } } }