Esempio n. 1
0
 /// <summary>
 /// 创建日志服务实例
 /// </summary>
 public LogService()
 {
     if (null != _inst)
     {
         I18N i18N = I18N.GetInstance(Constants.I18NName);
         throw new TestflowRuntimeException(CommonErrorCode.InternalError, i18N.GetStr("InstAlreadyExist"));
     }
     lock (_instLock)
     {
         Thread.MemoryBarrier();
         if (null != _inst)
         {
             I18N i18N = I18N.GetInstance(Constants.I18NName);
             throw new TestflowRuntimeException(CommonErrorCode.InternalError, i18N.GetStr("InstAlreadyExist"));
         }
         _runtimeLogSessions = new Dictionary <int, LocalLogSession>(Constants.DefaultLogStreamSize);
         I18NOption i18NOption = new I18NOption(this.GetType().Assembly, "i18n_logger_zh", "i18n_logger_en")
         {
             Name = Constants.I18NName
         };
         _i18N         = I18N.GetInstance(i18NOption);
         _testflowInst = TestflowRunner.GetInstance();
         _context      = _testflowInst.Context;
         _inst         = this;
     }
 }
Esempio n. 2
0
 private void RefreshUsedAssemblies(IAssemblyInfoCollection assemblies, HashSet <string> usedAssembly)
 {
     for (int i = assemblies.Count - 1; i >= 0; i--)
     {
         if (usedAssembly.Contains(assemblies[i].AssemblyName))
         {
             continue;
         }
         assemblies.RemoveAt(i);
     }
     foreach (string assemblyName in usedAssembly)
     {
         IAssemblyInfo assemblyInfo = assemblies.FirstOrDefault(item => item.AssemblyName.Equals(assemblyName));
         if (null != assemblyInfo)
         {
             continue;
         }
         assemblyInfo = _comInterfaceManager.GetAssemblyInfo(assemblyName);
         if (null == assemblyInfo)
         {
             ILogService logService = TestflowRunner.GetInstance().LogService;
             logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, 0,
                              $"Unloaded assembly '{assemblyName}' used.");
             I18N i18N = I18N.GetInstance(Constants.I18nName);
             throw new TestflowDataException(ModuleErrorCode.TypeDataError,
                                             i18N.GetFStr("InvalidAssemblyUsed", assemblyName));
         }
         assemblies.Add(assemblyInfo);
     }
 }
Esempio n. 3
0
        public IClassInterfaceDescription GetClassDescriptionByType(ITypeData typeData, out IAssemblyInfo assemblyInfo)
        {
            string assemblyName = typeData.AssemblyName;
            ComInterfaceDescription    interfaceDescription = _descriptionData.GetComDescription(assemblyName);
            IClassInterfaceDescription classDescription     = null;

            // 如果该类型描述已存在则直接返回
            if (interfaceDescription != null &&
                null != (classDescription = interfaceDescription.Classes.FirstOrDefault(item => item.ClassType.Equals(typeData))))
            {
                assemblyInfo = interfaceDescription.Assembly;
                return(classDescription);
            }
            string path, version;

            classDescription = _loaderManager.GetClassDescription(typeData, _descriptionData, out path, out version);

            assemblyInfo = GetAssemblyInfo(assemblyName);
            TestflowRunner testflowRunner;

            if (null == assemblyInfo && null != (testflowRunner = TestflowRunner.GetInstance()))
            {
                assemblyInfo              = testflowRunner.SequenceManager.CreateAssemblyInfo();
                assemblyInfo.Path         = path;
                assemblyInfo.Version      = version;
                assemblyInfo.AssemblyName = assemblyName;
                assemblyInfo.Available    = true;
                _descriptionData.Add(assemblyInfo);
            }
            return(classDescription);
        }
