コード例 #1
0
 private void AddExtraRuntimeConfigData(GlobalConfigData globalConfigData)
 {
     globalConfigData.AddConfigItem(Constants.EngineConfig, "TestName", "TestInstance");
     globalConfigData.AddConfigItem(Constants.EngineConfig, "TestDescription", "");
     globalConfigData.AddConfigItem(Constants.EngineConfig, "RuntimeHash", "");
     globalConfigData.AddConfigItem(Constants.EngineConfig, "RuntimeType", RuntimeType.Run);
 }
コード例 #2
0
        private GlobalConfigData GetGlobalConfigData(ConfigData configData)
        {
            GlobalConfigData globalConfigData = new GlobalConfigData();

            foreach (ConfigBlock configBlock in configData.ModuleConfigData)
            {
                string blockName = configBlock.Name;
                globalConfigData.AddConfigRoot(blockName);
                foreach (ConfigItem configItem in configBlock.ConfigItems)
                {
                    Type valueType = Type.GetType(configItem.Type);
                    if (null == valueType)
                    {
                        valueType = Assembly.GetAssembly(typeof(IConfigurationManager)).GetType(configItem.Type);
                        if (null == valueType)
                        {
                            valueType = Assembly.GetAssembly(typeof(Messenger)).GetType(configItem.Type);
                            if (null == valueType)
                            {
                                I18N i18N = I18N.GetInstance(Constants.I18nName);
                                throw new TestflowRuntimeException(ModuleErrorCode.ConfigDataError,
                                                                   i18N.GetFStr("CannotLoadType", configItem.Type));
                            }
                        }
                    }
                    object value;
                    if (valueType.IsEnum)
                    {
                        value = Enum.Parse(valueType, configItem.Value);
                    }
                    else if (valueType.IsValueType || valueType == typeof(string))
                    {
                        value = _valueConvertor[GetFullName(valueType)].Invoke(configItem.Value);
                    }
                    else if (valueType == typeof(Encoding))
                    {
                        value = Encoding.GetEncoding(configItem.Value);
                    }
                    else
                    {
                        I18N i18N = I18N.GetInstance(Constants.I18nName);
                        throw new TestflowRuntimeException(ModuleErrorCode.ConfigDataError,
                                                           i18N.GetFStr("UnsupportedCast", configItem.Type));
                    }
                    globalConfigData.AddConfigItem(blockName, configItem.Name, value);
                }
            }
            return(globalConfigData);
        }
コード例 #3
0
        private void InitializeExpressionInfos(GlobalConfigData globalConfigData, ConfigDataLoader dataLoader)
        {
            // 获取表达式符号信息并添加到SequenceManager和EngineCore的配置信息中
            ExpressionOperatorConfiguration expressionTokens = GetExpressionTokens(globalConfigData, dataLoader);
            // 添加操作符到操作符信息的映射
            Dictionary <string, ExpressionOperatorInfo> operatorInfos = new Dictionary <string, ExpressionOperatorInfo>(expressionTokens.Operators.Count);

            foreach (ExpressionOperatorInfo operatorInfo in expressionTokens.Operators)
            {
                operatorInfos.Add(operatorInfo.Symbol, operatorInfo);
            }
            globalConfigData.AddConfigItem(Constants.SequenceManage, "ExpressionOperators", operatorInfos);
            globalConfigData.AddConfigItem(Constants.EngineConfig, "ExpressionOperators", operatorInfos);
            globalConfigData.AddConfigItem(Constants.ParamCheck, "ExpressionOperators", operatorInfos);
            // 添加计算类的信息
            globalConfigData.AddConfigItem(Constants.SequenceManage, "ExpressionCalculators", expressionTokens.Calculators);
            globalConfigData.AddConfigItem(Constants.EngineConfig, "ExpressionCalculators", expressionTokens.Calculators);
            globalConfigData.AddConfigItem(Constants.ParamCheck, "ExpressionCalculators", expressionTokens.Calculators);
        }
コード例 #4
0
        private void AddExtraGlobalConfigData(GlobalConfigData configData)
        {
            // 更新TestflowHome字段
            string homeDir = Environment.GetEnvironmentVariable(CommonConst.EnvironmentVariable);

            if (null != homeDir && !homeDir.EndsWith(Path.DirectorySeparatorChar.ToString()))
            {
                homeDir += Path.DirectorySeparatorChar;
            }
            configData.AddConfigItem(Constants.GlobalConfig, "TestflowHome", homeDir);

            // 更新WorkspaceDir字段

            // 更新.NET运行时目录
            string dotNetVersion    = configData.GetConfigValue <string>(Constants.GlobalConfig, "DotNetVersion");
            string runtimeDirectory = GetDotNetDir(dotNetVersion);

            configData.AddConfigItem(Constants.GlobalConfig, "DotNetLibDir", runtimeDirectory);

            // 更新.NET安装根目录
            string dotNetRootDir = GetDotNetRootDir();

            configData.AddConfigItem(Constants.GlobalConfig, "DotNetRootDir", dotNetRootDir);

            // 更新Testflow平台默认库目录
            string platformDir = configData.GetConfigValue <string>(Constants.GlobalConfig, "PlatformLibDir");
            string libDir      = $"{homeDir}{platformDir}";

            if (libDir.EndsWith(Path.DirectorySeparatorChar.ToString()))
            {
                libDir += Path.DirectorySeparatorChar;
            }
            configData.SetConfigItem(Constants.GlobalConfig, "PlatformLibDir", libDir);

            // 更新Testflow工作空间目录
            string workspaceDirs = Environment.GetEnvironmentVariable(CommonConst.WorkspaceVariable);

            if (string.IsNullOrWhiteSpace(workspaceDirs) || !Directory.Exists(workspaceDirs))
            {
                TestflowRunner.GetInstance().LogService.Print(LogLevel.Fatal, CommonConst.PlatformLogSession,
                                                              $"Invalid environment variable:{CommonConst.WorkspaceVariable}");
                I18N i18N = I18N.GetInstance(Constants.I18nName);
                throw new TestflowRuntimeException(ModuleErrorCode.InvalidEnvDir, i18N.GetStr("InvalidHomeVariable"));
            }
            string[]      workSpaceDirElems = workspaceDirs.Split(';');
            List <string> workspaceDirList  = new List <string>(workSpaceDirElems.Length);

            foreach (string workSpaceDir in workSpaceDirElems)
            {
                if (string.IsNullOrWhiteSpace(workSpaceDir))
                {
                    continue;
                }
                string dirPath = workSpaceDir;
                if (!workSpaceDir.EndsWith(Path.DirectorySeparatorChar.ToString()))
                {
                    dirPath += Path.DirectorySeparatorChar;
                }
                workspaceDirList.Add(dirPath);
            }
            configData.SetConfigItem(Constants.GlobalConfig, "WorkspaceDir", workspaceDirList.ToArray());
        }