internal string RunTestTask(string connectionString, string query) { ManagementPackClass AllManagementServersPoolClass = GetManagementPackClass("Microsoft.SystemCenter.Library", "Microsoft.SystemCenter.AllManagementServersPool"); IObjectReader <MonitoringObject> Targets = managementGroup.EntityObjects.GetObjectReader <MonitoringObject>(AllManagementServersPoolClass, ObjectQueryOptions.Default); EnterpriseManagementObject Target = Targets.First(); // Get the task. string TaskQuery = "Name = 'QueryOleDbMonitorTemplate.OLEDBMontiorTESTTask'"; ManagementPackTaskCriteria taskCriteria = new ManagementPackTaskCriteria(TaskQuery); IList <ManagementPackTask> tasks = managementGroup.TaskConfiguration.GetTasks(taskCriteria); ManagementPackTask task = null; if (tasks.Count == 1) { task = tasks[0]; } else { throw new InvalidOperationException( "Error! Expected one task with: " + query); } // Use the default task configuration. Microsoft.EnterpriseManagement.Runtime.TaskConfiguration config = new Microsoft.EnterpriseManagement.Runtime.TaskConfiguration(); //Get OleDbTriggerProbe module to override paramters ManagementPackModuleType OleDbTriggerProbeMoudule = managementGroup.Monitoring.GetModuleType("System.OleDbTriggerProbe", managementGroup.ManagementPacks.GetManagementPack(SystemManagementPack.System)); ManagementPackOverrideableParameter overrideConnecionStringParam = OleDbTriggerProbeMoudule.OverrideableParameterCollection["ConnectionString"]; ManagementPackOverrideableParameter overrideQueryParam = OleDbTriggerProbeMoudule.OverrideableParameterCollection["Query"]; config.Overrides.Add(new Pair <ManagementPackOverrideableParameter, string>(overrideConnecionStringParam, connectionString )); config.Overrides.Add(new Pair <ManagementPackOverrideableParameter, string>(overrideQueryParam, query )); //execute task IList <Microsoft.EnterpriseManagement.Runtime.TaskResult> result = managementGroup.TaskRuntime.ExecuteTask(Target, task, config); XmlDocument xd = new XmlDocument(); xd.LoadXml(result[0].Output); TestReportFactory reportTestFactory = new TestReportFactory(); return(GetTestResult(xd, reportTestFactory).UiText()); }
private ITestReport GetTestResult(XmlDocument xd, TestReportFactory reportTestFactory) { try { //Error check if ((int.Parse(xd.SelectSingleNode("DataItem/HRResult").InnerText) != 0)) { return(reportTestFactory.CreateErrorTest(xd.SelectSingleNode("DataItem/ErrorDescription").InnerText)); } //check columns violation if (xd.SelectNodes("DataItem/Columns")[0].ChildNodes.Count > 1) { return(reportTestFactory.CreateColumnValidation(xd.SelectNodes("DataItem/Columns").Count)); } //check rows violation if (int.Parse(xd.SelectSingleNode("DataItem/RowLength").InnerText) > 1) { return(reportTestFactory.CreateRowsValidation()); } //check numerical violation int val = 0; if (!int.TryParse(xd.SelectSingleNode("DataItem/Columns/Column[1]").InnerText, out val)) { return(reportTestFactory.CreateValueValidation()); } //all return(reportTestFactory.CreateTestReport(val)); } catch (Exception ex) { return(reportTestFactory.CreateErrorTest(ex.Message)); } }