Esempio n. 4
0
        private void StartLauncher(object param)
        {
            string configStr        = (string)param;
            Type   launcherType     = typeof(AppDomainTestLauncher);
            string launcherFullName = $"{launcherType.Namespace}.{launcherType.Name}";

            try
            {
                _appDomain.Load(launcherType.Assembly.GetName());
                AppDomainTestLauncher launcherInstance = (AppDomainTestLauncher)_appDomain.CreateInstanceFromAndUnwrap(
                    launcherType.Assembly.Location, launcherFullName, false, BindingFlags.Instance | BindingFlags.Public,
                    null,
                    new object[] { configStr }, CultureInfo.CurrentCulture, null);
                launcherInstance.Start();
            }
            catch (ThreadAbortException ex)
            {
                ILogService logService = TestflowRunner.GetInstance().LogService;
                logService.Print(LogLevel.Warn, CommonConst.PlatformLogSession, "Appdomain thread aborted.");
            }
            catch (Exception ex)
            {
                ILogService logService = TestflowRunner.GetInstance().LogService;
                logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, ex, "Exception raised in appdomain thread.");
            }
        }
        private void SetAssemblyAbsolutePath(ExpressionTypeData typeData, List <string> availableDirs)
        {
            string        path      = typeData.AssemblyPath;
            StringBuilder pathCache = new StringBuilder(200);

            // 如果文件名前面有分隔符则去掉
            while (path.StartsWith(Path.DirectorySeparatorChar.ToString()))
            {
                path = path.Substring(1, path.Length - 1);
            }
            // 转换为绝对路径时反向寻找,先.net库再平台库再用户库
            for (int i = availableDirs.Count - 1; i >= 0; i--)
            {
                pathCache.Clear();
                string availableDir = availableDirs[i];
                pathCache.Append(availableDir).Append(path);
                // 如果库存在则配置为绝对路径,然后返回
                if (File.Exists(pathCache.ToString()))
                {
                    typeData.AssemblyPath = pathCache.ToString();
                    return;
                }
            }
            TestflowRunner.GetInstance().LogService.Print(LogLevel.Fatal, CommonConst.PlatformLogSession,
                                                          $"Assembly of type:{typeData.ClassName} cannot be located.");
            I18N i18N = I18N.GetInstance(Constants.I18nName);

            throw new TestflowRuntimeException(ModuleErrorCode.ConfigDataError,
                                               i18N.GetFStr("InvalidCalculator", typeData.ClassName));
        }
Esempio n. 6
0
 public void RuntimeInitialize()
 {
     if (_dataMaintainer == null)
     {
         _dataMaintainer = TestflowRunner.GetInstance().DataMaintainer;
     }
 }
Esempio n. 7
0
        static ValueConvertor()
        {
            _convertorHandler = new Dictionary <string, Func <string, object> >(12)
            {
                { typeof(string).Name, (valueStr) => valueStr },
                { typeof(int).Name, (valueStr) => int.Parse(valueStr) },
                { typeof(uint).Name, (valueStr) => uint.Parse(valueStr) },
                { typeof(short).Name, (valueStr) => short.Parse(valueStr) },
                { typeof(ushort).Name, (valueStr) => ushort.Parse(valueStr) },
                { typeof(long).Name, (valueStr) => long.Parse(valueStr) },
                { typeof(ulong).Name, (valueStr) => ulong.Parse(valueStr) },
                { typeof(double).Name, (valueStr) => double.Parse(valueStr) },
                { typeof(byte).Name, (valueStr) => byte.Parse(valueStr) },
                { typeof(char).Name, (valueStr) => char.Parse(valueStr) },
                { typeof(bool).Name, (valueStr) => bool.Parse(valueStr) },
                { typeof(DateTime).Name, (valueStr) => DateTime.Parse(valueStr) }
            };

            #region 记录
            IComInterfaceManager     _interfaceManager = TestflowRunner.GetInstance().ComInterfaceManager;
            IComInterfaceDescription comDescription    = _interfaceManager.GetComInterfaceByName("mscorlib");
            _valueTypes = new HashSet <ITypeData>();
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Boolean")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Double")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Single")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Int64")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("UInt64")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Int32")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Int16")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("UInt16")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Char")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Byte")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("String")));
            #endregion
        }
