protected virtual void OnTraceState(TraceInfo traceInfo, ExecuteState state, ExecuteResult result = null) { _ = traceInfo ?? throw new ArgumentNullException(nameof(traceInfo)); traceInfo.State = state; traceInfo.Result = result; traceService.TraceState(traceInfo); }
/// <summary> /// 执行步骤 /// </summary> private static void ExecuteStep() { NTP request = null; switch (CurrentExecuteState) { case ExecuteState.SetInvalidType: //获取控制器类型 request = NTPBuildRequest.GetControllerTypeRequest(); SendCommand(request); break; case ExecuteState.SetOver: //单步完成 发送 发送完毕 指令 request = NTPBuildRequest.GetSendOverRequest(); SendCommand(request); break; case ExecuteState.SetState: //发送请求指令 如果没有请求 结束 if (CurrentNTPList != null && CurrentNTPList.Count > 0) { request = CurrentNTPList[0]; SendCommand(request); } else { CurrentFinishState = FinishState.Succeessed; CurrentExecuteState = ExecuteState.Untreated; } break; } }
/// <summary> /// Execute a fraction of the iterations for a profile. /// </summary> /// <typeparam name="T">The profile type.</typeparam> /// <param name="state">The execution state.</param> private static void ExecutePartial <T>(object state) where T : IProfile, new() { ExecuteState asExecute = state as ExecuteState; T profile = new T(); Stopwatch watch = new Stopwatch(); for (int warmup = asExecute.Iterations / 10; warmup > 0; warmup--) { profile.Execute(watch); } bool valid = false; for (int i = 0; i < asExecute.Iterations; i++) { try { watch.Restart(); valid = profile.Execute(watch); watch.Stop(); } catch { valid = false; } if (valid) { asExecute.Total += watch.ElapsedTicks; asExecute.Count++; } asExecute.Valid = asExecute.Valid && valid; } }
private void PushToMainThread(ExecuteState state) { lock (cmdList) { cmdList.Add(state); } }
void InitializeControlState() { if (PmsService.Instance.CurrentUser.Group.Name == "检测") { // BindMeasurementControl(); _ExecuteReportControlState = new ExecuteState(); _ExecuteReportControlState.Enter(this); } if (PmsService.Instance.CurrentUser.Group.Name == "评审") { //BindMeasurementControl(); //BindAuditControl(); _ExecuteReportControlState = new AuditState(); _ExecuteReportControlState.Enter(this); } if (PmsService.Instance.CurrentUser.Group.Name == "审批") { // BindMeasurementControl(); //BindAuditControl(); //BindApproveControl(); _ExecuteReportControlState = new ApproveState(); _ExecuteReportControlState.Enter(this); } }
// This is the method that the underlying, free-threaded asynchronous behavior will invoke. // This will happen on an arbitrary thread. private void ExecuteAsyncCallback(ExecuteState state, IClientHttpResponse response, Exception exception) { // Package the results of the operation ClientHttpRequestCompletedEventArgs eventArgs = new ClientHttpRequestCompletedEventArgs(response, exception, this.isCancelled, state.AsyncOperation.UserSuppliedState); ExecuteCallbackArgs <ClientHttpRequestCompletedEventArgs> callbackArgs = new ExecuteCallbackArgs <ClientHttpRequestCompletedEventArgs>(eventArgs, state.ExecuteCompleted); // End the task. The asyncOp object is responsible for marshaling the call. state.AsyncOperation.PostOperationCompleted(ExecuteResponseReceived, callbackArgs); }
public override bool Execute() { InstrumentationArguments = InstrumentationArguments ?? new string [0]; if (string.IsNullOrEmpty(NUnit2TestResultsFile)) { var n = new StringBuilder("TestResult-").Append(Component); foreach (var c in Path.GetInvalidFileNameChars()) { n.Replace(c, '_'); } n.Append(".xml"); NUnit2TestResultsFile = n.ToString(); } Log.LogMessage(MessageImportance.Low, $"Task {nameof (RunInstrumentationTests)}"); Log.LogMessage(MessageImportance.Low, $" {nameof (AdbTarget)}: {AdbTarget}"); Log.LogMessage(MessageImportance.Low, $" {nameof (AdbOptions)}: {AdbOptions}"); Log.LogMessage(MessageImportance.Low, $" {nameof (Component)}: {Component}"); Log.LogMessage(MessageImportance.Low, $" {nameof (InstrumentationArguments)}:"); foreach (var a in InstrumentationArguments) { Log.LogMessage(MessageImportance.Low, $" {a}:"); } Log.LogMessage(MessageImportance.Low, $" {nameof (NUnit2TestResultsFile)}: {NUnit2TestResultsFile}"); Log.LogMessage(MessageImportance.Low, $" {nameof (LogcatFilename)}: {LogcatFilename}"); Log.LogMessage(MessageImportance.Low, $" {nameof (TestFixture)}: {TestFixture}"); executionState = ExecuteState.RunInstrumentation; base.Execute(); if (string.IsNullOrEmpty(targetTestResultsPath)) { FailedToRun = Component; Log.LogError( "Could not find NUnit2 results file after running component `{0}`: " + "no `nunit2-results-path` bundle value found in command output!", Component); // Can return false once we use MSBuild and not xbuild // return false; return(true); } executionState = ExecuteState.PullFiles; base.Execute(); using (logcatWriter = File.Exists(LogcatFilename) ? File.AppendText(LogcatFilename) : File.CreateText(LogcatFilename)) { executionState = ExecuteState.GetLogcat; base.Execute(); } return(!Log.HasLoggedErrors); }
private void OnPartTask(object i_Obj) { BeginInvoke(new MessageHanlderDelegate(i_O => { var task = i_O as Task; if (task == null) { return; } _ExecuteReportControlState = new ExecuteState(); _ExecuteReportControlState.Enter(this); _Task = task; _ExecutionManager = new ExecutionManager(_Task); _CurrentTemplate = task.Part; if (_CurrentTemplate == null) { return; } Mediator.Mediator.Instance.NotifyColleagues(Execution.TaskStarted, task); CreateReportModel(); BindingTextControls(); RefreshCommentControls(); if (PmsService.Instance.CurrentUser.Group.Name == "检测") { LblTester.Text = PmsService.Instance.CurrentUser.Name; LblTestDate.Text = DateTime.Now.ToLongDateString(); _ExecuteReportControlState = new ExecuteState(); _ExecuteReportControlState.Enter(this); } if (PmsService.Instance.CurrentUser.Group.Name == "评审") { BindMeasurementControl(); LblAuditor.Text = PmsService.Instance.CurrentUser.Name; LblAuditDate.Text = DateTime.Now.ToLongDateString(); _ExecuteReportControlState = new AuditState(); _ExecuteReportControlState.Enter(this); } if (PmsService.Instance.CurrentUser.Group.Name == "审批") { BindMeasurementControl(); BindAuditControl(); LblApprover.Text = PmsService.Instance.CurrentUser.Name; LblApproveDate.Text = DateTime.Now.ToLongDateString(); _ExecuteReportControlState = new ApproveState(); _ExecuteReportControlState.Enter(this); } }), i_Obj); }
/// <summary> /// 执行获取任务 /// </summary> /// <param name="type">控制器类型</param> /// <returns>NTP协议列表</returns> public static List <NTP> ExecuteGetTask(ControllerType type) { List <NTP> list = new List <NTP>(); try { logger.Debug("Start task to get!"); lock (SerialLocker) { if (CurrentExecuteState != ExecuteState.Untreated) { return(null); } CurrentContrllerType = type; CurrentNTPList = new List <NTP>(); CurrentExecuteState = ExecuteState.GetInvalidType; } while (true) { Thread.Sleep(100); lock (SerialLocker) { if (CurrentFinishState == FinishState.Succeessed) { logger.Debug("Successed"); list = CurrentNTPList; CurrentNTPList = null; CurrentFinishState = FinishState.Unfinished; break; } else if (CurrentFinishState == FinishState.Failed) { logger.Error("Failed"); list = null; CurrentNTPList = null; CurrentFinishState = FinishState.Unfinished; break; } } } } catch (Exception ex) { logger.Error(ex.Message, ex); } return(list); }
public void Init() { _screenshot = new EmguScreenshot("Screenshots/tetris_play_1.png", TimeSpan.Zero); _screenshot.OriginalImage = _screenshot.Image; var currentPiece = Tetrimino.S; var nextPiece = Tetrimino.L; var moves = new List <Move> { Move.Left, Move.Rotate, Move.Drop }; _agent = new TetrisAgent(_configMock.Object, _clockMock.Object, _quantizer, _executorMock.Object, _extractor, _boardExtractor, _screenExtractor, _search); _agent.GameState = new GameState(currentPiece, nextPiece); _analyzeState = new AnalyzeState(_agent, TimeSpan.Zero, currentPiece); _executeState = new ExecuteState(_agent, moves, new Piece(currentPiece)); }
/// <summary> /// 执行设置任务 /// </summary> /// <param name="list">NTP协议列表</param> /// <param name="type">控制器类型</param> /// <returns>是否成功</returns> public static bool ExecuteSetTask(List <NTP> list, ControllerType type) { bool resutl = false; try { logger.Debug("Start task to set!"); lock (SerialLocker) { if (CurrentExecuteState != ExecuteState.Untreated) { return(false); } CurrentContrllerType = type; CurrentNTPList = list; CurrentExecuteState = ExecuteState.SetInvalidType; } while (true) { Thread.Sleep(100); lock (SerialLocker) { if (CurrentFinishState == FinishState.Succeessed) { logger.Debug("successed"); resutl = true; CurrentFinishState = FinishState.Unfinished; break; } else if (CurrentFinishState == FinishState.Failed) { logger.Error("failed"); resutl = false; CurrentFinishState = FinishState.Unfinished; break; } } } } catch (Exception ex) { logger.Error(ex.Message, ex); } return(resutl); }
public override bool Execute() { InstrumentationArguments = InstrumentationArguments ?? new string [0]; if (string.IsNullOrEmpty(NUnit2TestResultsFile)) { var n = new StringBuilder("TestResult-").Append(Component); foreach (var c in Path.GetInvalidFileNameChars()) { n.Replace(c, '_'); } n.Append(".xml"); NUnit2TestResultsFile = n.ToString(); } Log.LogMessage(MessageImportance.Low, $"Task {nameof (RunInstrumentationTests)}"); Log.LogMessage(MessageImportance.Low, $" {nameof (AdbTarget)}: {AdbTarget}"); Log.LogMessage(MessageImportance.Low, $" {nameof (AdbOptions)}: {AdbOptions}"); Log.LogMessage(MessageImportance.Low, $" {nameof (Component)}: {Component}"); Log.LogMessage(MessageImportance.Low, $" {nameof (InstrumentationArguments)}:"); foreach (var a in InstrumentationArguments) { Log.LogMessage(MessageImportance.Low, $" {a}:"); } Log.LogMessage(MessageImportance.Low, $" {nameof (NUnit2TestResultsFile)}: {NUnit2TestResultsFile}"); Log.LogMessage(MessageImportance.Low, $" {nameof (TestFixture)}: {TestFixture}"); executionState = ExecuteState.RunInstrumentation; base.Execute(); if (string.IsNullOrEmpty(targetTestResultsPath)) { Log.LogError("No `nunit2-results-path` bundle value found in command output! Cannot find NUnit2 XML output!"); return(false); } executionState = ExecuteState.PullFiles; base.Execute(); Log.LogMessage(MessageImportance.Low, $" [Output] {nameof (NUnit2TestResultsFile)}: {NUnit2TestResultsFile}"); return(!Log.HasLoggedErrors); }
/// <summary> /// Execute a profile. /// </summary> /// <typeparam name="T">The profile type.</typeparam> /// <param name="iterations">The number of iterations.</param> /// <param name="meanElapsedMilliseconds"> /// The average elapsed time per iteration. /// </param> /// <returns>A value indicating whether or not the execution is valid.</returns> private static bool ExecuteGeneric <T>(int iterations, out double meanElapsedMilliseconds) where T : IProfile, new() { bool result = true; int dop = Environment.ProcessorCount; Thread[] executors = new Thread[dop]; ExecuteState[] states = new ExecuteState[dop]; int perExecutor = iterations / dop; int remainder = iterations % dop; for (int i = 0; i < dop; i++) { states[i] = new ExecuteState { Iterations = perExecutor + (--remainder > 0 ? 1 : 0), Count = 0L, Total = 0L, Valid = true }; executors[i] = new Thread(Profiler.ExecutePartial <T>); executors[i].Start(states[i]); } long total = 0L; long count = 0L; for (int i = 0; i < dop; i++) { executors[i].Join(); total += states[i].Total; count += states[i].Count; result = result && states[i].Valid; } meanElapsedMilliseconds = (double)total / TimeSpan.TicksPerMillisecond / count; return(result); }
private void ExecuteResponseCallback(IAsyncResult result) { ExecuteState state = (ExecuteState)result.AsyncState; IClientHttpResponse response = null; Exception exception = null; try { HttpWebResponse httpWebResponse = this.httpWebRequest.EndGetResponse(result) as HttpWebResponse; if (this.httpWebRequest.HaveResponse == true && httpWebResponse != null) { response = this.CreateClientHttpResponse(httpWebResponse); } } catch (Exception ex) { if (ex is ThreadAbortException || ex is StackOverflowException || ex is OutOfMemoryException) { throw; } exception = ex; // This exception can be raised with some status code // Try to retrieve the response from the error if (ex is WebException) { HttpWebResponse httpWebResponse = ((WebException)ex).Response as HttpWebResponse; if (httpWebResponse != null) { exception = null; response = this.CreateClientHttpResponse(httpWebResponse); } } } ExecuteAsyncCallback(state, response, exception); }
private void ExecuteRequestCallback(IAsyncResult result) { ExecuteState state = (ExecuteState)result.AsyncState; try { // Write using (Stream stream = this.httpWebRequest.EndGetRequestStream(result)) { this.body(stream); } // Read this.httpWebRequest.BeginGetResponse(ExecuteResponseCallback, state); } catch (Exception ex) { if (ex is ThreadAbortException || ex is StackOverflowException || ex is OutOfMemoryException) { throw; } ExecuteAsyncCallback(state, null, ex); } }
/// <summary> /// Execute this request asynchronously. /// </summary> /// <param name="state"> /// An optional user-defined object that is passed to the method invoked /// when the asynchronous operation completes. /// </param> /// <param name="executeCompleted"> /// The <see cref="Action{ClientHttpRequestCompletedEventArgs}"/> to perform when the asynchronous execution completes. /// </param> /// <see cref="InvalidOperationException">If the request is already executed or is currently executing.</see> public void ExecuteAsync(object state, Action <ClientHttpRequestCompletedEventArgs> executeCompleted) { this.EnsureNotExecuted(); AsyncOperation asyncOperation = AsyncOperationManager.CreateOperation(state); ExecuteState executeState = new ExecuteState(executeCompleted, asyncOperation); try { // Prepare this.PrepareForExecution(); // Post request if (this.body != null) { this.httpWebRequest.BeginGetRequestStream(ExecuteRequestCallback, executeState); } else { // Get request this.HttpWebRequest.BeginGetResponse(ExecuteResponseCallback, executeState); } } catch (Exception ex) { if (ex is ThreadAbortException || ex is StackOverflowException || ex is OutOfMemoryException) { throw; } ExecuteAsyncCallback(executeState, null, ex); } finally { this.isExecuted = true; } }
/// <summary> /// 执行设置指令 /// </summary> private static void ExecuteSet(NTP ntp) { switch (ntp.PState) { case NTPState.Successed: switch (CurrentExecuteState) { case ExecuteState.SetState: //移除已经发送的指令 等待巡检 发送 发送完毕 CurrentExecuteState = ExecuteState.SetOver; break; case ExecuteState.SetOver: //等待巡检 发送下一条指令 if (CurrentNTPList != null && CurrentNTPList.Count > 0) { CurrentNTPList.RemoveAt(0); } if (CurrentNTPList != null && CurrentNTPList.Count > 0) { CurrentExecuteState = ExecuteState.SetState; } else { CurrentFinishState = FinishState.Succeessed; CurrentExecuteState = ExecuteState.Untreated; } break; } break; case NTPState.Failed: if (ErrorMaxCount <= 0) //暂未使用 { CurrentExecuteState = ExecuteState.Untreated; CurrentFinishState = FinishState.Failed; logger.Error("控制器验证错误数量太多!"); } break; case NTPState.Normal: switch (ntp.Command) { case CommandType.MachineTypeResponose: //控制器类型 if (CheckIsValidType(ntp)) { logger.Debug("machine type matched!"); CurrentExecuteState = ExecuteState.SetState; NTP request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); } else { CurrentExecuteState = ExecuteState.Untreated; CurrentFinishState = FinishState.Failed; logger.Error("machine type unmatched!"); } break; case CommandType.Patrol: //巡检 ExecuteStep(); break; } break; } }
/// <summary> /// 执行获取指令 /// </summary> private static void ExecuteGet(NTP ntp) { NTP request = null; switch (ntp.PState) { case NTPState.Successed: case NTPState.Failed: break; case NTPState.Normal: switch (ntp.Command) { case CommandType.MachineTypeResponose: //控制器类型 if (CheckIsValidType(ntp)) { logger.Debug("machine type matched!"); CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); } else { CurrentExecuteState = ExecuteState.Untreated; CurrentFinishState = FinishState.Failed; logger.Error("machine type unmatched!"); } break; case CommandType.Patrol: //巡检 break; case CommandType.Ready: //准备发送 logger.Debug("ready!"); CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.DeviceUp: //器件设置 logger.Debug("device up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.StandardUp: //标准组态 logger.Debug("Standard up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.MixedUp: //混合组态 logger.Debug("Mixed up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.GeneralUp: //通用组态 logger.Debug("General up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.ManualUp: //手控盘 logger.Debug("Manual up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.Over: //发送完毕 case CommandType.Over8003: logger.Debug("Get over!"); CurrentExecuteState = ExecuteState.Untreated; CurrentFinishState = FinishState.Succeessed; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; } break; } }
protected void OnExecuteBegin() { ++m_ExecuteTime; m_State = ExecuteState.Execute; }
private void OnPartReportSpecified(object i_Obj) { BeginInvoke(new Mediator.MessageHanlderDelegate(i_O => { var partReport = i_O as PartReport; if (partReport == null) { return; } _Task = partReport.Task; _PartReport = partReport; _CurrentTemplate = partReport.Task.Part; if (_CurrentTemplate == null) { return; } _DataSource = new List <ExecuteDimensionEntityViewModel>(); PmsService.Instance.PopulateDimensionsForReport(_PartReport); foreach (var en in _PartReport.Dimensions) { _DataSource.Add(new ExecuteDimensionEntityViewModel(en)); } if (_CurrentTemplate.Dimensions.Count > 0) { _SeletedDimension = _PartReport.Dimensions[0]; } dataGridView1.DataSource = _DataSource; btnCreateReport.Text = @"保存报告"; BindingTextControls(); // RefreshCommentControls(); if (PmsService.Instance.CurrentUser.Group.Name == "检测") { BindMeasurementControl(); LblTester.Text = PmsService.Instance.CurrentUser.Name; LblTestDate.Text = DateTime.Now.ToLongDateString(); _ExecuteReportControlState = new ExecuteState(); _ExecuteReportControlState.Enter(this); } if (PmsService.Instance.CurrentUser.Group.Name == "评审") { BindMeasurementControl(); BindAuditControl(); LblAuditor.Text = PmsService.Instance.CurrentUser.Name; LblAuditDate.Text = DateTime.Now.ToLongDateString(); _ExecuteReportControlState = new AuditState(); _ExecuteReportControlState.Enter(this); } if (PmsService.Instance.CurrentUser.Group.Name == "审批") { BindMeasurementControl(); BindAuditControl(); BindApproveControl(); LblApprover.Text = PmsService.Instance.CurrentUser.Name; LblApproveDate.Text = DateTime.Now.ToLongDateString(); _ExecuteReportControlState = new ApproveState(); _ExecuteReportControlState.Enter(this); } }), i_Obj); }
protected bool IsState(ExecuteState state) { return(_executeState == state); }
protected void SetState(ExecuteState state) { _executeState = state; _isStateEntryMode = true; }
protected void OnExecuteFinish() { m_State = ExecuteState.Idle; }