public override void BusinessFlowEnd(uint eventTime, BusinessFlow businessFlow, bool offlineMode = false) { mContext.BusinessFlow = businessFlow; Object BFR = mExecutionLogger.SetReportBusinessFlow(mContext, offlineMode, ExecutedFrom, this.Configuration.ExecutionLoggerConfigurationIsEnabled); if (this.Configuration.ExecutionLoggerConfigurationIsEnabled) { if (this.ExecutedFrom == Amdocs.Ginger.Common.eExecutedFrom.Automation) { this.ExecutionLogBusinessFlowsCounter = 0; mExecutionLogger.ExecutionLogBusinessFlowsCounter = 0; this.BFCounter = 0; } } if (!offlineMode) { ExecutionProgressReporterListener.AddExecutionDetailsToLog(ExecutionProgressReporterListener.eExecutionPhase.End, GingerDicser.GetTermResValue(eTermResKey.BusinessFlow), businessFlow.Name, BFR); } }
// fix add to listener/loader class public override void ActivityStart(uint eventTime, Activity activity, bool continuerun = false) { mCurrentActivity = activity; if (this.Configuration.ExecutionLoggerConfigurationIsEnabled) { string ActivityFolder = string.Empty; if ((this.ExecutedFrom == Amdocs.Ginger.Common.eExecutedFrom.Automation) && (Configuration.ExecutionLoggerAutomationTabContext == ExecutionLoggerConfiguration.AutomationTabContext.ActivityRun)) { mExecutionLogger.ExecutionLogfolder = mExecutionLogger.SetExecutionLogFolder(mExecutionLogger.ExecutionLogfolder, true); Configuration.ExecutionLoggerAutomationTabContext = ExecutionLoggerConfiguration.AutomationTabContext.None; } else if ((Configuration.ExecutionLoggerAutomationTabContext == ExecutionLoggerConfiguration.AutomationTabContext.ContinueRun)) { mExecutionLogger.ExecutionLogfolder = mExecutionLogger.SetExecutionLogFolder(mExecutionLogger.ExecutionLogfolder, false); Configuration.ExecutionLoggerAutomationTabContext = ExecutionLoggerConfiguration.AutomationTabContext.None; mCurrentBusinessFlow.ExecutionLogActivityCounter++; ActivityFolder = Path.Combine(mCurrentBusinessFlow.ExecutionLogFolder, mCurrentBusinessFlow.ExecutionLogActivityCounter + " " + folderNameNormalazing(activity.ActivityName)); } else { if (this.ExecutedFrom == eExecutedFrom.Run && continuerun == false) { mCurrentBusinessFlow.ExecutionLogActivityCounter++; } else if (this.ExecutedFrom == eExecutedFrom.Automation && continuerun == false) { mCurrentBusinessFlow.ExecutionLogActivityCounter++; } ActivityFolder = Path.Combine(mCurrentBusinessFlow.ExecutionLogFolder, mCurrentBusinessFlow.ExecutionLogActivityCounter + " " + folderNameNormalazing(activity.ActivityName)); } activity.ExecutionLogFolder = mExecutionLogger.GetLogFolder(ActivityFolder); mExecutionLogger.CreateNewDirectory(Path.Combine(mExecutionLogger.ExecutionLogfolder, ActivityFolder)); activity.VariablesBeforeExec = activity.Variables.Select(a => a.Name + "_:_" + a.Value + "_:_" + a.Description).ToList(); } ExecutionProgressReporterListener.AddExecutionDetailsToLog(ExecutionProgressReporterListener.eExecutionPhase.Start, GingerDicser.GetTermResValue(eTermResKey.Activity), activity.ActivityName, null); }
public void RunSetStart(string execResultsFolder, long maxFolderSize, DateTime currentExecutionDateTime, bool offline = false) { RunSetReport = new RunSetReport(); if ((WorkSpace.Instance.RunsetExecutor.RunSetConfig.Name != null) && (WorkSpace.Instance.RunsetExecutor.RunSetConfig.Name != string.Empty)) { RunSetReport.Name = WorkSpace.Instance.RunsetExecutor.RunSetConfig.Name; } else { RunSetReport.Name = defaultRunTabLogName; } RunSetReport.Description = WorkSpace.Instance.RunsetExecutor.RunSetConfig.Description; RunSetReport.GUID = WorkSpace.Instance.RunsetExecutor.RunSetConfig.Guid.ToString(); RunSetReport.StartTimeStamp = DateTime.Now.ToUniversalTime(); RunSetReport.Watch.Start(); mExecutionLogger.SetRunsetFolder(execResultsFolder, maxFolderSize, currentExecutionDateTime, offline); if (!offline) { ExecutionProgressReporterListener.AddExecutionDetailsToLog(ExecutionProgressReporterListener.eExecutionPhase.Start, GingerDicser.GetTermResValue(eTermResKey.RunSet), WorkSpace.Instance.RunsetExecutor.RunSetConfig.Name, null); } }
public override void BusinessFlowStart(uint eventTime, BusinessFlow businessFlow, bool ContinueRun = false) { mCurrentBusinessFlow = businessFlow; if (this.Configuration.ExecutionLoggerConfigurationIsEnabled) { this.BFCounter++; string BFFolder = string.Empty; this.ExecutionLogBusinessFlowsCounter++; mExecutionLogger.ExecutionLogBusinessFlowsCounter++; switch (this.ExecutedFrom) { case Amdocs.Ginger.Common.eExecutedFrom.Automation: //if (Configuration.ExecutionLoggerAutomationTabContext == ExecutionLoggerConfiguration.AutomationTabContext.BussinessFlowRun) // Not Sure why it is added, not working at some points, removing it for now //{ mExecutionLogger.ExecutionLogfolder = executionLoggerHelper.GetLoggerDirectory(mExecutionLogger.ExecutionLogfolder); executionLoggerHelper.CleanDirectory(mExecutionLogger.ExecutionLogfolder); // } break; case Amdocs.Ginger.Common.eExecutedFrom.Run: if (ContinueRun == false) { BFFolder = BFCounter + " " + folderNameNormalazing(businessFlow.Name); } break; default: BFFolder = BFCounter + " " + folderNameNormalazing(businessFlow.Name); break; } businessFlow.VariablesBeforeExec = businessFlow.Variables.Select(a => a.Name + "_:_" + a.Value + "_:_" + a.Description).ToList(); businessFlow.SolutionVariablesBeforeExec = businessFlow.GetSolutionVariables().Select(a => a.Name + "_:_" + a.Value + "_:_" + a.Description).ToList(); businessFlow.ExecutionLogFolder = BFFolder; mExecutionLogger.CreateNewDirectory(Path.Combine(Configuration.CalculatedLoggerFolder, BFFolder)); ExecutionProgressReporterListener.AddExecutionDetailsToLog(ExecutionProgressReporterListener.eExecutionPhase.Start, GingerDicser.GetTermResValue(eTermResKey.BusinessFlow), businessFlow.Name, null); } }
// fix public override void ActionEnd(uint eventTime, Act action, bool offlineMode = false) { // if user set special action log in output if (action.EnableActionLogConfig) { if (mGingerRunnerLogger == null) { string loggerFile = Path.Combine(mExecutionLogger.ExecutionLogfolder, FileSystem.AppendTimeStamp("GingerLog.txt")); mGingerRunnerLogger = new GingerRunnerLogger(loggerFile); } mGingerRunnerLogger.LogAction(action); } Activity currentActivity = null; try { string executionLogFolder = string.Empty; //if offline mode then execution logger path exists in action object so making executionLogFolder empty to avoid duplication of path. if (!offlineMode) { executionLogFolder = mExecutionLogger.ExecutionLogfolder; } //ActionReport AR = new ActionReport(action, mContext); //if action call the Shared actvity then mContext.Activity and mCurrentActivity will be different,so keeping the shared activity in temp variable if (mContext.Activity != mCurrentActivity) { currentActivity = mContext.Activity; } mContext.Activity = mCurrentActivity; Object AR = null; if (this.Configuration.ExecutionLoggerConfigurationIsEnabled) { AR = mExecutionLogger.SetReportAction(action, mContext, this.ExecutedFrom, offlineMode); // // Defects Suggestion section (to be considered to remove to separate function) // if (action.Status == Amdocs.Ginger.CoreNET.Execution.eRunStatus.Failed) { if (WorkSpace.Instance.RunsetExecutor.DefectSuggestionsList.Where(z => z.FailedActionGuid == action.Guid).ToList().Count > 0) { return; } // ActivitiesGroup currrentGroup = mContext.BusinessFlow.ActivitiesGroups.Where(x => x.Name == mCurrentActivity.ActivitiesGroupID).FirstOrDefault(); string currrentGroupName = string.Empty; if (currrentGroup != null) { currrentGroupName = currrentGroup.Name; } // List <string> screenShotsPathes = new List <string>(); bool isScreenshotButtonEnabled = false; if ((action.ScreenShots != null) && (action.ScreenShots.Count > 0)) { screenShotsPathes = action.ScreenShots.ToList(); isScreenshotButtonEnabled = true; } // bool automatedOpeningFlag = false; if (action.FlowControls.Where(x => x.FlowControlAction == eFlowControlAction.FailureIsAutoOpenedDefect && action.Status == Amdocs.Ginger.CoreNET.Execution.eRunStatus.Failed).ToList().Count > 0) { automatedOpeningFlag = true; } // OMG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // StringBuilder description = new StringBuilder(); description.Append("<html><body><b>" + this.GingerData.GingerName + "<b><br>"); description.Append("<div><ul style='list - style - type:circle'><li><b>" + mContext.BusinessFlow.Name + " (failed)<b></li>"); if (currrentGroupName != string.Empty) { description.Append("<ul style = 'list - style - type:square'>"); this.mCurrentBusinessFlow.ActivitiesGroups.ToList().TakeWhile(x => x.Name != mCurrentActivity.ActivitiesGroupID).ToList().ForEach(r => { description.Append("<li>" + r.Name + "</li>"); }); description.Append("<li><b>" + currrentGroupName + " (failed)<b></li>"); description.Append("<ul style = 'list - style - type:upper-roman'>"); this.mCurrentBusinessFlow.Activities.Where(x => currrentGroup.ActivitiesIdentifiers.Select(z => z.ActivityGuid).ToList().Contains(x.Guid)).ToList().TakeWhile(x => x.Guid != mCurrentActivity.Guid).ToList().ForEach(r => { description.Append("<li>" + r.ActivityName + "</li>"); }); description.Append("<li><b>" + mCurrentActivity.ActivityName + " (failed)<b></li>"); description.Append("<ul style = 'list - style - type:disc'>"); mCurrentActivity.Acts.TakeWhile(x => x.Guid != action.Guid).ToList().ForEach(r => { description.Append("<li>" + r.Description + "</li>"); }); description.Append("<li><b><font color='#ff0000'b>" + action.Description + " (failed)</font><b></li></li></li></li></ul></ul></ul></ul></div></body></html>"); } else { description.Append("<ul style = 'list - style - type:upper-roman'>"); mContext.BusinessFlow.Activities.TakeWhile(x => x.Guid != mCurrentActivity.Guid).ToList().ForEach(r => { description.Append("<li>" + r.ActivityName + "</li>"); }); description.Append("<li><b>" + mCurrentActivity.ActivityName + " (failed)<b></li>"); description.Append("<ul style = 'list - style - type:disc'>"); mCurrentActivity.Acts.TakeWhile(x => x.Guid != action.Guid).ToList().ForEach(r => { description.Append("<li>" + r.Description + "</li>"); }); description.Append("<li><b><font color='#ff0000'b>" + action.Description + " (failed)</font><b></li></li></li></li></ul></ul></ul></div></body></html>"); } if (GingerData.GingerName == null) { GingerData.GingerName = ""; } WorkSpace.Instance.RunsetExecutor.DefectSuggestionsList.Add(new DefectSuggestion(action.Guid, this.GingerData.GingerName, mContext.BusinessFlow.Name, currrentGroupName, mContext.BusinessFlow.ExecutionLogActivityCounter, mCurrentActivity.ActivityName, mCurrentActivity.ExecutionLogActionCounter, action.Description, action.RetryMechanismCount, action.Error, action.ExInfo, screenShotsPathes, isScreenshotButtonEnabled, automatedOpeningFlag, description.ToString())); } // // Defects Suggestion section - end // } if (!offlineMode) { ExecutionProgressReporterListener.AddExecutionDetailsToLog(ExecutionProgressReporterListener.eExecutionPhase.End, "Action", string.Format("{0} (ID:{1}, ParentID:{2})", action.Description, action.Guid, action.ExecutionParentGuid), AR); } } catch (Exception ex) { Reporter.ToLog(eLogLevel.ERROR, "Exception occurred in ExecutionLogger Action end", ex); } finally { if (currentActivity != null) { mContext.Activity = currentActivity; } } }
public override void ActionStart(uint eventTime, Act action) { SetActionFolder(action); ExecutionProgressReporterListener.AddExecutionDetailsToLog(ExecutionProgressReporterListener.eExecutionPhase.Start, "Action", string.Format("{0} (ID:{1}, ParentID:{2})", action.Description, action.Guid, action.ExecutionParentGuid), null); }
public override void ActivityGroupStart(uint eventTime, ActivitiesGroup activityGroup) { activityGroup.StartTimeStamp = eventTime; // DateTime.Now.ToUniversalTime(); ExecutionProgressReporterListener.AddExecutionDetailsToLog(ExecutionProgressReporterListener.eExecutionPhase.Start, GingerDicser.GetTermResValue(eTermResKey.ActivitiesGroup), string.Format("{0} (ID:{1}, ParentID:{2})", activityGroup.Name, activityGroup.Guid, activityGroup.ExecutionParentGuid), null); }
public override void ActionStart(uint eventTime, Act action) { SetActionFolder(action); ExecutionProgressReporterListener.AddExecutionDetailsToLog(ExecutionProgressReporterListener.eExecutionPhase.Start, "Action", action.Description, null); }
public override void ActivityGroupStart(uint eventTime, ActivitiesGroup activityGroup) { activityGroup.StartTimeStamp = eventTime; // DateTime.Now.ToUniversalTime(); ExecutionProgressReporterListener.AddExecutionDetailsToLog(ExecutionProgressReporterListener.eExecutionPhase.Start, GingerDicser.GetTermResValue(eTermResKey.ActivitiesGroup), activityGroup.Name, null); }