Esempio n. 8
0
        public void CallBackWithParameters()
        {
            ITestProject   testProjectData = _sequenceCreator.GetCallBackTestProjectData2();
            TestflowRunner runnerInstance  = TestflowRunner.GetInstance();

            runnerInstance.EngineController.SetSequenceData(testProjectData);
            runnerInstance.EngineController.Start();
        }
Esempio n. 9
0
        public void SequenceGroupSequentialTest()
        {
            ITestProject   testProjectData = _sequenceCreator.GetSequencialTestProjectData();
            TestflowRunner runnerInstance  = TestflowRunner.GetInstance();

            runnerInstance.EngineController.SetSequenceData(testProjectData.SequenceGroups[0]);
            runnerInstance.EngineController.Start();
        }
Esempio n. 10
0
        private void LogAndThrowExpressionError(string logMessage, int errorCode, string errorLabel, params string[] extraParams)
        {
            TestflowRunner runnerInstance = TestflowRunner.GetInstance();
            I18N           i18N           = I18N.GetInstance(Constants.I18nName);

            runnerInstance.LogService.Print(LogLevel.Error, CommonConst.PlatformLogSession, logMessage);
            throw new TestflowDataException(errorCode, i18N.GetFStr(errorLabel, extraParams));
        }
Esempio n. 11
0
 private void RegisterFailedInfoConvertion()
 {
     TestflowRunner.GetInstance().DataMaintainer.RegisterTypeConvertor(
         typeof(IFailedInfo),
         value => value?.ToString() ?? string.Empty,
         valueStr => string.IsNullOrWhiteSpace(valueStr) ? null : new FailedInfo(valueStr)
         );
 }
Esempio n. 12
0
 public ModuleGlobalInfo(IModuleConfigData configData)
 {
     TestflowRunner        = TestflowRunner.GetInstance();
     this.I18N             = I18N.GetInstance(Constants.I18nName);
     this.LogService       = TestflowRunner.LogService;
     this.ConfigData       = configData;
     this.ExceptionManager = new ExceptionManager(LogService);
     this.RuntimeHash      = ModuleUtils.GetRuntimeHash(configData.GetProperty <Encoding>("PlatformEncoding"));
 }
Esempio n. 13
0
        public void SequenceTest()
        {
            TestflowRunner   runnerInstance  = TestflowRunner.GetInstance();
            ISequenceManager sequenceManager = runnerInstance.SequenceManager;
            ISequenceGroup   sequenceGroup   = sequenceManager.LoadSequenceGroup(SerializationTarget.File,
                                                                                 @"C:\Users\jingtao\Desktop\sequence.tfseq");

            runnerInstance.EngineController.SetSequenceData(sequenceGroup);
            runnerInstance.EngineController.Start();
        }
Esempio n. 14
0
        private void ThrowIfVariableNotFound(string variableName, ISequenceFlowContainer parent)
        {
            ILogService logService = TestflowRunner.GetInstance().LogService;

            logService.Print(LogLevel.Warn, CommonConst.PlatformLogSession, 0,
                             $"Undeclared variable '{0}' in sequence '{parent.Name}'");
            I18N i18N = I18N.GetInstance(Constants.I18nName);

            throw new TestflowDataException(ModuleErrorCode.VariableError,
                                            i18N.GetFStr("UndeclaredVariable", variableName, parent.Name));
        }
Esempio n. 15
0
        public DescriptionLoaderManager()
        {
            _loaderDomain = AppDomain.CreateDomain(Constants.AppDomainName);
//            _loaderDomain.Load()
            Type loaderType = typeof(AssemblyDescriptionLoader);

//            _loaderName = $"{loaderType.Namespace}.{loaderType.Name}";
            _assemblyFullName = loaderType.Assembly.Location;
            _loaderName       = loaderType.FullName;
            _loader           = (AssemblyDescriptionLoader)_loaderDomain.CreateInstanceFromAndUnwrap(_assemblyFullName, _loaderName);
            _sequenceManager  = TestflowRunner.GetInstance().SequenceManager;
        }
