Beispiel #1
0
        public ICollection <TaskExecutionReport> Generate(
            IPipelineTaskStep pipeline,
            TaskExecutionLog log)
        {
            var data = _pipelineReportDataExtractor.Extract(pipeline, log);

            return(_reportsFormatter.Format(
                       data,
                       typeof(PipelineReportingTemplatesNamespaceMarker),
                       ReportDataJsonToken,
                       x => $"{pipeline.Name}_{x}")
                   .ToArray());
        }
Beispiel #2
0
        private IEnumerable <ICollection <object> > GetStepTimesData(
            TaskExecutionLog log,
            IEnumerable <string> stepNames)
        {
            yield return(new[] { "Step", "Duration" + PipelineReportingUtils.MsUnit });

            yield return(new object[] { "[Total]", log.TaskDuration.Duration.GetLogValue() });

            foreach (var stepName in stepNames)
            {
                yield return(new object[] { stepName, log.StepLogs[stepName].Duration.Duration.GetLogValue() });
            }
        }
Beispiel #3
0
        public ICollection <TaskExecutionReport> Generate(
            TaskDefinition task,
            TaskExecutionLog log)
        {
            var data = _taskReportDataExtractor.Extract(task, log);

            return(_reportsFormatter.Format(
                       data,
                       typeof(TaskReportingTemplatesNamespaceMarker),
                       ReportDataJsonToken,
                       x => x)
                   .ToArray());
        }
Beispiel #4
0
        private IEnumerable <ICollection <object> > GetStepsTimelineData(
            TaskExecutionLog log,
            IEnumerable <string> stepNames)
        {
            yield return(new[] { "Step", "Start" + PipelineReportingUtils.MsUnit, "End" + PipelineReportingUtils.MsUnit });

            var taskStartTs = log.TaskDuration.StartTs;

            foreach (var stepName in stepNames)
            {
                var stepDuration = log.StepLogs[stepName].Duration;

                yield return(new object[]
                {
                    stepName,
                    (stepDuration.StartTs - taskStartTs).GetLogValue(),
                    (stepDuration.EndTs - taskStartTs).GetLogValue()
                });
            }
        }
Beispiel #5
0
        public PipelineReportData Extract(
            IPipelineTaskStep pipeline,
            TaskExecutionLog log)
        {
            var stepLog = log.StepLogs[pipeline.Name];
            var materializationBlockName = pipeline.Input.Name ?? PipelineInput.DefaultName;
            var blockNames = pipeline.Blocks.Select(x => x.Name).ToArray();

            var diagnosticChartsData = DiagnosticDataExtractor.Extract(
                log.DiagnosticsLog.Diagnostics,
                stepLog.Duration);

            return(new PipelineReportData
            {
                GlobalData = log.DiagnosticsLog.GlobalDiagnostic,
                ItemsTimelineData = GetItemsTimelineData(stepLog, materializationBlockName, blockNames).ToArray(),
                BlockTimesData = GetBlockTimesData(stepLog, materializationBlockName, blockNames).ToArray(),
                MemoryData = diagnosticChartsData.MemoryData,
                CpuUsageData = diagnosticChartsData.CpuUsageData
            });
        }
Beispiel #6
0
        public TaskReportData Extract(
            TaskDefinition task,
            TaskExecutionLog log)
        {
            var stepNames = task.Steps
                            .Select(x => x.Name)
                            .Where(x => log.StepLogs.ContainsKey(x))
                            .ToArray();

            var diagnosticChartsData = DiagnosticDataExtractor.Extract(
                log.DiagnosticsLog.Diagnostics,
                log.TaskDuration);

            return(new TaskReportData
            {
                GlobalData = log.DiagnosticsLog.GlobalDiagnostic,
                StepsTimelineData = GetStepsTimelineData(log, stepNames).ToArray(),
                StepTimesData = GetStepTimesData(log, stepNames).ToArray(),
                MemoryData = diagnosticChartsData.MemoryData,
                CpuUsageData = diagnosticChartsData.CpuUsageData
            });
        }
Beispiel #7
0
 internal static void SetExecutionLog(
     this TaskDefinition task,
     TaskExecutionLog log)
 => task.Extras.Set(TaskExecutionLogExtraKey, log);