Пример #1
0
        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();
        }
Пример #2
0
        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);
            }
        }