Esempio n. 16
0
        public void Dispose()
        {
            TestflowRunner runner = TestflowRunner.GetInstance();

            runner.LogService?.Dispose();
            runner.ComInterfaceManager?.Dispose();
            runner.SequenceManager?.Dispose();
            runner.DataMaintainer?.Dispose();
            runner.EngineController?.Dispose();
            runner.ParameterChecker?.Dispose();
            runner.ResultManager?.Dispose();
        }
Esempio n. 17
0
        public void RuntimeInitialize()
        {
            GlobalConfigData globalConfigData = Initialize();
            TestflowRunner   testflowRunner   = TestflowRunner.GetInstance();

            this.ApplyConfig(globalConfigData.GetGlobalConfigData());
            testflowRunner.DataMaintainer.ApplyConfig(globalConfigData.GetModuleConfigData(Constants.DataMaintain));
            testflowRunner.EngineController.ApplyConfig(globalConfigData.GetModuleConfigData(Constants.EngineConfig));
            testflowRunner.SequenceManager.ApplyConfig(globalConfigData.GetModuleConfigData(Constants.SequenceManage));
            testflowRunner.ResultManager.ApplyConfig(globalConfigData.GetModuleConfigData(Constants.ResultManage));

            globalConfigData.Dispose();
        }
Esempio n. 18
0
        public void Initialize()
        {
            TestflowRunner runner = TestflowRunner.GetInstance();

            runner.LogService.RuntimeInitialize();
            //动态启用ComInterfaceManager再说吧
            //runner.ComInterfaceManager.RuntimeInitialize();
            runner.SequenceManager.RuntimeInitialize();
            runner.DataMaintainer.RuntimeInitialize();
            runner.EngineController.RuntimeInitialize();
            runner.ResultManager?.RuntimeInitialize();
            _sequenceManager  = TestflowRunner.GetInstance().SequenceManager;
            _engineController = TestflowRunner.GetInstance().EngineController;
        }
Esempio n. 19
0
        public void Initialize()
        {
            TestflowRunner runner = TestflowRunner.GetInstance();

            runner.LogService.DesigntimeInitialize();
            runner.ComInterfaceManager.DesigntimeInitialize();
            runner.SequenceManager.DesigntimeInitialize();
            runner.DataMaintainer.DesigntimeInitialize();
            runner.EngineController.DesigntimeInitialize();
            runner.ResultManager?.DesigntimeInitialize();
            runner.ParameterChecker?.DesigntimeInitialize();
            _sequenceManager  = TestflowRunner.GetInstance().SequenceManager;
            _interfaceManager = TestflowRunner.GetInstance().ComInterfaceManager;
        }
Esempio n. 20
0
 private static void ReleaseXmlWriter(XmlWriter writer)
 {
     try
     {
         writer?.Flush();
         writer?.Close();
     }
     catch (IOException ex)
     {
         ILogService logService = TestflowRunner.GetInstance().LogService;
         logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, 0, ex, ex.Message);
         throw new TestflowRuntimeException(ModuleErrorCode.SerializeFailed, ex.Message, ex);
     }
 }
Esempio n. 21
0
        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);
        }
