예제 #1
0
        static async Task RunTimelinePostprocessor(LogSourcePostprocessorInput input)
        {
            string outputFileName = input.OutputFileName;
            var    logProducer    = LJT.Extensions.Read(new LJT.Reader(), input.LogFileName,
                                                        null, input.ProgressHandler).Multiplex();

            var profilingEvents = (new LJT.ProfilingTimelineEventsSource()).GetEvents(logProducer);

            var lister = EnumerableAsync.Merge(
                profilingEvents
                ).ToList();

            Task[] leafs = new Task[]
            {
                lister,
                logProducer.Open(),
            };
            await Task.WhenAll(leafs);

            TimelinePostprocessorOutput.SerializePostprocessorOutput(
                await lister,
                null,
                evtTrigger => TextLogEventTrigger.Make((LJT.Message)evtTrigger),
                input.InputContentsEtagAttr
                ).SaveToFileOrToStdOut(outputFileName);
        }
예제 #2
0
        public static LogSourcePostprocessorInput AttachProgressHandler(this LogSourcePostprocessorInput input,
                                                                        Progress.IProgressAggregator progressAggregator, List <Progress.IProgressEventsSink> progressSinks)
        {
            var progressSink = progressAggregator.CreateProgressSink();

            progressSinks.Add(progressSink);
            input.ProgressHandler   += progressSink.SetValue;
            input.ProgressAggregator = progressAggregator;
            return(input);
        }
        static async Task RunTimelinePostprocessor(
            LogSourcePostprocessorInput input, IModel postprocessingModel)
        {
            var logProducer = LJT.Extensions.Read(new LJT.Reader(postprocessingModel.TextLogParser), input.OpenLogFile,
                                                  input.ProgressHandler).Multiplex();

            var profilingEvents = (new LJT.ProfilingTimelineEventsSource()).GetEvents(logProducer);

            var lister = EnumerableAsync.Merge(
                profilingEvents
                );

            var serialize = postprocessingModel.Timeline.CreatePostprocessorOutputBuilder()
                            .SetEvents(lister)
                            .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((LJT.Message)evtTrigger))
                            .Build(input);

            await Task.WhenAll(serialize, logProducer.Open());
        }
        static async Task RunTimeSeriesPostprocessor(
            LogSourcePostprocessorInput input,
            IModel postprocessingModel
            )
        {
            var logProducer = LJT.Extensions.Read(new LJT.Reader(postprocessingModel.TextLogParser), input.OpenLogFile,
                                                  input.ProgressHandler).Multiplex();

            ICombinedParser parser = postprocessingModel.TimeSeries.CreateParser();

            var events = parser.FeedLogMessages(logProducer, m => m.Text, m => m.Text);

            await Task.WhenAll(events, logProducer.Open());

            foreach (var ts in parser.GetParsedTimeSeries())
            {
                ts.DataPoints = TimeSeries.Filters.RemoveRepeatedValues.Filter(ts.DataPoints).ToList();
            }

            await postprocessingModel.TimeSeries.SavePostprocessorOutput(parser, input);
        }
예제 #5
0
        static async Task RunTimelinePostprocessor(
            LogSourcePostprocessorInput input, IModel postprocessingModel)
        {
            string outputFileName = input.OutputFileName;
            var    logProducer    = LJT.Extensions.Read(new LJT.Reader(postprocessingModel.TextLogParser), input.LogFileName,
                                                        input.ProgressHandler).Multiplex();

            var profilingEvents = (new LJT.ProfilingTimelineEventsSource()).GetEvents(logProducer);

            var lister = EnumerableAsync.Merge(
                profilingEvents
                );

            var serialize = postprocessingModel.Timeline.SavePostprocessorOutput(
                lister,
                null,
                evtTrigger => TextLogEventTrigger.Make((LJT.Message)evtTrigger),
                input
                );

            await Task.WhenAll(serialize, logProducer.Open());
        }
예제 #6
0
 public static LogSourcePostprocessorInput SetTemplatesTracker(this LogSourcePostprocessorInput input,
                                                               ICodepathTracker value)
 {
     input.TemplatesTracker = value;
     return(input);
 }
예제 #7
0
 public static string GetLogFileNameHint(this LogSourcePostprocessorInput input)
 {
     return(GetLogFileNameHint(input.LogSource.Provider));
 }