async Task RunForSymRTC( IEnumerableAsync <Sym.Message[]> messages, LogSourcePostprocessorInput postprocessorInput ) { IPrefixMatcher matcher = postprocessing.CreatePrefixMatcher(); var logMessages = messages.MatchTextPrefixes(matcher).Multiplex(); Sym.IMeetingsStateInspector symMeetingsStateInspector = new Sym.MeetingsStateInspector(matcher); Sym.IMediaStateInspector symMediaStateInspector = new Sym.MediaStateInspector(matcher, symMeetingsStateInspector); var symMeetingEvents = symMeetingsStateInspector.GetEvents(logMessages); var symMediagEvents = symMediaStateInspector.GetEvents(logMessages); matcher.Freeze(); var events = postprocessorInput.TemplatesTracker.TrackTemplates(EnumerableAsync.Merge( symMeetingEvents, symMediagEvents )); var serialize = postprocessing.StateInspector.SavePostprocessorOutput( events, null, evtTrigger => TextLogEventTrigger.Make((Sym.Message)evtTrigger), postprocessorInput ); await Task.WhenAll(serialize, logMessages.Open()); }
async Task RunForSymLog( IEnumerableAsync <Sym.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { IPrefixMatcher matcher = postprocessing.CreatePrefixMatcher(); var inputMultiplexed = input.Multiplex(); var symEvents = RunForSymMessages(matcher, inputMultiplexed, postprocessorInput.TemplatesTracker, out var symLog); var endOfTimelineEventSource = postprocessing.Timeline.CreateEndOfTimelineEventSource <Sym.Message>(); var messagingEventsSource = postprocessing.Timeline.CreateMessagingEventsSource(); var messagingEvents = messagingEventsSource.GetEvents( ((Sym.IMessagingEvents) new Sym.MessagingEvents()).GetEvents(inputMultiplexed)); var eofEvts = endOfTimelineEventSource.GetEvents(inputMultiplexed); matcher.Freeze(); var events = EnumerableAsync.Merge( symEvents, messagingEvents, eofEvts ); var serialize = postprocessing.Timeline.CreatePostprocessorOutputBuilder() .SetEvents(events) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((Sym.Message)evtTrigger)) .Build(postprocessorInput); await Task.WhenAll(serialize, symLog.Open(), inputMultiplexed.Open()); }
async Task RunForChromeDebug(LogSourcePostprocessorInput input) { var reader = new CDL.Reader(postprocessing.TextLogParser, input.CancellationToken).Read(input.OpenLogFile, s => s.Dispose(), input.ProgressHandler); var multiplexedInput = reader.Multiplex(); IPrefixMatcher prefixMatcher = postprocessing.CreatePrefixMatcher(); var matchedMessages = multiplexedInput.MatchTextPrefixes(prefixMatcher).Multiplex(); var webRtcStateInspector = new CDL.WebRtcStateInspector(prefixMatcher); var processIdDetector = new CDL.ProcessIdDetector(); var nodeDetectionTokenTask = (new CDL.NodeDetectionTokenSource(processIdDetector, webRtcStateInspector)).GetToken(matchedMessages); var matcher = postprocessing.CreatePrefixMatcher(); var extensionSources = pluginModel.ChromeDebugLogMessagingEventSources.Select(src => src( matcher, multiplexedInput, input.TemplatesTracker)).ToArray(); var events = EnumerableAsync.Merge(extensionSources.Select(s => s.Events).ToArray()); var serialize = postprocessing.Correlation.CreatePostprocessorOutputBuilder() .SetSameNodeDetectionToken(nodeDetectionTokenTask) .SetMessagingEvents(events) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.FromUnknownTrigger(evtTrigger)) .Build(input); var tasks = new List <Task>(); tasks.Add(serialize); tasks.AddRange(extensionSources.SelectMany(s => s.MultiplexingEnumerables.Select(e => e.Open()))); tasks.Add(matchedMessages.Open()); tasks.Add(multiplexedInput.Open()); await Task.WhenAll(tasks); }
async Task RunForSpringServiceLog( IEnumerableAsync <SVC.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { var inputMultiplexed = input.Multiplex(); var messagingEventsSource = postprocessing.Timeline.CreateMessagingEventsSource(); var messagingEvents = messagingEventsSource.GetEvents( ((SVC.IMessagingEvents) new SVC.MessagingEvents()).GetEvents(inputMultiplexed)); var eofEvents = postprocessing.Timeline.CreateEndOfTimelineEventSource <SVC.Message>() .GetEvents(inputMultiplexed); var events = EnumerableAsync.Merge( messagingEvents, eofEvents ); var serialize = postprocessing.Timeline.CreatePostprocessorOutputBuilder() .SetEvents(events) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((SVC.Message)evtTrigger)) .Build(postprocessorInput); await Task.WhenAll(serialize, inputMultiplexed.Open()); }
async Task RunForChromeDebug( IEnumerableAsync <CDL.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { var inputMultiplexed = input.Multiplex(); ICombinedParser parser = postprocessing.TimeSeries.CreateParser(); var feedNativeEvents = parser.FeedLogMessages(inputMultiplexed); var extensionSources = pluginModel.ChromeDebugTimeSeriesSources.Select( src => src(inputMultiplexed, parser)).ToList(); var tasks = extensionSources.Select(s => s.Task).ToList(); tasks.Add(feedNativeEvents); tasks.AddRange(extensionSources.SelectMany(s => s.MultiplexingEnumerables.Select(e => e.Open()))); tasks.Add(inputMultiplexed.Open()); await Task.WhenAll(tasks); foreach (var ts in parser.GetParsedTimeSeries()) { ts.DataPoints = Postprocessing.TimeSeries.Filters.RemoveRepeatedValues.Filter(ts.DataPoints).ToList(); } await postprocessing.TimeSeries.SavePostprocessorOutput(parser, postprocessorInput); }
async Task RunForChromeDebug( IEnumerableAsync <CDL.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { var multiplexedInput = input.Multiplex(); IPrefixMatcher matcher = postprocessing.CreatePrefixMatcher(); var extensionSources = pluginModel.ChromeDebugLogTimeLineEventSources.Select(src => src( matcher, multiplexedInput, postprocessorInput.TemplatesTracker)).ToArray(); var events = postprocessorInput.TemplatesTracker.TrackTemplates(EnumerableAsync.Merge(extensionSources.Select(s => s.Events).ToArray())); matcher.Freeze(); var serialize = postprocessing.Timeline.SavePostprocessorOutput( events, null, evtTrigger => TextLogEventTrigger.FromUnknownTrigger(evtTrigger), postprocessorInput ); var tasks = new List <Task>(); tasks.Add(serialize); tasks.AddRange(extensionSources.SelectMany(s => s.MultiplexingEnumerables.Select(e => e.Open()))); tasks.Add(multiplexedInput.Open()); await Task.WhenAll(tasks); }
async Task RunForWiresharkDpmlMessages( IEnumerableAsync <Pdml.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { var logMessages = input.Multiplex(); Pdml.ITimelineEvents networkEvents = new Pdml.TimelineEvents(); var endOfTimelineEventSource = postprocessing.Timeline.CreateEndOfTimelineEventSource <Pdml.Message>(); var networkEvts = networkEvents.GetEvents(logMessages); var eofEvts = endOfTimelineEventSource.GetEvents(logMessages); var events = EnumerableAsync.Merge( networkEvts, eofEvts ); var serialize = postprocessing.Timeline.CreatePostprocessorOutputBuilder() .SetEvents(events) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((Pdml.Message)evtTrigger)) .Build(postprocessorInput); await Task.WhenAll(serialize, logMessages.Open()); }
async Task RunForChromeDebug( IEnumerableAsync <ChromeDebugLog.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { var multiplexedInput = input.Multiplex(); var matcher = postprocessing.CreatePrefixMatcher(); var extensionSources = pluginModel.ChromeDebugLogMessagingEventSources.Select(src => src( matcher, multiplexedInput, postprocessorInput.TemplatesTracker)).ToArray(); var events = EnumerableAsync.Merge(extensionSources.Select(s => s.Events).ToArray()); var serialize = postprocessing.SequenceDiagram.CreatePostprocessorOutputBuilder() .SetMessagingEvents(events) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.FromUnknownTrigger(evtTrigger)) .Build(postprocessorInput); var tasks = new List <Task>(); tasks.Add(serialize); tasks.AddRange(extensionSources.SelectMany(s => s.MultiplexingEnumerables.Select(e => e.Open()))); tasks.Add(multiplexedInput.Open()); await Task.WhenAll(tasks); }
async Task RunForWebRTCDump( IEnumerableAsync <WRD.Message[]> inputMessages, LogSourcePostprocessorInput postprocessorInput ) { IPrefixMatcher matcher = postprocessing.CreatePrefixMatcher(); var logMessages = WRD.Helpers.MatchPrefixes(inputMessages, matcher).Multiplex(); WRD.IWebRtcStateInspector webRtcStateInspector = new WRD.WebRtcStateInspector(matcher); var webRtcEvts = webRtcStateInspector.GetEvents(logMessages); matcher.Freeze(); var events = postprocessorInput.TemplatesTracker.TrackTemplates(EnumerableAsync.Merge( webRtcEvts )); var serialize = postprocessing.StateInspector.SavePostprocessorOutput( events, null, evtTrigger => TextLogEventTrigger.Make((WRD.Message)evtTrigger), postprocessorInput ); await Task.WhenAll(serialize, logMessages.Open()); }
async Task RunForSymphonyRtc( IEnumerableAsync <Sym.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { ICombinedParser parser = postprocessing.TimeSeries.CreateParser(); await parser.FeedLogMessages(input, m => m.Logger, m => string.Format("{0}.{1}", m.Logger, m.Text)); await postprocessing.TimeSeries.SavePostprocessorOutput(parser, postprocessorInput); }
Task IModel.SavePostprocessorOutput( ICombinedParser parser, LogSourcePostprocessorInput postprocessorInput ) { return(TimeSeriesPostprocessorOutput.SerializePostprocessorOutput( parser.GetParsedTimeSeries(), parser.GetParsedEvents(), postprocessorInput.openOutputFile, timeSeriesTypesAccess)); }
async Task RunForWebRtcInternalsDump( IEnumerableAsync <DMP.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { ICombinedParser parser = postprocessing.TimeSeries.CreateParser(); await parser.FeedLogMessages(input, m => m.ObjectId, m => m.Text); await postprocessing.TimeSeries.SavePostprocessorOutput(parser, postprocessorInput); }
async Task RunForClientLog( IEnumerableAsync <Cli.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { var events = RunForClientMessages(input); await postprocessing.SequenceDiagram.CreatePostprocessorOutputBuilder() .SetMessagingEvents(events) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((Cli.Message)evtTrigger)) .Build(postprocessorInput); }
Task IModel.SavePostprocessorOutput( ICombinedParser parser, LogSourcePostprocessorInput postprocessorInput ) { TimeSeriesPostprocessorOutput.SerializePostprocessorOutput( parser.GetParsedTimeSeries(), parser.GetParsedEvents(), postprocessorInput.OutputFileName, timeSeriesTypesAccess); return(Task.FromResult(0)); }
async Task RunForSpringServiceLog(LogSourcePostprocessorInput input) { var reader = new SpringServiceLog.Reader(postprocessingModel.TextLogParser, input.CancellationToken).Read(input.LogFileName, input.ProgressHandler); SVC.IMessagingEvents messagingEvents = new SVC.MessagingEvents(); var events = EnumerableAsync.Merge( messagingEvents.GetEvents(reader) ); await postprocessingModel.Correlation.CreatePostprocessorOutputBuilder() .SetMessagingEvents(events) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((SVC.Message)evtTrigger)) .Build(input); }
async Task RunForHttpArchive( IEnumerableAsync <HAR.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { HAR.ITimelineEvents timelineEvents = new HAR.TimelineEvents(); var events = EnumerableAsync.Merge( postprocessorInput.TemplatesTracker.TrackTemplates(timelineEvents.GetEvents(input)) ); await postprocessing.Timeline.CreatePostprocessorOutputBuilder() .SetEvents(events) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((HAR.Message)evtTrigger)) .Build(postprocessorInput); }
async Task RunForChromeDriver(LogSourcePostprocessorInput input) { var reader = (new CD.Reader(postprocessing.TextLogParser, input.CancellationToken)).Read(input.LogFileName, input.ProgressHandler); IPrefixMatcher prefixMatcher = postprocessing.CreatePrefixMatcher(); var matchedMessages = reader.MatchTextPrefixes(prefixMatcher).Multiplex(); var nodeDetectionTokenTask = (new CD.NodeDetectionTokenSource(new CD.ProcessIdDetector(prefixMatcher), prefixMatcher)).GetToken(matchedMessages); var noMessagingEvents = EnumerableAsync.Empty <M.Event[]>(); var serialize = postprocessing.Correlation.CreatePostprocessorOutputBuilder() .SetSameNodeDetectionToken(nodeDetectionTokenTask) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((CD.Message)evtTrigger)) .Build(input); await Task.WhenAll( matchedMessages.Open(), serialize ); }
async Task RunForHttpArchive( IEnumerableAsync <HAR.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { HAR.IMessagingEvents messagingEvents = new HAR.MessagingEvents(); var events = EnumerableAsync.Merge( messagingEvents.GetEvents(input) ); await postprocessing.SequenceDiagram.CreatePostprocessorOutputBuilder() .SetMessagingEvents(events) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((HAR.Message)evtTrigger)) .Build(postprocessorInput); }
Task IModel.SavePostprocessorOutput( IEnumerableAsync <Event[]> events, Task <ILogPartToken> rotatedLogPartToken, Func <object, TextLogEventTrigger> triggersConverter, LogSourcePostprocessorInput postprocessorInput ) { return(StateInspectorOutput.SerializePostprocessorOutput( events, rotatedLogPartToken, triggersConverter, postprocessorInput.InputContentsEtag, postprocessorInput.OutputFileName, tempFiles, postprocessorInput.CancellationToken )); }
async Task RunForChromeDebug( IEnumerableAsync <CDL.Message[]> inputMessages, LogSourcePostprocessorInput postprocessorInput ) { var inputMultiplexed = inputMessages.Multiplex(); IPrefixMatcher matcher = postprocessing.CreatePrefixMatcher(); var logMessages = inputMultiplexed.MatchTextPrefixes(matcher).Multiplex(); CDL.IWebRtcStateInspector webRtcStateInspector = new CDL.WebRtcStateInspector(matcher); var webRtcEvts = webRtcStateInspector.GetEvents(logMessages); var extensionSources = pluginModel .ChromeDebugStateEventSources.Select( source => source(matcher, inputMultiplexed, postprocessorInput.TemplatesTracker) ) .ToArray(); var eventSources = new List <IEnumerableAsync <Event[]> > { webRtcEvts }; eventSources.AddRange(extensionSources.Select(s => s.Events)); matcher.Freeze(); var events = postprocessorInput.TemplatesTracker.TrackTemplates(EnumerableAsync.Merge(eventSources.ToArray())); var serialize = postprocessing.StateInspector.SavePostprocessorOutput( events, null, evtTrigger => TextLogEventTrigger.FromUnknownTrigger(evtTrigger), postprocessorInput ); var tasks = new List <Task>(); tasks.Add(serialize); tasks.AddRange(extensionSources.SelectMany(s => s.MultiplexingEnumerables.Select(e => e.Open()))); tasks.Add(logMessages.Open()); tasks.Add(inputMultiplexed.Open()); await Task.WhenAll(tasks); }
async Task RunForHttpArchive( IEnumerableAsync <HAR.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { HAR.ITimelineEvents timelineEvents = new HAR.TimelineEvents(); var events = EnumerableAsync.Merge( postprocessorInput.TemplatesTracker.TrackTemplates(timelineEvents.GetEvents(input)) ); await postprocessing.Timeline.SavePostprocessorOutput( events, null, evtTrigger => TextLogEventTrigger.Make((HAR.Message)evtTrigger), postprocessorInput ); }
async Task RunForSpringServiceLog( IEnumerableAsync <SpringServiceLog.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { SVC.IMessagingEvents messagingEvents = new SVC.MessagingEvents(); var events = EnumerableAsync.Merge( messagingEvents.GetEvents(input) ); await postprocessing.SequenceDiagram.SavePostprocessorOutput( events, null, null, null, evtTrigger => TextLogEventTrigger.Make((SVC.Message)evtTrigger), postprocessorInput ); }
async Task RunForHttpArchive( IEnumerableAsync <HAR.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { HAR.IMessagingEvents messagingEvents = new HAR.MessagingEvents(); var events = EnumerableAsync.Merge( messagingEvents.GetEvents(input) ); await postprocessing.SequenceDiagram.SavePostprocessorOutput( events, null, null, null, evtTrigger => TextLogEventTrigger.Make((HAR.Message)evtTrigger), postprocessorInput ); }
async Task RunForChromeDriver( IEnumerableAsync <CD.Message[]> input, LogSourcePostprocessorInput postprocessorInput ) { IPrefixMatcher matcher = postprocessing.CreatePrefixMatcher(); var logMessages = input.MatchTextPrefixes(matcher).Multiplex(); CD.ITimelineEvents networkEvents = new CD.TimelineEvents(matcher); var endOfTimelineEventSource = postprocessing.Timeline.CreateEndOfTimelineEventSource <MessagePrefixesPair <CD.Message> > (m => m.Message); var extensionSources = pluginModel.ChromeDriverTimeLineEventSources.Select(src => src( matcher, logMessages, postprocessorInput.TemplatesTracker)).ToArray(); var networkEvts = networkEvents.GetEvents(logMessages); var eofEvts = endOfTimelineEventSource.GetEvents(logMessages); matcher.Freeze(); var events = extensionSources.Select(s => s.Events).ToList(); events.Add(networkEvts); events.Add(eofEvts); var serialize = postprocessing.Timeline.SavePostprocessorOutput( EnumerableAsync.Merge(events.ToArray()), null, evtTrigger => TextLogEventTrigger.Make((CD.Message)evtTrigger), postprocessorInput ); var tasks = new List <Task>(); tasks.Add(serialize); tasks.AddRange(extensionSources.SelectMany(s => s.MultiplexingEnumerables.Select(e => e.Open()))); tasks.Add(logMessages.Open()); await Task.WhenAll(tasks); }
Task IModel.SavePostprocessorOutput( IEnumerableAsync <M.Event[]> events, IEnumerableAsync <TL.Event[]> timelineComments, IEnumerableAsync <SI.Event[]> stateInspectorComments, Task <ILogPartToken> rotatedLogPartToken, Func <object, TextLogEventTrigger> triggersConverter, LogSourcePostprocessorInput postprocessorInput ) { return(SequenceDiagramPostprocessorOutput.SerializePostprocessorOutput( events, timelineComments, stateInspectorComments, rotatedLogPartToken, logPartTokenFactories, triggersConverter, postprocessorInput.InputContentsEtag, postprocessorInput.OutputFileName, tempFiles, postprocessorInput.CancellationToken )); }
public Task Build(LogSourcePostprocessorInput postprocessorParams) { return(build(postprocessorParams, this)); }
public static string GetLogFileNameHint(this LogSourcePostprocessorInput input) { return(GetLogFileNameHint(input.LogSource.Provider)); }