public AccountReportRunSet MapDataToAccountReportObject(LiteDbRunSet runSet) { AccountReportRunSet accountReportRunSet = new AccountReportRunSet(); var config = new MapperConfiguration(cfg => { cfg.CreateMap <LiteDbReportBase, AccountReportBase>().ForMember(dest => dest.ElapsedEndTimeStamp, src => src.MapFrom(x => x.Elapsed)).IncludeAllDerived(); cfg.CreateMap <LiteDbRunSet, AccountReportRunSet>().ForMember(dest => dest.ExecutedByUser, src => src.MapFrom(x => x.ExecutedbyUser)); cfg.CreateMap <LiteDbRunner, AccountReportRunner>(); cfg.CreateMap <LiteDbBusinessFlow, AccountReportBusinessFlow>(); cfg.CreateMap <LiteDbActivityGroup, AccountReportActivityGroup>(); cfg.CreateMap <LiteDbActivity, AccountReportActivity>(); cfg.CreateMap <LiteDbAction, AccountReportAction>(); //cfg.CreateMap<KeyValuePair<string, int>, AccountReport.Contracts.Helpers.DictObject>().ConvertUsing(x => cfg.CreateMap <KeyValuePair <string, int>, AccountReport.Contracts.Helpers.DictObject>() .ForMember(dest => dest.Key, src => src.MapFrom(x => x.Key)) .ForMember(dest => dest.Value, src => src.MapFrom(x => x.Value)); }); IMapper iMapper = config.CreateMapper(); var destination = iMapper.Map <LiteDbRunSet, AccountReportRunSet>(runSet); return(destination); }
public override void RunSetUpdate(ObjectId runSetLiteDbId, ObjectId runnerLiteDbId, GingerRunner gingerRunner) { LiteDbRunner runner = new LiteDbRunner(); runner.BusinessFlowsColl.AddRange(liteDbBFList); runner._id = runnerLiteDbId; runner.Seq = 1; runner.Name = "Automated Runner"; runner.ApplicationAgentsMappingList = gingerRunner.ApplicationAgents.Select(a => a.AgentName + "_:_" + a.AppName).ToList(); runner.Environment = gingerRunner.ProjEnvironment != null ? gingerRunner.ProjEnvironment.Name : string.Empty; runner.GUID = gingerRunner.Guid; if (gingerRunner.BusinessFlows.Count > 0) { runner.StartTimeStamp = gingerRunner.BusinessFlows[0].StartTimeStamp; runner.EndTimeStamp = gingerRunner.BusinessFlows[0].EndTimeStamp; runner.Elapsed = gingerRunner.BusinessFlows[0].Elapsed; } runner.RunStatus = (liteDbBFList.Count > 0) ? liteDbBFList[0].RunStatus : eRunStatus.Automated.ToString(); SaveObjToReporsitory(runner, liteDbManager.NameInDb <LiteDbRunner>()); liteDbBFList.Clear(); LiteDbRunSet runSet = new LiteDbRunSet(); runSet._id = runSetLiteDbId; base.SetReportRunSet(ExecutionLoggerManager.RunSetReport, ""); runSet.SetReportData(ExecutionLoggerManager.RunSetReport); runSet.RunnersColl.AddRange(new List <LiteDbRunner>() { runner }); SaveObjToReporsitory(runSet, liteDbManager.NameInDb <LiteDbRunSet>()); }
// TODO: Make this function to just generate the report folder !!! public LiteDbRunSet RunNewHtmlReport(string runSetGuid = null, WebReportFilter openObject = null, bool shouldDisplayReport = true) { LiteDbRunSet lightDbRunSet = new LiteDbRunSet(); bool response = false; try { string clientAppFolderPath = Path.Combine(WorkSpace.Instance.LocalUserApplicationDataFolderPath, "Reports", "Ginger-Web-Client"); if (!Directory.Exists(clientAppFolderPath)) { return(lightDbRunSet); } DeleteFoldersData(Path.Combine(clientAppFolderPath, "assets", "Execution_Data")); DeleteFoldersData(Path.Combine(clientAppFolderPath, "assets", "screenshots")); LiteDbManager dbManager = new LiteDbManager(new ExecutionLoggerHelper().GetLoggerDirectory(WorkSpace.Instance.Solution.LoggerConfigurations.CalculatedLoggerFolder)); lightDbRunSet = dbManager.GetLatestExecutionRunsetData(runSetGuid); PopulateMissingFields(lightDbRunSet, clientAppFolderPath); string json = Newtonsoft.Json.JsonConvert.SerializeObject(lightDbRunSet); response = RunClientApp(json, clientAppFolderPath, openObject, shouldDisplayReport); } catch (Exception ex) { Reporter.ToLog(eLogLevel.ERROR, "RunNewHtmlReport,error :" + ex.ToString()); } return(lightDbRunSet); }
// TODO: Make this function to just generate the report folder !!! public LiteDbRunSet RunNewHtmlReport(string reportResultsFolderPath = "", string runSetGuid = null, WebReportFilter openObject = null, bool shouldDisplayReport = true) { //Copy folder to reportResultsFolderPath or Execution logger string reportsResultFolder = string.Empty; if (!string.IsNullOrEmpty(reportResultsFolderPath)) { reportsResultFolder = reportResultsFolderPath; } else { HTMLReportsConfiguration currentConf = WorkSpace.Instance.Solution.HTMLReportsConfigurationSetList.Where(x => (x.IsSelected == true)).FirstOrDefault(); reportsResultFolder = Path.Combine(ExtensionMethods.GetReportDirectory(currentConf.HTMLReportsFolder), "Reports", "Ginger-Web-Client"); } try { string clientAppFolderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports", "Ginger-Web-Client"); Reporter.ToLog(eLogLevel.INFO, "Copying web report folder from: " + clientAppFolderPath); Reporter.ToLog(eLogLevel.INFO, "Copying web report folder to: " + reportsResultFolder); if (Directory.Exists(clientAppFolderPath)) { string rootFolder = Path.Combine(reportsResultFolder); if (Directory.Exists(rootFolder)) { IoHandler.Instance.TryFolderDelete(rootFolder); } IoHandler.Instance.CopyFolderRec(clientAppFolderPath, reportsResultFolder, true); } } catch (Exception ex) { Reporter.ToLog(eLogLevel.ERROR, "Check WebReportFolder Error: " + ex.Message, ex); } //get exeution data and replace LiteDbRunSet lightDbRunSet = new LiteDbRunSet(); bool response = false; try { if (!Directory.Exists(reportsResultFolder)) { return(lightDbRunSet); } IoHandler.Instance.DeleteFoldersData(Path.Combine(reportsResultFolder, "assets", "Execution_Data")); IoHandler.Instance.DeleteFoldersData(Path.Combine(reportsResultFolder, "assets", "screenshots")); LiteDbManager dbManager = new LiteDbManager(new ExecutionLoggerHelper().GetLoggerDirectory(WorkSpace.Instance.Solution.LoggerConfigurations.CalculatedLoggerFolder)); lightDbRunSet = dbManager.GetLatestExecutionRunsetData(runSetGuid); PopulateMissingFields(lightDbRunSet, reportsResultFolder); string json = Newtonsoft.Json.JsonConvert.SerializeObject(lightDbRunSet); response = RunClientApp(json, reportsResultFolder, openObject, shouldDisplayReport); } catch (Exception ex) { Reporter.ToLog(eLogLevel.ERROR, "RunNewHtmlReport,error :" + ex.ToString()); } return(lightDbRunSet); }
public override void SetReportRunSet(RunSetReport runSetReport, string logFolder) { LiteDbRunSet runSet = new LiteDbRunSet(); base.SetReportRunSet(runSetReport, logFolder); runSet.RunnersColl.AddRange(ExecutionLoggerManager.RunSetReport.liteDbRunnerList); runSet.SetReportData(runSetReport); SaveObjToReporsitory(runSet, liteDbManager.NameInDb <LiteDbRunSet>()); ExecutionLoggerManager.RunSetReport.liteDbRunnerList.Clear(); ClearSeq(); }
public void SetLiteDBData(LiteDbRunSet runSet) { GUID = runSet._id.ToString(); Name = runSet.Name; Description = runSet.Description; StartTimeStamp = runSet.StartTimeStamp; EndTimeStamp = runSet.EndTimeStamp; Elapsed = runSet.Elapsed; Amdocs.Ginger.CoreNET.Execution.eRunStatus myStatus; if (Enum.TryParse(runSet.RunStatus, out myStatus)) { RunSetExecutionStatus = myStatus; } }
public override async Task <bool> SendExecutionLogToCentralDBAsync(LiteDB.ObjectId runsetId, Guid executionId, eDeleteLocalDataOnPublish deleteLocalData) { //Get the latest execution details from LiteDB LiteDbManager dbManager = new LiteDbManager(new ExecutionLoggerHelper().GetLoggerDirectory(WorkSpace.Instance.Solution.LoggerConfigurations.CalculatedLoggerFolder)); LiteDbRunSet liteDbRunSet = dbManager.GetLatestExecutionRunsetData(runsetId?.ToString()); List <string> screenshotList = PopulateMissingFieldsAndGetScreenshotsList(liteDbRunSet, executionId); CentralExecutionLoggerHelper centralExecutionLogger = new CentralExecutionLoggerHelper(WorkSpace.Instance.Solution.LoggerConfigurations.CentralLoggerEndPointUrl); //Map the data to AccountReportRunset Object AccountReportRunSet accountReportRunSet = centralExecutionLogger.MapDataToAccountReportObject(liteDbRunSet); accountReportRunSet.ExecutionId = executionId; //Publish the Data and screenshots to Central DB await centralExecutionLogger.SendRunsetExecutionDataToCentralDBAsync(accountReportRunSet); await centralExecutionLogger.SendScreenShotsToCentralDBAsync(executionId, screenshotList); //Delete local data if configured if (deleteLocalData == eDeleteLocalDataOnPublish.Yes) { try { dbManager.DeleteDocumentByLiteDbRunSet(liteDbRunSet); } catch (Exception ex) { Reporter.ToLog(eLogLevel.ERROR, "Error when deleting local LiteDB data after Publis", ex); } foreach (string screenshot in screenshotList) { try { File.Delete(screenshot); } catch (Exception ex) { Reporter.ToLog(eLogLevel.DEBUG, "Deleting screenshots after published to central db", ex); } } } return(true); }
public override void SetReportRunSet(RunSetReport runSetReport, string logFolder) { LiteDbRunSet runSet = new LiteDbRunSet(); base.SetReportRunSet(runSetReport, logFolder); runSet.RunnersColl.AddRange(ExecutionLoggerManager.RunSetReport.liteDbRunnerList); runSet.SetReportData(runSetReport); SaveObjToReporsitory(runSet, liteDbManager.NameInDb <LiteDbRunSet>()); ExecutionLoggerManager.RunSetReport.liteDbRunnerList.Clear(); if (runSetReport.LogFolder != null && System.IO.Directory.Exists(runSetReport.LogFolder)) { System.IO.Directory.Delete(runSetReport.LogFolder, true); } ClearSeq(); }
private void GenerateBFReport(BusinessFlow bf) { try { LiteDbManager dbManager = new LiteDbManager(WorkSpace.Instance.SolutionRepository.ConvertSolutionRelativePath(WorkSpace.Instance.Solution.LoggerConfigurations.CalculatedLoggerFolder)); var result = dbManager.GetRunSetLiteData(); List <LiteDbRunSet> filterData = dbManager.FilterCollection(result, Query.All()); LiteDbRunSet runSetLast = filterData.Last(); //runSetLast._id = new ObjectId(); LiteDbRunner runnerFilter = runSetLast.RunnersColl.Find(r => r.GUID.ToString() == mRunner.Guid.ToString()); //runnerFilter._id = new ObjectId(); //runSetLast.RunnersColl = new List<LiteDbRunner>() { runnerFilter }; LiteDbBusinessFlow bfFilter = runnerFilter.BusinessFlowsColl.Find(b => b.GUID.ToString() == bf.Guid.ToString() && b.StartTimeStamp.ToString() == bf.StartTimeStamp.ToLocalTime().ToString()); if (bfFilter == null) { Reporter.ToUser(eUserMsgKey.BFNotExistInDB); return; } //runnerFilter.RunStatus = bfFilter.RunStatus; //runSetLast.RunStatus = runnerFilter.RunStatus; //runnerFilter.BusinessFlowsColl = new List<LiteDbBusinessFlow>() { bfFilter }; //dbManager.WriteToLiteDb(dbManager.NameInDb<LiteDbRunner>(), new List<LiteDbReportBase>() { runnerFilter }); //dbManager.WriteToLiteDb(dbManager.NameInDb<LiteDbRunSet>(), new List<LiteDbReportBase>() { runSetLast }); WebReportGenerator webReporterRunner = new WebReportGenerator(); webReporterRunner.RunNewHtmlReport(string.Empty, runSetLast._id.ToString(), new WebReportFilter() { Guid = bfFilter.GUID.ToString() }); //var newRSData = dbManager.GetRunSetLiteData(); //newRSData.Delete(runSetLast._id); //var newRunnerData = dbManager.GetRunnerLiteData(); //newRunnerData.Delete(runnerFilter._id); } catch (Exception ex) { } }
public override void SetReportRunSet(RunSetReport runSetReport, string logFolder) { LiteDbRunSet runSet = new LiteDbRunSet(); base.SetReportRunSet(runSetReport, logFolder); runSet.RunnersColl.AddRange(ExecutionLoggerManager.RunSetReport.liteDbRunnerList); SetRunSetChildCounts(runSet); runSet.SetReportData(runSetReport); ExecutionLoggerManager.RunSetReport.DataRepMethod = ExecutionLoggerConfiguration.DataRepositoryMethod.LiteDB; ExecutionLoggerManager.RunSetReport.RunSetExecutionStatus = (eRunStatus)Enum.Parse(typeof(eRunStatus), runSet.RunStatus); SaveObjToReporsitory(runSet, liteDbManager.NameInDb <LiteDbRunSet>()); ExecutionLoggerManager.RunSetReport.liteDbRunnerList.Clear(); ClearSeq(); }
private void SetRunSetChildCounts(LiteDbRunSet runSet) { int ChildExecutableItemsCountActivity = 0; int ChildExecutedItemsCountActivity = 0; int ChildPassedItemsCountActivity = 0; int ChildExecutableItemsCountAction = 0; int ChildExecutedItemsCountAction = 0; int ChildPassedItemsCountAction = 0; foreach (LiteDbRunner runner in runSet.RunnersColl) { int count = 0; runner.ChildExecutableItemsCount.TryGetValue(HTMLReportConfiguration.eExecutionStatisticsCountBy.Activities.ToString(), out count); ChildExecutableItemsCountActivity = ChildExecutableItemsCountActivity + count; runner.ChildExecutedItemsCount.TryGetValue(HTMLReportConfiguration.eExecutionStatisticsCountBy.Activities.ToString(), out count); ChildExecutedItemsCountActivity = ChildExecutedItemsCountActivity + count; runner.ChildPassedItemsCount.TryGetValue(HTMLReportConfiguration.eExecutionStatisticsCountBy.Activities.ToString(), out count); ChildPassedItemsCountActivity = ChildPassedItemsCountActivity + count; runner.ChildExecutableItemsCount.TryGetValue(HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions.ToString(), out count); ChildExecutableItemsCountAction = ChildExecutableItemsCountAction + count; runner.ChildExecutedItemsCount.TryGetValue(HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions.ToString(), out count); ChildExecutedItemsCountAction = ChildExecutedItemsCountAction + count; runner.ChildPassedItemsCount.TryGetValue(HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions.ToString(), out count); ChildPassedItemsCountAction = ChildPassedItemsCountAction + count; } runSet.ChildExecutableItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Activities.ToString(), ChildExecutableItemsCountActivity); runSet.ChildExecutedItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Activities.ToString(), ChildExecutedItemsCountActivity); runSet.ChildPassedItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Activities.ToString(), ChildPassedItemsCountActivity); runSet.ChildExecutableItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions.ToString(), ChildExecutableItemsCountAction); runSet.ChildExecutedItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions.ToString(), ChildExecutedItemsCountAction); runSet.ChildPassedItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions.ToString(), ChildPassedItemsCountAction); }
//TODO move it to utils class // Create test class private void PopulateMissingFields(LiteDbRunSet liteDbRunSet, string clientAppPath) { //select template HTMLReportConfiguration _HTMLReportConfig = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <HTMLReportConfiguration>().Where(x => (x.IsDefault == true)).FirstOrDefault(); //populate data based on level if (string.IsNullOrEmpty(_HTMLReportConfig.ExecutionStatisticsCountBy.ToString())) { _HTMLReportConfig.ExecutionStatisticsCountBy = HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions; } string imageFolderPath = Path.Combine(clientAppPath, "assets", "screenshots"); List <string> runSetEnv = new List <string>(); liteDbRunSet.ExecutionRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbRunSet.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbRunSet.ChildExecutableItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); liteDbRunSet.PassRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbRunSet.ChildPassedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbRunSet.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); if (liteDbRunSet.Elapsed.HasValue) { liteDbRunSet.Elapsed = Math.Round(liteDbRunSet.Elapsed.Value, 2); } foreach (LiteDbRunner liteDbRunner in liteDbRunSet.RunnersColl) { if (!runSetEnv.Contains(liteDbRunner.Environment)) { runSetEnv.Add(liteDbRunner.Environment); } liteDbRunner.ExecutionRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbRunner.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbRunner.ChildExecutableItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); liteDbRunner.PassRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbRunner.ChildPassedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbRunner.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); if (liteDbRunner.Elapsed.HasValue) { liteDbRunner.Elapsed = Math.Round(liteDbRunner.Elapsed.Value, 2); } else { liteDbRunner.Elapsed = 0; } foreach (LiteDbBusinessFlow liteDbBusinessFlow in liteDbRunner.BusinessFlowsColl) { liteDbBusinessFlow.ExecutionRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbBusinessFlow.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbBusinessFlow.ChildExecutableItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); liteDbBusinessFlow.PassRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbBusinessFlow.ChildPassedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbBusinessFlow.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); if (liteDbBusinessFlow.Elapsed.HasValue) { liteDbBusinessFlow.Elapsed = Math.Round(liteDbBusinessFlow.Elapsed.Value, 2); } else { liteDbBusinessFlow.Elapsed = 0; } foreach (LiteDbActivity liteDbActivity in liteDbBusinessFlow.ActivitiesColl) { liteDbActivity.ExecutionRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbActivity.ChildExecutedItemsCount, liteDbActivity.ChildExecutableItemsCount)); liteDbActivity.PassRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbActivity.ChildPassedItemsCount, liteDbActivity.ChildExecutedItemsCount)); if (liteDbActivity.Elapsed.HasValue) { liteDbActivity.Elapsed = Math.Round(liteDbActivity.Elapsed.Value / 1000, 4); } else { liteDbActivity.Elapsed = 0; } foreach (LiteDbAction liteDbAction in liteDbActivity.ActionsColl) { List <string> newScreenShotsList = new List <string>(); if (liteDbAction.Elapsed.HasValue) { liteDbAction.Elapsed = Math.Round(liteDbAction.Elapsed.Value / 1000, 4); } else { liteDbAction.Elapsed = 0; } if ((!string.IsNullOrEmpty(liteDbAction.ExInfo)) && liteDbAction.ExInfo[liteDbAction.ExInfo.Length - 1] == '-') { liteDbAction.ExInfo = liteDbAction.ExInfo.Remove(liteDbAction.ExInfo.Length - 1); } foreach (string screenshot in liteDbAction.ScreenShots) { string fileName = Path.GetFileName(screenshot); string newScreenshotPath = Path.Combine(imageFolderPath, fileName); if (File.Exists(screenshot)) { System.IO.File.Copy(screenshot, newScreenshotPath, true); //TODO - Replace with the real location under Ginger installation newScreenShotsList.Add(fileName); } } liteDbAction.ScreenShots = newScreenShotsList; } } } } if (runSetEnv.Count > 0) { liteDbRunSet.Environment = string.Join(",", runSetEnv); } }
//TODO move it to utils class // Create test class private void PopulateMissingFields(LiteDbRunSet liteDbRunSet, string clientAppPath) { string imageFolderPath = Path.Combine(clientAppPath, "assets", "screenshots"); int totalRunners = liteDbRunSet.RunnersColl.Count; int totalPassed = liteDbRunSet.RunnersColl.Where(runner => runner.RunStatus == eRunStatus.Passed.ToString()).Count(); int totalExecuted = totalRunners - liteDbRunSet.RunnersColl.Where(runner => runner.RunStatus == eRunStatus.Pending.ToString() || runner.RunStatus == eRunStatus.Skipped.ToString() || runner.RunStatus == eRunStatus.Blocked.ToString()).Count(); if (totalRunners != 0) { liteDbRunSet.ExecutionRate = string.Format("{0:F1}", (totalExecuted * 100 / totalRunners).ToString()); } if (totalRunners != 0) { liteDbRunSet.PassRate = string.Format("{0:F1}", (totalPassed * 100 / totalRunners).ToString()); } liteDbRunSet.Elapsed = liteDbRunSet.RunnersColl.Sum(a => a.Elapsed); foreach (LiteDbRunner liteDbRunner in liteDbRunSet.RunnersColl) { int totalBFs = liteDbRunner.BusinessFlowsColl.Count; int totalPassedBFs = liteDbRunner.BusinessFlowsColl.Where(bf => bf.RunStatus == eRunStatus.Passed.ToString()).Count(); int totalExecutedBFs = totalBFs - liteDbRunner.BusinessFlowsColl.Where(bf => bf.RunStatus == eRunStatus.Pending.ToString() || bf.RunStatus == eRunStatus.Skipped.ToString() || bf.RunStatus == eRunStatus.Blocked.ToString()).Count(); if (totalBFs != 0) { liteDbRunner.ExecutionRate = string.Format("{0:F1}", (totalExecutedBFs * 100 / totalBFs).ToString()); } if (totalExecutedBFs != 0) { liteDbRunner.PassRate = string.Format("{0:F1}", (totalPassedBFs * 100 / totalExecutedBFs).ToString()); } if (liteDbRunner.Elapsed.HasValue) { liteDbRunner.Elapsed = Math.Round(liteDbRunner.Elapsed.Value, 2); } foreach (LiteDbBusinessFlow liteDbBusinessFlow in liteDbRunner.BusinessFlowsColl) { int totalActivities = liteDbBusinessFlow.ActivitiesColl.Count; int totalPassedActivities = liteDbBusinessFlow.ActivitiesColl.Where(ac => ac.RunStatus == eRunStatus.Passed.ToString()).Count(); int totalExecutedActivities = totalActivities - liteDbBusinessFlow.ActivitiesColl.Where(ac => ac.RunStatus == eRunStatus.Pending.ToString() || ac.RunStatus == eRunStatus.Skipped.ToString() || ac.RunStatus == eRunStatus.Blocked.ToString()).Count(); if (totalActivities != 0) { liteDbBusinessFlow.ExecutionRate = string.Format("{0:F1}", (totalExecutedActivities * 100 / totalActivities).ToString()); } if (totalExecutedActivities != 0) { liteDbBusinessFlow.PassRate = string.Format("{0:F1}", (totalPassedActivities * 100 / totalExecutedActivities).ToString()); } if (liteDbBusinessFlow.Elapsed.HasValue) { liteDbBusinessFlow.Elapsed = Math.Round(liteDbBusinessFlow.Elapsed.Value, 2); } foreach (LiteDbActivity liteDbActivity in liteDbBusinessFlow.ActivitiesColl) { int totalActions = liteDbActivity.ActionsColl.Count; int totalPassedActions = liteDbActivity.ActionsColl.Where(ac => ac.RunStatus == eRunStatus.Passed.ToString()).Count(); int totalExecutedActions = totalActions - liteDbActivity.ActionsColl.Where(ac => ac.RunStatus == eRunStatus.Pending.ToString() || ac.RunStatus == eRunStatus.Skipped.ToString() || ac.RunStatus == eRunStatus.Blocked.ToString()).Count(); if (totalActions != 0) { liteDbActivity.ExecutionRate = string.Format("{0:F1}", (totalExecutedActions * 100 / totalActions).ToString()); } if (totalExecutedActions != 0) { liteDbActivity.PassRate = string.Format("{0:F1}", (totalPassedActions * 100 / totalExecutedActions).ToString()); } if (liteDbActivity.Elapsed.HasValue) { liteDbActivity.Elapsed = Math.Round(liteDbActivity.Elapsed.Value, 2); } foreach (LiteDbAction liteDbAction in liteDbActivity.ActionsColl) { List <string> newScreenShotsList = new List <string>(); if (liteDbAction.Elapsed.HasValue) { liteDbAction.Elapsed = Math.Round(liteDbAction.Elapsed.Value, 2); } if ((!string.IsNullOrEmpty(liteDbAction.ExInfo)) && liteDbAction.ExInfo[liteDbAction.ExInfo.Length - 1] == '-') { liteDbAction.ExInfo = liteDbAction.ExInfo.Remove(liteDbAction.ExInfo.Length - 1); } foreach (string screenshot in liteDbAction.ScreenShots) { string fileName = Path.GetFileName(screenshot); string newScreenshotPath = Path.Combine(imageFolderPath, fileName); if (File.Exists(screenshot)) { System.IO.File.Copy(screenshot, newScreenshotPath, true); //TODO - Replace with the real location under Ginger installation newScreenShotsList.Add(fileName); } } liteDbAction.ScreenShots = newScreenShotsList; } } } } }
private List <string> PopulateMissingFieldsAndGetScreenshotsList(LiteDbRunSet liteDbRunSet, Guid executionId) { List <string> allScreenshots = new List <string>(); //select template HTMLReportConfiguration _HTMLReportConfig = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <HTMLReportConfiguration>().Where(x => x.IsDefault).FirstOrDefault(); //populate data based on level if (string.IsNullOrEmpty(_HTMLReportConfig.ExecutionStatisticsCountBy.ToString())) { _HTMLReportConfig.ExecutionStatisticsCountBy = HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions; } List <string> runSetEnv = new List <string>(); liteDbRunSet.ExecutionRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbRunSet.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbRunSet.ChildExecutableItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); liteDbRunSet.PassRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbRunSet.ChildPassedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbRunSet.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); if (liteDbRunSet.Elapsed.HasValue) { liteDbRunSet.Elapsed = Math.Round(liteDbRunSet.Elapsed.Value, 2); } foreach (LiteDbRunner liteDbRunner in liteDbRunSet.RunnersColl) { if (!runSetEnv.Contains(liteDbRunner.Environment)) { runSetEnv.Add(liteDbRunner.Environment); } liteDbRunner.ExecutionRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbRunner.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbRunner.ChildExecutableItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); liteDbRunner.PassRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbRunner.ChildPassedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbRunner.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); if (liteDbRunner.Elapsed.HasValue) { liteDbRunner.Elapsed = Math.Round(liteDbRunner.Elapsed.Value, 2); } else { liteDbRunner.Elapsed = 0; } foreach (LiteDbBusinessFlow liteDbBusinessFlow in liteDbRunner.BusinessFlowsColl) { liteDbBusinessFlow.ExecutionRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbBusinessFlow.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbBusinessFlow.ChildExecutableItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); liteDbBusinessFlow.PassRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbBusinessFlow.ChildPassedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()], liteDbBusinessFlow.ChildExecutedItemsCount[_HTMLReportConfig.ExecutionStatisticsCountBy.ToString()])); if (liteDbBusinessFlow.Elapsed.HasValue) { liteDbBusinessFlow.Elapsed = Math.Round(liteDbBusinessFlow.Elapsed.Value, 2); } else { liteDbBusinessFlow.Elapsed = 0; } foreach (LiteDbActivityGroup liteDbActivityGroup in liteDbBusinessFlow.ActivitiesGroupsColl) { foreach (LiteDbActivity liteDbActivity in liteDbActivityGroup.ActivitiesColl) { liteDbActivity.ExecutionRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbActivity.ChildExecutedItemsCount, liteDbActivity.ChildExecutableItemsCount)); liteDbActivity.PassRate = string.Format("{0:F1}", CalculateExecutionOrPassRate(liteDbActivity.ChildPassedItemsCount, liteDbActivity.ChildExecutedItemsCount)); if (liteDbActivity.Elapsed.HasValue) { liteDbActivity.Elapsed = Math.Round(liteDbActivity.Elapsed.Value / 1000, 4); } else { liteDbActivity.Elapsed = 0; } foreach (LiteDbAction liteDbAction in liteDbActivity.ActionsColl) { List <string> newScreenShotsList = new List <string>(); if (liteDbAction.Elapsed.HasValue) { liteDbAction.Elapsed = Math.Round(liteDbAction.Elapsed.Value / 1000, 4); } else { liteDbAction.Elapsed = 0; } if ((!string.IsNullOrEmpty(liteDbAction.ExInfo)) && liteDbAction.ExInfo[liteDbAction.ExInfo.Length - 1] == '-') { liteDbAction.ExInfo = liteDbAction.ExInfo.Remove(liteDbAction.ExInfo.Length - 1); } foreach (string screenshot in liteDbAction.ScreenShots) { allScreenshots.Add(screenshot); string newScreenshotPath = executionId.ToString() + "/" + Path.GetFileName(screenshot); newScreenShotsList.Add(newScreenshotPath); } liteDbAction.ScreenShots = newScreenShotsList; } } } } } if (runSetEnv.Count > 0) { liteDbRunSet.Environment = string.Join(",", runSetEnv); } return(allScreenshots); }
public override string CalculateExecutionJsonData(LiteDbRunSet liteDbRunSet, HTMLReportConfiguration reportTemplate) { CentralExecutionLoggerHelper centralExecutionLogger = new CentralExecutionLoggerHelper(); AccountReportRunSet accountReportRunSet = centralExecutionLogger.MapDataToAccountReportObject(liteDbRunSet); string json = JsonConvert.SerializeObject(accountReportRunSet, Formatting.Indented); JObject runSetObject = JObject.Parse(json); #region Generate JSON //Remove Fields from json which are not selected foreach (HTMLReportConfigFieldToSelect runsetFieldToRemove in reportTemplate.RunSetSourceFieldsToSelect.Where(x => !x.IsSelected)) { runSetObject.Property(GetFieldToRemove(runsetFieldToRemove.FieldKey)).Remove(); } //RunnersCollection HTMLReportConfigFieldToSelect runnerField = reportTemplate.RunSetSourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "RunnersColl").FirstOrDefault(); if (runnerField != null) { if (reportTemplate.GingerRunnerSourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0) { JArray runnerArray = (JArray)runSetObject[runnerField.FieldKey]; foreach (JObject jRunnerObject in runnerArray) { foreach (HTMLReportConfigFieldToSelect runnerFieldToRemove in reportTemplate.GingerRunnerSourceFieldsToSelect.Where(x => !x.IsSelected)) { jRunnerObject.Property(GetFieldToRemove(runnerFieldToRemove.FieldKey)).Remove(); } //BusinessFlowsCollection HTMLReportConfigFieldToSelect bfField = reportTemplate.GingerRunnerSourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "BusinessFlowsColl").FirstOrDefault(); if (bfField != null) { if (reportTemplate.BusinessFlowSourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0) { JArray bfArray = (JArray)jRunnerObject[bfField.FieldKey]; foreach (JObject jBFObject in bfArray) { foreach (HTMLReportConfigFieldToSelect bfFieldToRemove in reportTemplate.BusinessFlowSourceFieldsToSelect.Where(x => !x.IsSelected)) { jBFObject.Property(GetFieldToRemove(bfFieldToRemove.FieldKey)).Remove(); } //ActivityGroupsCollection HTMLReportConfigFieldToSelect activityGroupField = reportTemplate.BusinessFlowSourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "ActivitiesGroupsColl").FirstOrDefault(); if (activityGroupField != null) { if (reportTemplate.ActivityGroupSourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0) { JArray activityGroupArray = (JArray)jBFObject[activityGroupField.FieldKey]; foreach (JObject jActivityGroupObject in activityGroupArray) { foreach (HTMLReportConfigFieldToSelect activityGroupFieldToRemove in reportTemplate.ActivityGroupSourceFieldsToSelect.Where(x => !x.IsSelected)) { jActivityGroupObject.Property(GetFieldToRemove(activityGroupFieldToRemove.FieldKey)).Remove(); } //ActivitiesCollection HTMLReportConfigFieldToSelect activityFieldCheck = reportTemplate.ActivityGroupSourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "ActivitiesColl").FirstOrDefault(); if (activityFieldCheck != null) { if (reportTemplate.ActivitySourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0) { JArray activityArray = (JArray)jActivityGroupObject[activityFieldCheck.FieldKey]; foreach (JObject jActivityObject in activityArray) { //Calculate ErrorDetails And add it to Activity Level StringBuilder errorDetailsNew = new StringBuilder(); string errorDetails = null; JArray actionsArray = (JArray)jActivityObject["ActionsColl"]; foreach (JObject jActionObject in actionsArray) { if (!string.IsNullOrEmpty(jActionObject.Property("Error").Value.ToString()) && !string.IsNullOrEmpty(errorDetailsNew.ToString())) { errorDetailsNew.Append(","); errorDetailsNew.Append(jActionObject.Property("Error").Value.ToString()); } else { errorDetailsNew.Append(jActionObject.Property("Error").Value.ToString()); } } if (string.IsNullOrEmpty(errorDetailsNew.ToString())) { errorDetails = "NA"; } else { errorDetails = errorDetailsNew.ToString(); } jActivityObject.Add("ErrorDetails", errorDetails); foreach (HTMLReportConfigFieldToSelect activityFieldToRemove in reportTemplate.ActivitySourceFieldsToSelect.Where(x => !x.IsSelected)) { jActivityObject.Property(GetFieldToRemove(activityFieldToRemove.FieldKey)).Remove(); } //ActionsColl HTMLReportConfigFieldToSelect actionField = reportTemplate.ActivitySourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "ActionsColl").FirstOrDefault(); if (actionField != null) { if (reportTemplate.ActionSourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0) { JArray actionArray = (JArray)jActivityObject[actionField.FieldKey]; foreach (JObject jActionObject in actionArray) { foreach (HTMLReportConfigFieldToSelect actionFieldToRemove in reportTemplate.ActionSourceFieldsToSelect.Where(x => !x.IsSelected)) { jActionObject.Property(GetFieldToRemove(actionFieldToRemove.FieldKey)).Remove(); } } } } } } } } } } } } } } } } #endregion return(runSetObject.ToString(Formatting.Indented)); }