private RunStatus ConvertGingerStatusToJira(eRunStatus runStatus)
        {
            RunStatus responseStatus = RunStatus.EXECUTING;

            switch (runStatus)
            {
            case eRunStatus.Failed:
                responseStatus = RunStatus.FAIL;
                break;

            case eRunStatus.Passed:
                responseStatus = RunStatus.PASS;
                break;

            case eRunStatus.Skipped:
            case eRunStatus.Blocked:
            case eRunStatus.Pending:
                responseStatus = RunStatus.TODO;
                break;

            default:
                responseStatus = RunStatus.TODO;
                break;
            }
            return(responseStatus);
        }
        private eRunStatus getGroupActivityStatus(List <Activity> activityList, ref long?elapsed, ref DateTime startedAt, ref DateTime finishedAt)
        {
            eRunStatus status = eRunStatus.Skipped;

            //if there is one fail then Activity status is fail
            if (activityList.Where(x => x.Status == eRunStatus.Failed).FirstOrDefault() != null)
            {
                status = eRunStatus.Failed;
            }
            else
            {
                // If we have at least 1 pass then it passed, otherwise will remain Skipped
                if (activityList.Where(x => x.Status == eRunStatus.Passed).FirstOrDefault() != null)
                {
                    status = eRunStatus.Passed;
                }
            }

            foreach (var item in activityList)
            {
                elapsed += item.Elapsed;
            }
            if (activityList.Where(x => (x.Status == eRunStatus.Passed || x.Status == eRunStatus.Failed)).Any())
            {
                startedAt  = activityList.Where(x => (x.Status == eRunStatus.Passed || x.Status == eRunStatus.Failed)).FirstOrDefault().StartTimeStamp;
                finishedAt = activityList.Where(x => (x.Status == eRunStatus.Passed || x.Status == eRunStatus.Failed)).LastOrDefault().EndTimeStamp;
            }

            return(status);
        }
