private async Task SendDataOnActionEndTask(Act action) { AccountReportAction accountReportAction = AccountReportEntitiesDataMapping.MapActionEndData(action, mContext); await AccountReportApiHandler.SendScreenShotsToCentralDBAsync((Guid)WorkSpace.Instance.RunsetExecutor.RunSetConfig.ExecutionID, action.ScreenShots.ToList()); await AccountReportApiHandler.SendActionExecutionDataToCentralDBAsync(accountReportAction, true); }
public static AccountReportAction MapActionStartData(GingerCore.Actions.Act action, Context context) { action.ExecutionId = Guid.NewGuid(); // check incase of retry / flow control AccountReportAction accountReportAction = new AccountReportAction(); if (context.BusinessFlow.CurrentActivity != null) { accountReportAction.Seq = context.BusinessFlow.CurrentActivity.ExecutionLogActionCounter; action.ParentExecutionId = context.BusinessFlow.CurrentActivity.ExecutionId; } else { accountReportAction.Seq = 1; } accountReportAction.Id = action.ExecutionId; accountReportAction.EntityId = action.Guid; accountReportAction.AccountReportDbActivityId = action.ParentExecutionId; accountReportAction.ExecutionId = (Guid)WorkSpace.Instance.RunsetExecutor.RunSetConfig.ExecutionID; accountReportAction.Name = action.Description; accountReportAction.ActionType = action.ActionType; accountReportAction.Description = action.Description; accountReportAction.RunDescription = GetCalculatedValue(context, action.RunDescription); //must pass also BF to VE accountReportAction.Environment = ((GingerExecutionEngine)context.Runner).GingerRunner.ProjEnvironment.Name; accountReportAction.EnvironmentId = ((GingerExecutionEngine)context.Runner).GingerRunner.ProjEnvironment.Guid; accountReportAction.StartTimeStamp = action.StartTimeStamp; accountReportAction.InputValues = GetInputValues(action); accountReportAction.CurrentRetryIteration = action.RetryMechanismCount; accountReportAction.Wait = Convert.ToInt32(action.Wait); accountReportAction.TimeOut = action.Timeout; accountReportAction.RunStatus = _InProgressStatus; return(accountReportAction); }
public static AccountReportAction MapActionEndData(GingerCore.Actions.Act action, Context context) { AccountReportAction accountReportAction = new AccountReportAction(); List <string> newScreenShotsList = new List <string>(); accountReportAction.Id = action.ExecutionId; accountReportAction.EntityId = action.Guid; accountReportAction.AccountReportDbActivityId = action.ParentExecutionId; accountReportAction.ExecutionId = (Guid)WorkSpace.Instance.RunsetExecutor.RunSetConfig.ExecutionID; accountReportAction.Name = action.Description; accountReportAction.EndTimeStamp = action.EndTimeStamp; accountReportAction.ElapsedEndTimeStamp = action.Elapsed; accountReportAction.RunStatus = action.Status.ToString(); accountReportAction.OutputValues = action.ReturnValues.Select(a => a.Param + "_:_" + a.Actual + "_:_" + a.ExpectedCalculated + "_:_" + a.Status).ToList(); accountReportAction.FlowControls = action.FlowControls.Select(a => a.Condition + "_:_" + a.ConditionCalculated + "_:_" + a.FlowControlAction + "_:_" + a.Status).ToList(); accountReportAction.Error = action.Error; accountReportAction.ExInfo = action.ExInfo; foreach (string screenshot in action.ScreenShots) { string newScreenshotPath = WorkSpace.Instance.RunsetExecutor.RunSetConfig.ExecutionID.ToString() + "/" + Path.GetFileName(screenshot); newScreenShotsList.Add(newScreenshotPath); } accountReportAction.ScreenShots = newScreenShotsList; return(accountReportAction); }
public async Task SendActionExecutionDataToCentralDBAsync(AccountReportAction accountReportAction, bool isUpdate = false) { if (restClient != null) { string message = string.Format("execution data to Central DB for the Action:'{0}' (Execution Id:'{1}', Parent Activity Id:'{2}')", accountReportAction.Name, accountReportAction.Id, accountReportAction.AccountReportDbActivityId); try { bool responseIsSuccess = await SendRestRequestAndGetResponse(SEND_ACTION_EXECUTION_DATA, accountReportAction, isUpdate).ConfigureAwait(false); if (responseIsSuccess) { Reporter.ToLog(eLogLevel.DEBUG, "Successfully sent " + message); } else { Reporter.ToLog(eLogLevel.ERROR, "Failed to send " + message); } } catch (Exception ex) { Reporter.ToLog(eLogLevel.ERROR, "Exception when sending " + message, ex); } } }
private async Task ActionStartTask(Act action) { AccountReportAction accountReportAction = AccountReportEntitiesDataMapping.MapActionStartData(action, mContext); await AccountReportApiHandler.SendActionExecutionDataToCentralDBAsync(accountReportAction); }