Example #1
0
        private void AddExtraDataMaintainConfigData(GlobalConfigData globalConfigData)
        {
            string databaseName = globalConfigData.GetConfigValue <string>(Constants.DataMaintain, "DatabaseName");
            string testflowHome = globalConfigData.GetConfigValue <string>(Constants.GlobalConfig, "TestflowHome");
            string dataDirPath  = $"{testflowHome}{CommonConst.DataDir}";

            if (!Directory.Exists(dataDirPath))
            {
                Directory.CreateDirectory(dataDirPath);
            }
            string databaseFilePath =
                $"{testflowHome}{CommonConst.DataDir}{Path.DirectorySeparatorChar}{databaseName}";

            globalConfigData.SetConfigItem(Constants.DataMaintain, "DatabaseName", databaseFilePath);
        }
        private ExpressionOperatorConfiguration GetExpressionTokens(GlobalConfigData globalConfigData, ConfigDataLoader dataLoader)
        {
            string testflowHome         = globalConfigData.GetConfigValue <string>(Constants.GlobalConfig, "TestflowHome");
            string expressionConfigFile = $"{testflowHome}{CommonConst.DeployDir}{Path.DirectorySeparatorChar}expressionconfig.xml";
            ExpressionOperatorConfiguration expressionTokens = dataLoader.LoadExpressionTokens(expressionConfigFile);

            // 有效化ExpressTokens
            ValidateExpressionTokens(globalConfigData, expressionTokens);
            return(expressionTokens);
        }
        private void ValidateExpressionTokens(GlobalConfigData configData, ExpressionOperatorConfiguration expressionTokens)
        {
            List <string> availableDirs = new List <string>(5);

            availableDirs.AddRange(configData.GetConfigValue <string[]>(Constants.GlobalConfig, "WorkspaceDir"));
            availableDirs.Add(configData.GetConfigValue <string>(Constants.GlobalConfig, "PlatformLibDir"));
            availableDirs.Add(configData.GetConfigValue <string>(Constants.GlobalConfig, "DotNetLibDir"));
            availableDirs.Add(configData.GetConfigValue <string>(Constants.GlobalConfig, "DotNetRootDir"));

            string calculatorName = string.Empty;

            try
            {
                foreach (ExpressionCalculatorInfo calculatorInfo in expressionTokens.Calculators)
                {
                    // 获取表达式计算类的对象
                    SetAssemblyAbsolutePath(calculatorInfo.CalculatorClass, availableDirs);
                    SetAssemblyAbsolutePath(calculatorInfo.SourceType, availableDirs);
                    if (null != calculatorInfo.ArgumentsType)
                    {
                        foreach (ExpressionTypeData argumentTypeInfo in calculatorInfo.ArgumentsType)
                        {
                            SetAssemblyAbsolutePath(argumentTypeInfo, availableDirs);
                        }
                    }
                }
            }
            catch (TestflowException)
            {
                throw;
            }
            catch (ApplicationException ex)
            {
                TestflowRunner.GetInstance().LogService.Print(LogLevel.Fatal, CommonConst.PlatformLogSession, ex,
                                                              $"Invalid expression token {calculatorName}");
                throw new TestflowRuntimeException(ModuleErrorCode.ConfigDataError,
                                                   ex.Message, ex);
            }
        }
Example #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());
        }