public ParameterSave(PickOutFunction yourFunction, string yourName, string yourFindVaule, string yourAdditon) { parameterFunction = yourFunction; parameterFindVaule = yourFindVaule; parameterName = yourName; parameterAdditionalVaule = yourAdditon; }
public void addParameterSave(string yourName, string yourFindVaule, PickOutFunction yourFunction) { if (myParameterSaves == null) { myParameterSaves = new List <ParameterSave>(); } myParameterSaves.Add(new ParameterSave(yourFunction, yourName, yourFindVaule)); }
public ParameterSave(PickOutFunction yourFunction, string yourName, string yourFindVaule) { parameterFunction = yourFunction; parameterFindVaule = yourFindVaule; parameterName = yourName; }
/// <summary> /// i will get a myRunCaseData that will give caseActionActuator from XmlNode /// </summary> /// <param name="yourRunNode">your XmlNode</param> /// <returns>myRunCaseData you want</returns> public static MyRunCaseData <ICaseExecutionContent> GetCaseRunData(XmlNode sourceNode) { MyRunCaseData <ICaseExecutionContent> myCaseData = new MyRunCaseData <ICaseExecutionContent>(); CaseProtocol contentProtocol = CaseProtocol.unknownProtocol; if (sourceNode == null) { myCaseData.AddErrorMessage("Error :source data is null"); } else { if (sourceNode.Name == "Case") { #region Basic information if (sourceNode.Attributes["id"] == null) { myCaseData.AddErrorMessage("Error :not find the ID"); } else { try { myCaseData.id = int.Parse(sourceNode.Attributes["id"].Value); } catch (Exception) { myCaseData.AddErrorMessage("Error :find the error ID"); } } myCaseData.name = CaseTool.GetXmlAttributeVauleEx(sourceNode, "remark", "NULL"); #endregion #region Content //XmlNode tempCaseContent = sourceNode.SelectSingleNode("Content"); //sourceNode["Content"] 具有同样的功能 XmlNode tempCaseContent = sourceNode["Content"]; if (tempCaseContent == null) { myCaseData.AddErrorMessage("Error :can not find Content"); } else { if (tempCaseContent.Attributes["protocol"] != null && tempCaseContent.Attributes["actuator"] != null) { try { contentProtocol = (CaseProtocol)Enum.Parse(typeof(CaseProtocol), tempCaseContent.Attributes["protocol"].Value); myCaseData.contentProtocol = contentProtocol; } catch { myCaseData.AddErrorMessage("Error :error protocol in Content"); } switch (contentProtocol) { case CaseProtocol.console: myCaseData.testContent = CaseProtocolExecutionForConsole.GetRunContent(tempCaseContent); break; case CaseProtocol.activeMQ: myCaseData.testContent = CaseProtocolExecutionForActiveMQ.GetRunContent(tempCaseContent); break; case CaseProtocol.mysql: myCaseData.testContent = CaseProtocolExecutionForMysql.GetRunContent(tempCaseContent); break; case CaseProtocol.ssh: myCaseData.testContent = CaseProtocolExecutionForSsh.GetRunContent(tempCaseContent); break; case CaseProtocol.vanelife_http: myCaseData.testContent = CaseProtocolExecutionForVanelife_http.GetRunContent(tempCaseContent); break; case CaseProtocol.http: myCaseData.testContent = CaseProtocolExecutionForHttp.GetRunContent(tempCaseContent); break; case CaseProtocol.tcp: myCaseData.testContent = CaseProtocolExecutionForTcp.GetRunContent(tempCaseContent); break; case CaseProtocol.telnet: myCaseData.testContent = CaseProtocolExecutionForTelnet.GetRunContent(tempCaseContent); break; case CaseProtocol.com: myCaseData.testContent = CaseProtocolExecutionForCom.GetRunContent(tempCaseContent); break; case CaseProtocol.vanelife_comm: myCaseData.AddErrorMessage("Error :this protocol not supported for now"); break; case CaseProtocol.vanelife_tcp: myCaseData.AddErrorMessage("Error :this protocol not supported for now"); break; case CaseProtocol.vanelife_telnet: myCaseData.AddErrorMessage("Error :this protocol not supported for now"); break; case CaseProtocol.defaultProtocol: myCaseData.AddErrorMessage("Error :this protocol not supported for now"); break; default: myCaseData.AddErrorMessage("Error :this protocol not supported for now"); break; } if (myCaseData.testContent != null) { if (myCaseData.testContent.MyErrorMessage != null) //将testContent错误移入MyRunCaseData,执行case时会检查MyRunCaseData中的错误 { myCaseData.AddErrorMessage("Error :the Content not analyticaled Because:" + myCaseData.testContent.MyErrorMessage); //return myCaseData; } } } else { myCaseData.AddErrorMessage("Error :can not find protocol or actuator in Content"); } } #endregion #region Expect XmlNode tempCaseExpect = sourceNode["Expect"]; if (tempCaseExpect == null) { myCaseData.caseExpectInfo.myExpectType = CaseExpectType.judge_default; } else { if (tempCaseExpect.Attributes["method"] != null) { try { myCaseData.caseExpectInfo.myExpectType = (CaseExpectType)Enum.Parse(typeof(CaseExpectType), "judge_" + tempCaseExpect.Attributes["method"].Value); } catch { myCaseData.AddErrorMessage("Error :find error CaseExpectType in Expect"); myCaseData.caseExpectInfo.myExpectType = CaseExpectType.judge_default; } } else { myCaseData.caseExpectInfo.myExpectType = CaseExpectType.judge_is; } myCaseData.caseExpectInfo.myExpectContent = CaseTool.GetXmlParametContent(tempCaseExpect); } #endregion #region Action XmlNode tempCaseAction = sourceNode["Action"]; if (tempCaseAction != null) { if (tempCaseAction.HasChildNodes) { foreach (XmlNode tempNode in tempCaseAction.ChildNodes) { CaseResult tempResult = CaseResult.Unknow; CaseAction tempAction = CaseAction.action_unknow; try { tempResult = (CaseResult)Enum.Parse(typeof(CaseResult), tempNode.Name); } catch { myCaseData.AddErrorMessage(string.Format("Error :find error CaseAction in Action with [{0}] in [{1}]", tempNode.InnerXml, tempNode.Name)); continue; } try { tempAction = (CaseAction)Enum.Parse(typeof(CaseAction), "action_" + CaseTool.GetXmlAttributeVauleWithEmpty(tempNode, "action")); } catch { myCaseData.AddErrorMessage(string.Format("Error :find error CaseAction in Action with [{0}] in [{1}]", tempNode.InnerXml, CaseTool.GetXmlAttributeVauleWithEmpty(tempNode, "action"))); continue; } if (tempNode.InnerText != "") { myCaseData.AddCaseAction(tempResult, new CaseActionDescription(tempAction, tempNode.InnerText)); } else { myCaseData.AddCaseAction(tempResult, new CaseActionDescription(tempAction, null)); } } } } #endregion #region Attribute XmlNode tempCaseAttribute = sourceNode["Attribute"]; if (tempCaseAttribute != null) { if (tempCaseAttribute.HasChildNodes) { if (tempCaseAttribute["Delay"] != null) { try { myCaseData.caseAttribute.attributeDelay = int.Parse(tempCaseAttribute["Delay"].InnerText); } catch { myCaseData.AddErrorMessage("Error :find error Delay data in Attribute"); } } if (tempCaseAttribute["Level"] != null) { try { myCaseData.caseAttribute.attributeLevel = int.Parse(tempCaseAttribute["Level"].InnerText); } catch { myCaseData.AddErrorMessage("Error :find error Level data in Attribute"); } } if (tempCaseAttribute["ParameterSave"] != null) { if (tempCaseAttribute["ParameterSave"].HasChildNodes) { foreach (XmlNode tempNode in tempCaseAttribute["ParameterSave"].ChildNodes) { if (tempNode.Name == "NewParameter") { string tempParameterName = CaseTool.GetXmlAttributeVaule(tempNode, "name"); string tempParameterMode = CaseTool.GetXmlAttributeVaule(tempNode, "mode"); string tempParameterAdditional = CaseTool.GetXmlAttributeVaule(tempNode, "additional"); string tempFindVaule = tempNode.InnerText; PickOutFunction tempPickOutFunction = PickOutFunction.pick_str; if (tempParameterName == null) { myCaseData.AddErrorMessage("Error :can not find name data in NewParameter in Attribute"); continue; } if (tempParameterName == "") { myCaseData.AddErrorMessage("Error :the name data in NewParameter is empty in Attribute"); continue; } if (tempParameterMode == null) { myCaseData.AddErrorMessage("Error :can not find mode data in NewParameter in Attribute"); continue; } if (tempFindVaule == "") { myCaseData.AddErrorMessage("Error :the NewParameter vaule is empty in Attribute"); continue; } try { tempPickOutFunction = (PickOutFunction)Enum.Parse(typeof(PickOutFunction), "pick_" + tempParameterMode); } catch { myCaseData.AddErrorMessage("Error :find error ParameterSave mode in Attribute"); continue; } myCaseData.caseAttribute.addParameterSave(tempParameterName, tempFindVaule, tempPickOutFunction, tempParameterAdditional); } } } } } } #endregion } else { myCaseData.AddErrorMessage("Error :source data is error"); } } return(myCaseData); }