Esempio n. 22
0
        public static SequenceGroup ReadSequenceGroup(string filePath)
        {
            if (!filePath.EndsWith($".{CommonConst.SequenceFileExtension}"))
            {
                I18N i18N = I18N.GetInstance(Constants.I18nName);
                throw new TestflowDataException(ModuleErrorCode.InvalidFileType, i18N.GetStr("InvalidFileType"));
            }
            XmlReader reader = null;

            try
            {
                reader = CreateXmlReader(filePath);
                Dictionary <string, Type> typeMapping = GetTypeMapping();
                // 找到TestProject节点后跳出
                while (reader.Read())
                {
                    if (XmlNodeType.Element != reader.NodeType)
                    {
                        continue;
                    }
                    if (typeof(SequenceGroup).Name.Equals(reader.Name))
                    {
                        break;
                    }
                }
                SequenceGroup sequenceGroup = new SequenceGroup();
                FillDataToObject(reader, sequenceGroup, typeMapping);
                return(sequenceGroup);
            }
            catch (ArgumentException ex)
            {
                ILogService logService = TestflowRunner.GetInstance().LogService;
                logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, 0, ex);
                throw new TestflowDataException(ModuleErrorCode.DeSerializeFailed, ex.Message, ex);
            }
            catch (IOException ex)
            {
                ILogService logService = TestflowRunner.GetInstance().LogService;
                logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, 0, ex);
                throw new TestflowRuntimeException(ModuleErrorCode.DeSerializeFailed, ex.Message, ex);
            }
            finally
            {
                reader?.Close();
            }
        }
Esempio n. 23
0
 private static void RollBackFilesIfFailed(IList <string> fileList)
 {
     foreach (string file in fileList)
     {
         if (File.Exists(file))
         {
             try
             {
                 File.Delete(file);
             }
             catch (IOException ex)
             {
                 ILogService logService = TestflowRunner.GetInstance().LogService;
                 logService.Print(LogLevel.Warn, CommonConst.PlatformLogSession, 0, ex, "Roll back file failed.");
             }
         }
     }
 }
Esempio n. 24
0
        static TypeChecker()
        {
            IComInterfaceManager     _interfaceManager = TestflowRunner.GetInstance().ComInterfaceManager;
            IComInterfaceDescription comDescription    = _interfaceManager.GetComInterfaceByName("mscorlib");

            _valueTypes = new HashSet <ITypeData>();
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Boolean")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Double")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Single")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Int64")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("UInt64")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Int32")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Int16")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("UInt16")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Char")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("Byte")));
            _valueTypes.Add(comDescription.VariableTypes.FirstOrDefault(item => item.Name.Equals("String")));
        }
Esempio n. 25
0
 private static XmlReader CreateXmlReader(string filePath)
 {
     try
     {
         XmlReaderSettings settings = new XmlReaderSettings();
         settings.CloseInput     = true;
         settings.IgnoreComments = true;
         settings.IgnoreProcessingInstructions = true;
         settings.IgnoreWhitespace             = true;
         return(XmlReader.Create(filePath, settings));
     }
     catch (IOException ex)
     {
         ILogService logService = TestflowRunner.GetInstance().LogService;
         logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, 0, ex, ex.Message);
         throw new TestflowRuntimeException(ModuleErrorCode.SerializeFailed, ex.Message, ex);
     }
 }
Esempio n. 26
0
        public string GetAbsolutePath(string path)
        {
            if (!IsRelativePath(path))
            {
                return(path);
            }
            string abosolutePath = InternalGetAbosolutePath(path);

            if (null == abosolutePath)
            {
                ILogService logService = TestflowRunner.GetInstance().LogService;
                logService.Print(LogLevel.Error, CommonConst.PlatformLogSession,
                                 $"File in relative path '{path}' cannot be found.");
                I18N i18N = I18N.GetInstance(Constants.I18nName);
                throw new TestflowDataException(ModuleErrorCode.DeSerializeFailed,
                                                i18N.GetFStr("FileCannotFound", path));
            }
            return(abosolutePath);
        }
