public static SequenceGroup LoadSequenceGroup(string seqFilePath, bool forceLoad, IModuleConfigData envInfo) { seqFilePath = ModuleUtils.GetAbsolutePath(seqFilePath, Directory.GetCurrentDirectory()); if (!seqFilePath.EndsWith($".{CommonConst.SequenceFileExtension}")) { I18N i18N = I18N.GetInstance(Constants.I18nName); throw new TestflowDataException(ModuleErrorCode.InvalidFileType, i18N.GetStr("InvalidFileType")); } SequenceGroup sequenceGroup = XmlReaderHelper.ReadSequenceGroup(seqFilePath); // 需要单独配置Setup和TearDown的索引号 sequenceGroup.SetUp.Index = CommonConst.SetupIndex; sequenceGroup.TearDown.Index = CommonConst.TeardownIndex; string paramFilePath = ModuleUtils.GetAbsolutePath(sequenceGroup.Info.SequenceParamFile, seqFilePath); SequenceGroupParameter parameter = XmlReaderHelper.ReadSequenceGroupParameter(paramFilePath); if (!forceLoad && !sequenceGroup.Info.Hash.Equals(parameter.Info.Hash)) { I18N i18N = I18N.GetInstance(Constants.I18nName); throw new TestflowDataException(ModuleErrorCode.UnmatchedFileHash, i18N.GetStr("UnmatchedHash")); } sequenceGroup.Parameters = parameter; SetParameterToSequenceData(sequenceGroup, parameter); ValidateTypeDatas(sequenceGroup); sequenceGroup.Info.SequenceGroupFile = seqFilePath; sequenceGroup.Info.SequenceParamFile = paramFilePath; return(sequenceGroup); }
public static void Serialize(string filePath, SequenceGroup sequenceGroup) { filePath = ModuleUtils.GetAbsolutePath(filePath, Directory.GetCurrentDirectory()); VerifySequenceData(sequenceGroup); sequenceGroup.Info.SequenceGroupFile = filePath; sequenceGroup.Info.SequenceParamFile = ModuleUtils.GetParameterFilePath(filePath); SequenceGroupParameter parameter = new SequenceGroupParameter(); parameter.Initialize(sequenceGroup); // 将SequeneGroup配置的参数写入ParameterData中,用以序列化 FillParameterDataToSequenceData(sequenceGroup, parameter); List <string> serialziedFileList = new List <string>(20); try { serialziedFileList.Add(filePath); XmlWriterHelper.Write(sequenceGroup, sequenceGroup.Info.SequenceGroupFile); serialziedFileList.Add(sequenceGroup.Info.SequenceParamFile); XmlWriterHelper.Write(parameter, sequenceGroup.Info.SequenceParamFile); } catch (IOException ex) { RollBackFilesIfFailed(serialziedFileList); throw new TestflowRuntimeException(ModuleErrorCode.SerializeFailed, ex.Message, ex); } catch (ApplicationException) { RollBackFilesIfFailed(serialziedFileList); throw; } }
private static void InitSequenceGroupLocations(TestProject testProject, string testProjectPath) { testProject.SequenceGroupLocations.Clear(); ISequenceGroupCollection sequenceGroups = testProject.SequenceGroups; for (int i = 0; i < sequenceGroups.Count; i++) { ISequenceGroup sequenceGroup = sequenceGroups[i]; string sequenceGroupPath = ModuleUtils.GetAbsolutePath(sequenceGroup.Info.SequenceGroupFile, testProjectPath); string parameterPath = ModuleUtils.GetAbsolutePath(sequenceGroup.Info.SequenceParamFile, testProjectPath); if (!ModuleUtils.IsValidFilePath(sequenceGroupPath)) { sequenceGroupPath = ModuleUtils.GetSequenceGroupPath(testProjectPath, i); parameterPath = ModuleUtils.GetParameterFilePath(sequenceGroupPath); sequenceGroup.Info.SequenceGroupFile = ModuleUtils.GetRelativePath(sequenceGroupPath, testProjectPath); sequenceGroup.Info.SequenceParamFile = ModuleUtils.GetRelativePath(parameterPath, sequenceGroupPath); } else if (!ModuleUtils.IsValidFilePath(sequenceGroup.Info.SequenceParamFile)) { parameterPath = ModuleUtils.GetParameterFilePath(sequenceGroupPath); sequenceGroup.Info.SequenceParamFile = ModuleUtils.GetRelativePath(parameterPath, sequenceGroupPath); } SequenceGroupLocationInfo locationInfo = new SequenceGroupLocationInfo() { Name = sequenceGroup.Name, SequenceFilePath = sequenceGroup.Info.SequenceGroupFile, ParameterFilePath = sequenceGroup.Info.SequenceParamFile }; testProject.SequenceGroupLocations.Add(locationInfo); } }
public static void LoadParameter(SequenceGroup sequenceGroup, string filePath, bool forceLoad) { filePath = ModuleUtils.GetAbsolutePath(filePath, Directory.GetCurrentDirectory()); SequenceGroupParameter parameter = XmlReaderHelper.ReadSequenceGroupParameter(filePath); if (!forceLoad && !sequenceGroup.Info.Hash.Equals(parameter.Info.Hash)) { I18N i18N = I18N.GetInstance(Constants.I18nName); throw new TestflowDataException(ModuleErrorCode.UnmatchedFileHash, i18N.GetStr("UnmatchedHash")); } sequenceGroup.Parameters = parameter; SetParameterToSequenceData(sequenceGroup, parameter); ValidateTypeDatas(sequenceGroup); }
public static TestProject LoadTestProject(string filePath, bool forceLoad, IModuleConfigData envInfo) { filePath = ModuleUtils.GetAbsolutePath(filePath, Directory.GetCurrentDirectory()); if (!filePath.EndsWith($".{CommonConst.TestGroupFileExtension}")) { I18N i18N = I18N.GetInstance(Constants.I18nName); throw new TestflowRuntimeException(ModuleErrorCode.InvalidFileType, i18N.GetStr("InvalidFileType")); } TestProject testProject = null; testProject = XmlReaderHelper.ReadTestProject(filePath); // 需要单独配置Setup和TearDown的索引号 testProject.SetUp.Index = CommonConst.SetupIndex; testProject.TearDown.Index = CommonConst.TeardownIndex; CheckModelVersion(testProject.ModelVersion, envInfo); foreach (ISequenceGroup sequenceGroup in testProject.SequenceGroups) { CheckModelVersion(sequenceGroup.Info.Version, envInfo); } foreach (SequenceGroupLocationInfo sequenceGroupLocation in testProject.SequenceGroupLocations) { SequenceGroup sequenceGroup = null; string sequenceGroupFile = ModuleUtils.GetAbsolutePath(sequenceGroupLocation.SequenceFilePath, filePath); if (File.Exists(sequenceGroupFile)) { sequenceGroup = LoadSequenceGroup(sequenceGroupFile, forceLoad, envInfo); sequenceGroup.Parent = testProject; } else { ILogService logService = TestflowRunner.GetInstance().LogService; logService.Print(LogLevel.Warn, CommonConst.PlatformLogSession, 0, "Sequence group file not exist."); sequenceGroup = new SequenceGroup(); sequenceGroup.Initialize(testProject); sequenceGroup.Info.SequenceGroupFile = sequenceGroupFile; sequenceGroup.Available = false; } testProject.SequenceGroups.Add(sequenceGroup); } ValidateTypeDatas(testProject); return(testProject); }
public static void Serialize(string filePath, TestProject testProject) { filePath = ModuleUtils.GetAbsolutePath(filePath, Directory.GetCurrentDirectory()); VerifySequenceData(testProject); List <string> serialziedFileList = new List <string>(10); try { // 初始化各个SequenceGroup的文件位置信息 InitSequenceGroupLocations(testProject, filePath); serialziedFileList.Add(filePath); XmlWriterHelper.Write(testProject, filePath); // 将testProject当前配置的数据信息写入ParameterData中 FillParameterDataToSequenceData(testProject); for (int i = 0; i < testProject.SequenceGroups.Count; i++) { SequenceGroup sequenceGroup = testProject.SequenceGroups[i] as SequenceGroup; string sequenceGroupPath = ModuleUtils.GetAbsolutePath(sequenceGroup.Info.SequenceGroupFile, filePath); string parameterFilePath = ModuleUtils.GetAbsolutePath(sequenceGroup.Info.SequenceParamFile, sequenceGroupPath);; if (!ModuleUtils.IsValidFilePath(sequenceGroupPath)) { sequenceGroupPath = ModuleUtils.GetSequenceGroupPath(filePath, i); sequenceGroup.Info.SequenceGroupFile = ModuleUtils.GetRelativePath(sequenceGroupPath, filePath); parameterFilePath = ModuleUtils.GetParameterFilePath(sequenceGroupPath); sequenceGroup.Info.SequenceParamFile = ModuleUtils.GetRelativePath(parameterFilePath, sequenceGroupPath); } else if (!ModuleUtils.IsValidFilePath(parameterFilePath)) { parameterFilePath = ModuleUtils.GetParameterFilePath(sequenceGroupPath); sequenceGroup.Info.SequenceParamFile = ModuleUtils.GetRelativePath(parameterFilePath, sequenceGroupPath); } SequenceGroupParameter parameter = new SequenceGroupParameter(); parameter.Initialize(sequenceGroup); // 将SequeneGroup配置的参数写入ParameterData中,用以序列化 FillParameterDataToSequenceData(sequenceGroup, parameter); sequenceGroup.RefreshSignature(); parameter.RefreshSignature(sequenceGroup); // 创建sequenceGroupd的文件夹 string directory = ModuleUtils.GetSequenceGroupDirectory(sequenceGroupPath); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } serialziedFileList.Add(sequenceGroupPath); XmlWriterHelper.Write(sequenceGroup, sequenceGroupPath); serialziedFileList.Add(parameterFilePath); XmlWriterHelper.Write(parameter, parameterFilePath); } } catch (IOException ex) { RollBackFilesIfFailed(serialziedFileList); throw new TestflowRuntimeException(ModuleErrorCode.SerializeFailed, ex.Message, ex); } catch (ApplicationException) { RollBackFilesIfFailed(serialziedFileList); throw; } }