Exemple #3
0
        public override void SetReportRunner(GingerRunner gingerRunner, GingerReport gingerReport, ExecutionLoggerManager.ParentGingerData gingerData, Context mContext, string filename, int runnerCount)
        {
            base.SetReportRunner(gingerRunner, gingerReport, gingerData, mContext, filename, runnerCount);
            LiteDbRunner runner = new LiteDbRunner();

            runner.BusinessFlowsColl.AddRange(liteDbBFList);
            if (lastRunnertStatus == eRunStatus.Stopped && gingerRunner.RunsetStatus != eRunStatus.Stopped && runner.BusinessFlowsColl.Count > gingerRunner.BusinessFlows.Count)
            {
                runner.BusinessFlowsColl.RemoveRange(0, gingerRunner.BusinessFlows.Count);
            }

            SetRunnerChildCounts(runner);

            runner.SetReportData(gingerReport);
            SaveObjToReporsitory(runner, liteDbManager.NameInDb <LiteDbRunner>());
            if (ExecutionLoggerManager.RunSetReport == null)
            {
                ExecutionLoggerManager.RunSetReport      = new RunSetReport();
                ExecutionLoggerManager.RunSetReport.GUID = Guid.NewGuid().ToString();
            }
            if (lastRunnertStatus == Amdocs.Ginger.CoreNET.Execution.eRunStatus.Stopped)
            {
                var runnerItem = ExecutionLoggerManager.RunSetReport.liteDbRunnerList.Find(x => x.Name == runner.Name);
                ExecutionLoggerManager.RunSetReport.liteDbRunnerList.Remove(runnerItem);
            }
            if (runner.RunStatus != eRunStatus.Stopped.ToString())
            {
                liteDbBFList.Clear();
            }
            ExecutionLoggerManager.RunSetReport.liteDbRunnerList.Add(runner);
            lastRunnertStatus = gingerRunner.RunsetStatus;
            ClearSeq();
        }
        private void RunStatusOnChange(eRunStatus status)
        {
            switch (status)
            {
            case eRunStatus.Running:
                IsRuning   = true;
                IsPause    = false;
                IsStopping = false;
                IsStopped  = false;

                ////_redLamp.SetFalse();
                ////_amberLamp.SetFalse();
                ////_greenLamp.SetTrue();
                //_buzzer.SetFalse();

                break;

            case eRunStatus.Pause:
                IsRuning   = false;
                IsPause    = true;
                IsStopping = false;
                IsStopped  = false;

                ////_redLamp.SetTrue();
                ////_amberLamp.SetFalse();
                ////_greenLamp.SetTrue();
                //_buzzer.SetFalse();

                break;

            case eRunStatus.Stopping:
                IsRuning   = false;
                IsPause    = false;
                IsStopping = true;
                IsStopped  = false;

                ////_redLamp.SetTrue();
                ////_amberLamp.SetFalse();
                ////_greenLamp.SetTrue();
                //_buzzer.SetFalse();

                break;

            case eRunStatus.Stopped:
                IsRuning   = false;
                IsPause    = false;
                IsStopping = false;
                IsStopped  = true;

                ////_redLamp.SetTrue();
                ////_amberLamp.SetFalse();
                ////_greenLamp.SetFalse();
                //_buzzer.SetFalse();

                break;
            }
        }
        private string CraeteGroupActivitiesStatusXml(BusinessFlow BF, ref int passCount, ref int failedCount, ref int blockedCount)
        {
            string   BFResults  = string.Empty;
            long?    elapsed    = 0;
            DateTime startedAt  = new DateTime();
            DateTime finishedAt = new DateTime();

            if (BF.ActivitiesGroups.Count > 0)
            {
                foreach (var item in BF.ActivitiesGroups)
                {
                    if (item.ActivitiesIdentifiers.Count > 0)
                    {
                        List <Activity> acts   = item.ActivitiesIdentifiers.Select(a => a.IdentifiedActivity).ToList();
                        eRunStatus      status = getGroupActivityStatus(acts, ref elapsed, ref startedAt, ref finishedAt);
                        BFResults += buildXml(status, ref passCount, ref failedCount, ref blockedCount, General.ConvertInvalidXMLCharacters(BF.Name), General.ConvertInvalidXMLCharacters(item.Name), General.ConvertInvalidXMLCharacters(item.Description), elapsed, startedAt, finishedAt);
                    }
                }

                //create ungrouped for activities that are not in any group
                List <Activity> unGroupedAct = new List <Activity>();
                foreach (var item in BF.Activities)
                {
                    if (item.ActivitiesGroupID == string.Empty)
                    {
                        unGroupedAct.Add(item);
                    }
                }
                if (unGroupedAct.Count > 0)
                {
                    eRunStatus status = getGroupActivityStatus(unGroupedAct, ref elapsed, ref startedAt, ref finishedAt);
                    BFResults += buildXml(status, ref passCount, ref failedCount, ref blockedCount, General.ConvertInvalidXMLCharacters(BF.Name), "Ungrouped", "Ungrouped", elapsed, startedAt, finishedAt);
                }
            }
            else//if there are no groups create default group
            {
                eRunStatus status = getGroupActivityStatus(BF.Activities.ToList(), ref elapsed, ref startedAt, ref finishedAt);
                BFResults += buildXml(status, ref passCount, ref failedCount, ref blockedCount, General.ConvertInvalidXMLCharacters(BF.Name), "Ungrouped", "Ungrouped", elapsed, startedAt, finishedAt);
            }

            return(BFResults);
        }
        public override object SetReportBusinessFlow(Context context, bool offlineMode, Amdocs.Ginger.Common.eExecutedFrom executedFrom, bool isConfEnable)
        {
            LiteDbBusinessFlow BFR = new LiteDbBusinessFlow();

            if (executedFrom == eExecutedFrom.Automation)
            {
                ClearSeq();
            }

            if (liteDbBFList.Count >= context.Runner.BusinessFlows.Count)
            {
                liteDbBFList.RemoveRange(0, context.Runner.BusinessFlows.Count);
            }
            if (lastBfStatus == eRunStatus.Stopped && context.BusinessFlow.RunStatus != eRunStatus.Stopped)
            {
                BFR._id = lastBfObjId;
                ClearSeq();
            }
            SetBfobjects(context, executedFrom);
            context.Runner.CalculateBusinessFlowFinalStatus(context.BusinessFlow);
            BFR.SetReportData(GetBFReportData(context.BusinessFlow, context.Environment));
            BFR.Seq = ++this.bfSeq;

            int ChildExecutableItemsCountActivity = 0;
            int ChildExecutedItemsCountActivity   = 0;
            int ChildPassedItemsCountActivity     = 0;

            ChildExecutableItemsCountActivity = context.BusinessFlow.Activities.Count(x => x.Active == true);
            ChildExecutedItemsCountActivity   = context.BusinessFlow.Activities.Where(ac => ac.Status == eRunStatus.Failed || ac.Status == eRunStatus.Passed || ac.Status == eRunStatus.FailIgnored).Count();
            ChildPassedItemsCountActivity     = context.BusinessFlow.Activities.Where(ac => ac.Status == eRunStatus.Passed).Count();

            BFR.ChildExecutableItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Activities.ToString(), ChildExecutableItemsCountActivity);
            BFR.ChildExecutedItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Activities.ToString(), ChildExecutedItemsCountActivity);
            BFR.ChildPassedItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Activities.ToString(), ChildPassedItemsCountActivity);

            int ChildExecutableItemsCountAction = 0;
            int ChildExecutedItemsCountAction   = 0;
            int ChildPassedItemsCountAction     = 0;

            foreach (LiteDbActivity activity in liteDbActivityList)
            {
                ChildExecutableItemsCountAction = ChildExecutableItemsCountAction + activity.ChildExecutableItemsCount;
                ChildExecutedItemsCountAction   = ChildExecutedItemsCountAction + activity.ChildExecutedItemsCount;
                ChildPassedItemsCountAction     = ChildPassedItemsCountAction + activity.ChildPassedItemsCount;
            }
            BFR.ChildExecutableItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions.ToString(), ChildExecutableItemsCountAction);
            BFR.ChildExecutedItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions.ToString(), ChildExecutedItemsCountAction);
            BFR.ChildPassedItemsCount.Add(HTMLReportConfiguration.eExecutionStatisticsCountBy.Actions.ToString(), ChildPassedItemsCountAction);

            if (context.BusinessFlow.LiteDbId != null && executedFrom == eExecutedFrom.Automation)
            {
                BFR._id = context.BusinessFlow.LiteDbId;
                var BFRToUpdate = liteDbManager.GetBfLiteData().IncludeAll().Find(x => x._id == BFR._id).ToList();
                if (BFRToUpdate.Count > 0)
                {
                    foreach (var activity in (BFRToUpdate[0] as LiteDbBusinessFlow).ActivitiesColl)
                    {
                        if (liteDbActivityList.Any(ac => ac._id == activity._id))
                        {
                            liteDbActivityList.RemoveAll(x => x._id == activity._id);
                        }
                    }
                    liteDbActivityList.AddRange((BFRToUpdate[0] as LiteDbBusinessFlow).ActivitiesColl);
                }
            }
            if (WorkSpace.Instance.Solution.LoggerConfigurations.ExecutionLoggerConfigurationIsEnabled)
            {
                if (offlineMode)
                {
                    // To check whether the execution is from Runset/Automate tab
                    if ((executedFrom == Amdocs.Ginger.Common.eExecutedFrom.Automation))
                    {
                        context.BusinessFlow.ExecutionFullLogFolder = context.BusinessFlow.ExecutionLogFolder;
                    }
                    else if ((WorkSpace.Instance.RunsetExecutor.RunSetConfig.LastRunsetLoggerFolder != null))
                    {
                        context.BusinessFlow.ExecutionFullLogFolder = context.BusinessFlow.ExecutionLogFolder;
                    }
                    BFR.ActivitiesColl.AddRange(liteDbActivityList);
                    BFR.ActivitiesGroupsColl.AddRange(liteDbAGList);
                    SaveObjToReporsitory(BFR, liteDbManager.NameInDb <LiteDbBusinessFlow>());
                    liteDbActivityList.Clear();
                    liteDbAGList.Clear();
                }
                else
                {
                    BFR.ActivitiesColl.AddRange(liteDbActivityList);
                    BFR.ActivitiesGroupsColl.AddRange(liteDbAGList);
                    SaveObjToReporsitory(BFR, liteDbManager.NameInDb <LiteDbBusinessFlow>());
                    this.lastBfObjId = BFR._id;
                    if (liteDbBFList.Exists(bf => bf._id == this.lastBfObjId))
                    {
                        liteDbBFList.RemoveAll(bf => bf._id == this.lastBfObjId);
                    }
                    liteDbBFList.Add(BFR);
                    liteDbActivityList.Clear();
                    liteDbAGList.Clear();
                    //context.BusinessFlow.ExecutionFullLogFolder = Path.Combine(ExecutionLogfolder,context.BusinessFlow.ExecutionLogFolder);
                }
                if (executedFrom == Amdocs.Ginger.Common.eExecutedFrom.Automation)
                {
                    this.ExecutionLogBusinessFlowsCounter = 0;
                    //this.BFCounter = 0;
                }
            }
            if (executedFrom == eExecutedFrom.Automation)
            {
                context.BusinessFlow.LiteDbId = BFR._id;
            }
            this.lastBfStatus = context.BusinessFlow.RunStatus;

            //return BFR;
            return(GetBFReportData(context.BusinessFlow, context.Environment));//Returning BusinessFlowReport so we will get execution info on the console
        }