Esempio n. 27
0
        private void CheckPropertyDescription(ITypeData typeData, string property)
        {
            if (null != _loader.Exception)
            {
                return;
            }
            I18N        i18N       = I18N.GetInstance(Constants.I18nName);
            ILogService logService = TestflowRunner.GetInstance().LogService;

            switch (_loader.ErrorCode)
            {
            case ModuleErrorCode.LibraryLoadError:
                logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, _loader.Exception,
                                 $"Assembly '{typeData.AssemblyName}' load error.");
                throw new TestflowRuntimeException(ModuleErrorCode.LibraryLoadError,
                                                   i18N.GetStr("RuntimeError"));
                break;

            case ModuleErrorCode.PropertyNotFound:
                logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, _loader.Exception,
                                 $"Property '{property}' of type '{typeData.Name}' does not exist.");
                throw new TestflowRuntimeException(ModuleErrorCode.PropertyNotFound,
                                                   i18N.GetFStr("PropertyNotFound", typeData.Name, property));
                break;

            case ModuleErrorCode.TypeCannotLoad:
                logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, _loader.Exception,
                                 $"Type '{typeData.Name}' does not exist.");
                throw new TestflowRuntimeException(ModuleErrorCode.TypeCannotLoad,
                                                   i18N.GetFStr("TypeNotFound", typeData.Name));
                break;

            case ModuleErrorCode.AssemblyNotLoad:
                logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, _loader.Exception,
                                 $"Assemly '{typeData.AssemblyName}' does not exist.");
                throw new TestflowRuntimeException(ModuleErrorCode.AssemblyNotLoad,
                                                   i18N.GetFStr("AssemblyNotLoad", typeData.AssemblyName));
                break;

            default:
                break;
            }
        }
Esempio n. 28
0
        public IList <IComInterfaceDescription> GetComponentInterfaces(string directory)
        {
            if (!Directory.Exists(directory))
            {
                TestflowRunner.GetInstance().LogService.Print(LogLevel.Warn, CommonConst.PlatformLogSession,
                                                              $"Directory '{directory}' does not exist.");
                return(new List <IComInterfaceDescription>(0));
            }
            DirectoryInfo directoryInfo = new DirectoryInfo(directory);

            FileInfo[] fileInfos = directoryInfo.GetFiles(Constants.LibFileFilter);
            List <IComInterfaceDescription> descriptions = new List <IComInterfaceDescription>(fileInfos.Length);

            foreach (FileInfo fileInfo in fileInfos)
            {
                descriptions.Add(GetComponentInterface(fileInfo.FullName));
            }
            return(descriptions);
        }
Esempio n. 29
0
 private static void SetParameterToSequenceData(ISequence sequenece, ISequenceParameter parameter)
 {
     for (int i = 0; i < sequenece.Variables.Count; i++)
     {
         IVariable variable = sequenece.Variables[i];
         if (!variable.Name.Equals(parameter.VariableValues[i].Name))
         {
             ILogService logService = TestflowRunner.GetInstance().LogService;
             logService.Print(LogLevel.Warn, CommonConst.PlatformLogSession, 0,
                              $"Variable{variable.Name} {sequenece.Name} value in parameter data is invalid.");
             I18N i18N = I18N.GetInstance(Constants.I18nName);
             throw new TestflowDataException(ModuleErrorCode.UnmatchedParameter, i18N.GetStr("UnmatchedData"));
         }
         variable.Value = parameter.VariableValues[i].Value;
     }
     for (int i = 0; i < sequenece.Steps.Count; i++)
     {
         SetParameterToSequenceData(sequenece.Steps[i], parameter.StepParameters[i]);
     }
 }
Esempio n. 30
0
        private static XmlWriter CreateXmlWriter(string filePath)
        {
            XmlWriterSettings settings = new XmlWriterSettings()
            {
                Async        = false,
                Indent       = true,
                IndentChars  = "    ",
                NewLineChars = Environment.NewLine
            };

            try
            {
                return(XmlWriter.Create(filePath, settings));
            }
            catch (IOException ex)
            {
                ILogService logService = TestflowRunner.GetInstance().LogService;
                logService.Print(LogLevel.Error, CommonConst.PlatformLogSession, 0, ex, ex.Message);
                throw new TestflowRuntimeException(ModuleErrorCode.SerializeFailed, ex.Message, ex);
            }
        }