public void SSHConfigTest() { string mconfig = "<collectorHost uniqueId=\"SSHTest\" dependOnParentId=\"\" name=\"SSH Test\" enabled=\"True\" expandOnStart=\"Auto\" " + " childCheckBehaviour=\"OnlyRunOnSuccess\" runAsEnabled=\"False\" runAs=\"\">" + " <collectorAgents agentCheckSequence=\"All\">" + " <collectorAgent name=\"SSH Test\" type=\"QuickMon.Collectors.SSHCommandCollector\" enabled=\"True\">" + "<config>" + "<carvcesEntries>" + "<carvceEntry>" + "<dataSource name=\"SSH Test\" sshSecOpt=\"password\" machine=\"hostName\" sshPort=\"22\" userName=\"user\" password=\"pwd\" privateKeyFile=\"\" passPhrase=\"\" persistent=\"False\">" + "<stateQuery>grep ^Version= /usr/lib/firefox/application.ini</stateQuery>" + "</dataSource>" + "<testConditions testSequence=\"GWE\">" + "<success testType=\"contains\">Version=53.0</success>" + "<warning testType=\"match\">[any]</warning>" + "<error testType=\"match\">[null]</error>" + "</testConditions>" + "</carvceEntry>" + "</carvcesEntries>" + "</config>" + " </collectorAgent>" + " </collectorAgents>" + " </collectorHost>"; CollectorHost ch = CollectorHost.FromXml(mconfig); Assert.AreEqual("SSH Test", ch.Name, "Collector host name not set"); Assert.AreEqual(1, ch.CollectorAgents.Count, "1 Collector agent expected"); Assert.AreEqual("SSH Test", ch.CollectorAgents[0].Name, "Agent name not set"); Assert.IsInstanceOfType(ch.CollectorAgents[0], typeof(Collectors.SSHCommandCollector)); Collectors.SSHCommandCollector sshCollector = (Collectors.SSHCommandCollector)ch.CollectorAgents[0]; Assert.AreEqual(1, ((Collectors.SSHCommandCollectorConfig)sshCollector.AgentConfig).Entries.Count, "1 SSH Command expected"); Collectors.SSHCommandCollectorConfigEntry sshEntry = (Collectors.SSHCommandCollectorConfigEntry)(((Collectors.SSHCommandCollectorConfig)sshCollector.AgentConfig).Entries[0]); Assert.AreEqual("hostName", sshEntry.SSHConnection.ComputerName, "SSH server name not found!"); Assert.AreEqual("Version=53.0", sshEntry.GoodValue, "Good value does not match"); string savedConfig = ch.ToXml(); ch = CollectorHost.FromXml(savedConfig); Assert.AreEqual("SSH Test", ch.Name, "Collector host name not set (reload)"); Assert.AreEqual(1, ch.CollectorAgents.Count, "1 Collector agent expected (reload)"); Assert.AreEqual("SSH Test", ch.CollectorAgents[0].Name, "Agent name not set (reload)"); //string testValue = sshEntry.ExecuteCommand(); //MonitorState testState = ch.RefreshCurrentState(); }
public void FromXml(string configurationString) { XmlDocument config = new XmlDocument(); config.LoadXml(configurationString); Entries.Clear(); XmlElement root = config.DocumentElement; //version 5 config foreach (XmlElement carvceEntryNode in root.SelectNodes("carvcesEntries/carvceEntry")) { XmlNode dataSourceNode = carvceEntryNode.SelectSingleNode("dataSource"); SSHCommandCollectorConfigEntry sshEntry = new SSHCommandCollectorConfigEntry(); sshEntry.Name = dataSourceNode.ReadXmlElementAttr("name", ""); sshEntry.PrimaryUIValue = dataSourceNode.ReadXmlElementAttr("primaryUIValue", false); sshEntry.OutputValueUnit = dataSourceNode.ReadXmlElementAttr("outputValueUnit", ""); sshEntry.SSHConnection = SSHConnectionDetails.FromXmlElement((XmlElement)dataSourceNode); XmlNode stateQueryNode = dataSourceNode.SelectSingleNode("stateQuery"); sshEntry.ValueReturnType = SSHCommandValueReturnTypeConverter.FromString(stateQueryNode.ReadXmlElementAttr("valueReturnType", "RawValue")); sshEntry.CommandString = stateQueryNode.InnerText; XmlNode testConditionsNode = carvceEntryNode.SelectSingleNode("testConditions"); if (testConditionsNode != null) { sshEntry.ReturnCheckSequence = CollectorAgentReturnValueCompareEngine.CheckSequenceTypeFromString(testConditionsNode.ReadXmlElementAttr("testSequence", "gwe")); XmlNode goodScriptNode = testConditionsNode.SelectSingleNode("success"); sshEntry.GoodResultMatchType = CollectorAgentReturnValueCompareEngine.MatchTypeFromString(goodScriptNode.ReadXmlElementAttr("testType", "match")); sshEntry.GoodValue = goodScriptNode.InnerText; XmlNode warningScriptNode = testConditionsNode.SelectSingleNode("warning"); sshEntry.WarningResultMatchType = CollectorAgentReturnValueCompareEngine.MatchTypeFromString(warningScriptNode.ReadXmlElementAttr("testType", "match")); sshEntry.WarningValue = warningScriptNode.InnerText; XmlNode errorScriptNode = testConditionsNode.SelectSingleNode("error"); sshEntry.ErrorResultMatchType = CollectorAgentReturnValueCompareEngine.MatchTypeFromString(errorScriptNode.ReadXmlElementAttr("testType", "match")); sshEntry.ErrorValue = errorScriptNode.InnerText; } else { sshEntry.ReturnCheckSequence = CollectorAgentReturnValueCheckSequence.GWE; } Entries.Add(sshEntry); } }