public bool StartTestGeneration() { _testsMaintainer.StartHost(_sequenceData); ISequenceManager sequenceManager = _globalInfo.TestflowRunner.SequenceManager; if (_sequenceData is ITestProject) { ITestProject testProject = _sequenceData as ITestProject; _testsMaintainer.SendRmtGenMessage(CoreConstants.TestProjectSessionId, sequenceManager.RuntimeSerialize(testProject)); foreach (ISequenceGroup sequenceGroup in testProject.SequenceGroups) { _testsMaintainer.SendRmtGenMessage(ModuleUtils.GetSessionId(testProject, sequenceGroup), sequenceManager.RuntimeSerialize(sequenceGroup)); } } else { _testsMaintainer.SendRmtGenMessage(0, sequenceManager.RuntimeSerialize(_sequenceData as ISequenceGroup)); } // 等待远程生成结束 _blockHandle.Timeout = _globalInfo.ConfigData.GetProperty <int>("TestGenTimeout"); bool isNotTimeout = _blockHandle.Wait(Constants.RmtGenState); if (!isNotTimeout) { _globalInfo.LogService.Print(LogLevel.Error, CommonConst.PlatformLogSession, "Test generation timeout."); _globalInfo.StateMachine.State = RuntimeState.Timeout; throw new TestflowRuntimeException(ModuleErrorCode.OperationTimeout, _globalInfo.I18N.GetStr("TestGenTimeout")); } // 如果是异常状态则返回false return(_globalInfo.StateMachine.State < RuntimeState.Abort); }
public void StartTestGeneration() { _testsMaintainer.StartHost(); ISequenceManager sequenceManager = _globalInfo.TestflowRunner.SequenceManager; if (_sequenceData is ITestProject) { ITestProject testProject = _sequenceData as ITestProject; _testsMaintainer.SendTestGenMessage(CoreConstants.TestProjectSessionId, sequenceManager.RuntimeSerialize(testProject)); foreach (ISequenceGroup sequenceGroup in testProject.SequenceGroups) { _testsMaintainer.SendTestGenMessage(ModuleUtils.GetSessionId(testProject, sequenceGroup), sequenceManager.RuntimeSerialize(sequenceGroup)); } // 初始化每个模块的监听变量 foreach (int session in _testsMaintainer.TestContainers.Keys) { _debugManager?.SendInitBreakPointMessage(session); } } else { _testsMaintainer.SendTestGenMessage(0, sequenceManager.RuntimeSerialize(_sequenceData as ISequenceGroup)); _debugManager?.SendInitBreakPointMessage(0); } // 等待远程生成结束 _blockHandle.Wait(Constants.RmtGenState); }
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(); }
// 使用TypeDescription信息更新VariableTypes和Class中的ClassType信息 public static void ValidateComDescription(ISequenceManager sequenceManager, ComInterfaceDescription description, DescriptionDataTable descriptionCollection) { int componentId = description.ComponentId; foreach (ITypeDescription typeDescription in description.TypeDescriptions) { ITypeData classType = GetTypeDataByDescription(sequenceManager, descriptionCollection, typeDescription); description.VariableTypes.Add(classType); if (null != typeDescription.Enumerations) { description.Enumerations.Add(GetFullName(typeDescription), typeDescription.Enumerations); } } description.TypeDescriptions.Clear(); description.TypeDescriptions = null; ((List <ITypeData>)description.VariableTypes).TrimExcess(); foreach (ClassInterfaceDescription classDescription in description.Classes) { ITypeData classType = GetTypeDataByDescription(sequenceManager, descriptionCollection, classDescription.ClassTypeDescription); classDescription.ClassType = classType; classDescription.ClassTypeDescription = null; } ((List <IClassInterfaceDescription>)description.Classes).TrimExcess(); I18N i18N = I18N.GetInstance(Constants.I18nName); foreach (IClassInterfaceDescription classDescription in description.Classes) { foreach (IFuncInterfaceDescription functionDescription in classDescription.Functions) { // 配置实例属性配置方法和静态属性配置方法的描述信息 if (functionDescription.FuncType == FunctionType.InstancePropertySetter) { functionDescription.Description = i18N.GetStr("InstancePropertySetter"); } else if (functionDescription.FuncType == FunctionType.StaticPropertySetter) { functionDescription.Description = i18N.GetStr("StaticPropertySetter"); } foreach (IArgumentDescription argumentDescription in functionDescription.Arguments) { InitializeArgumentType(sequenceManager, descriptionCollection, argumentDescription); } ((List <IArgumentDescription>)functionDescription.Arguments).TrimExcess(); functionDescription.ClassType = classDescription.ClassType; if (null != functionDescription.Return) { InitializeArgumentType(sequenceManager, descriptionCollection, functionDescription.Return); } } } }
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; }
public Control(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory) { ControlConfig = config.Configs[CONTROL_CONFIG]; IConfig commonConfig = config.Configs["Common"]; if (ControlConfig == null) { ControlConfig = config.Configs[0]; } if (commonConfig == null) { commonConfig = config.Configs[0]; } _toggleGlow = ControlConfig.GetDouble("ToggleGlow", .15); _fade = ControlConfig.GetDouble("Fade", .8); _defaultRecordingName = ControlConfig.Get("DefaultSequenceName", "Sequence"); _defaultTopologyName = ControlConfig.Get("DefaultTopologyName", "Topology"); _multiNumber = ControlConfig.GetInt("MultiSendNumber", 10); _multiSendDelay = ControlConfig.GetInt("MultiSendDelay", 750); _wait = commonConfig.GetInt("Wait", 50); _factory = primFactory; _record = MakeRecord(ControlConfig, tableFactory, queueFactory, primFactory); _topology = MakeTopology(ControlConfig); _permissions = MakePermissions(tableFactory, config); _state = MakeState(tableFactory, config); _model = Record.Make <IModel>(model, false); string tableName = ControlConfig.Get(TABLE_KEY, null); int tableCount = ControlConfig.GetInt(TABLE_COUNT, 1); _tables = new List <RoutingTable>(); if (tableName != null && tableCount > 1) { for (int i = 1; i <= tableCount; i++) { _tables.Add(new RoutingTable(Factory.MakeButton(tableName + i, Permissions), this, Factory)); } } else if (tableName != null) { _tables.Add(new RoutingTable(Factory.MakeButton(tableName, Permissions), this, Factory)); } _tables.Add(new RoutingTable(Factory.MakeButton(ControlConfig.Get(TABLE_HUD_KEY, "TableDisplayHUD"), Permissions), this, Factory)); Logger.Info("Control started."); }
public static ITypeData GetTypeDataByDescription(ISequenceManager sequenceManager, DescriptionDataTable descriptionCollection, ITypeDescription typeDescription) { string classFullName = GetFullName(typeDescription); ITypeData classType; if (!descriptionCollection.ContainsType(classFullName)) { classType = sequenceManager.CreateTypeData(typeDescription); descriptionCollection.AddTypeData(classFullName, classType); } else { classType = descriptionCollection.GetTypeData(classFullName); } return(classType); }
public ParameterCheckerTest() { #region 创建并初始化假的TestFlowRunner Type runnerType = typeof(TestflowRunner); //默认options TestflowRunnerOptions option = new TestflowRunnerOptions(); //创建假的TestFlowRunner FakeTestflowRunner fakeTestflowRunner = new FakeTestflowRunner(option); Type intType = typeof(int); //用反射将获取private fieldInfo,然后赋值fake FieldInfo fieldInfo = runnerType.GetField("_runnerInst", BindingFlags.Static | BindingFlags.NonPublic); fieldInfo.SetValue(null, fakeTestflowRunner); fakeTestflowRunner.Initialize(); #endregion _parameterChecker = fakeTestflowRunner.ParameterChecker; _sequenceManager = fakeTestflowRunner.SequenceManager; _interfaceManager = fakeTestflowRunner.ComInterfaceManager; }
public SequenceCreator() { TestflowRunner testflowRunner = TestflowRunner.GetInstance(); _sequenceManager = testflowRunner.SequenceManager; IComInterfaceManager interfaceManager = testflowRunner.ComInterfaceManager; Type testClassType = typeof(CoreTestClass); string location = testClassType.Assembly.Location; IComInterfaceDescription interfaceDescription = interfaceManager.GetComponentInterface(location); Type intType = typeof(int); _intTypeData = interfaceManager.GetTypeByName(intType.Name, intType.Namespace); Type testCallBackType = typeof(CallBackClass); //同一个程序集,不需要再一次加载component //location = testClassType.Assembly.Location; //interfaceDescription = interfaceManager.GetComponentInterface(location); _testClassTypeData = interfaceManager.GetTypeByName(testClassType.Name, testClassType.Namespace); _testCallBackTypeData = interfaceManager.GetTypeByName(testCallBackType.Name, testCallBackType.Namespace); }
public void SetModuleTask(ISequenceManager Seq) { m_IModuleTask = Seq; m_TraceService = (ITraceData)m_IModuleTask.GetService(typeof(ITraceData)); }