internal static int RunStep(StringBuilder stepBuilder, List<ThreadSession> sessionList, TaskSetting setting, string stepName, int runtimes) { CaseStep[] caseList = new CaseStep[sessionList.Count]; Task[] taskList = new Task[sessionList.Count]; for (int i = 0; i < taskList.Length; i++) { var session = sessionList[i]; var caseStep = CaseStep.Create(setting.CaseStepTypeFormat, stepName); if (caseStep != null) { caseStep.Runtimes = runtimes; caseStep.Init(session); caseList[i] = caseStep; taskList[i] = Task.Factory.StartNew(caseStep.StartRun); } } if (setting.WaitTimeout == TimeSpan.Zero) { Task.WaitAll(taskList); } else { Task.WaitAll(taskList, setting.WaitTimeout); } int errorCount = caseList.Sum(t => t.Timer.FailNum); DoStepResult(stepBuilder, stepName, caseList); return errorCount; }
protected void SetChildStep(string stepName) { CaseStep caseStep = null; if (!string.IsNullOrEmpty(stepName)) { caseStep = Create(_session.Setting.CaseStepTypeFormat, stepName); if (caseStep == null) throw new Exception(string.Format(_session.Setting.CaseStepTypeFormat, stepName) + " isn't found."); caseStep.Runtimes = 1; caseStep.Init(_session); } ChildStep = caseStep; }