async static Task RunForHttpArchive( IEnumerableAsync <HAR.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { HAR.ITimelineEvents timelineEvents = new HAR.TimelineEvents(); var events = EnumerableAsync.Merge( timelineEvents.GetEvents(input) ) .ToFlatList(); await events; if (cancellation.IsCancellationRequested) { return; } if (templatesTracker != null) { (await events).ForEach(e => templatesTracker.RegisterUsage(e.TemplateId)); } TimelinePostprocessorOutput.SerializePostprocessorOutput( await events, null, evtTrigger => TextLogEventTrigger.Make((HAR.Message)evtTrigger), contentsEtagAttr ).SaveToFileOrToStdOut(outputFileName); }
async static Task RunForSymLog( IEnumerableAsync <Sym.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { IPrefixMatcher matcher = new PrefixMatcher(); var events = RunForSymMessages(matcher, input); matcher.Freeze(); await events; if (cancellation.IsCancellationRequested) { return; } TimelinePostprocessorOutput.SerializePostprocessorOutput( await events, null, evtTrigger => TextLogEventTrigger.Make((Sym.Message)evtTrigger), contentsEtagAttr ).SaveToFileOrToStdOut(outputFileName); }
async static Task RunForSymRTC( IEnumerableAsync <Sym.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { IPrefixMatcher matcher = new PrefixMatcher(); var logMessages = Sym.Helpers.MatchPrefixes(input, matcher).Multiplex(); Sym.IMeetingsStateInspector symMeetingsStateInspector = new Sym.MeetingsStateInspector(matcher); var symMeetingEvents = symMeetingsStateInspector.GetEvents(logMessages); matcher.Freeze(); var events = EnumerableAsync.Merge( symMeetingEvents.Select(ConvertTriggers <Sym.Message>) ).ToFlatList(); await Task.WhenAll(events, logMessages.Open()); if (cancellation.IsCancellationRequested) { return; } if (templatesTracker != null) { (await events).ForEach(e => templatesTracker.RegisterUsage(e.TemplateId)); } StateInspectorOutput.SerializePostprocessorOutput(await events, null, contentsEtagAttr).Save(outputFileName); }
async Task RunForWebRtcNativeLogMessages( IEnumerableAsync <CDL.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { timeSeriesTypesAccess.CheckForCustomConfigUpdate(); ICombinedParser parser = new TimeSeriesCombinedParser(timeSeriesTypesAccess.GetMetadataTypes()); await parser.FeedLogMessages(input); foreach (var ts in parser.GetParsedTimeSeries()) { ts.DataPoints = Analytics.TimeSeries.Filters.RemoveRepeatedValues.Filter(ts.DataPoints).ToList(); } TimeSeriesPostprocessorOutput.SerializePostprocessorOutput( parser.GetParsedTimeSeries(), parser.GetParsedEvents(), outputFileName, timeSeriesTypesAccess); }
public static IEnumerableAsync <Event[]> TrackTemplates(this ICodepathTracker codepathTracker, IEnumerableAsync <Event[]> events) { return(events.Select(batch => { if (codepathTracker != null) { foreach (var e in batch) { codepathTracker.RegisterUsage(e.TemplateId); } } return batch; })); }
async static Task RunForChromeDebug( IEnumerableAsync <CDL.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { var multiplexedInput = input.Multiplex(); IPrefixMatcher matcher = new PrefixMatcher(); var logMessages = CDL.Helpers.MatchPrefixes(multiplexedInput, matcher).Multiplex(); Sym.IMeetingsStateInspector symMeetingsStateInsector = new Sym.MeetingsStateInspector(matcher); var symLog = Sym.Helpers.MatchPrefixes((new Sym.Reader()).FromChromeDebugLog(multiplexedInput), matcher).Multiplex(); var symMeetingStateEvents = symMeetingsStateInsector.GetEvents(symLog); var symMeetingEvents = (new InspectedObjectsLifetimeEventsSource(e => e.ObjectType == Sym.MeetingsStateInspector.MeetingTypeInfo || e.ObjectType == Sym.MeetingsStateInspector.MeetingSessionTypeInfo )).GetEvents(symMeetingStateEvents); matcher.Freeze(); var events = EnumerableAsync.Merge( symMeetingEvents ) .ToFlatList(); await Task.WhenAll(events, symLog.Open(), /*logMessages.Open(),*/ multiplexedInput.Open()); if (cancellation.IsCancellationRequested) { return; } if (templatesTracker != null) { (await events).ForEach(e => templatesTracker.RegisterUsage(e.TemplateId)); } TimelinePostprocessorOutput.SerializePostprocessorOutput( await events, null, evtTrigger => TextLogEventTrigger.Make((Sym.Message)evtTrigger), contentsEtagAttr ).SaveToFileOrToStdOut(outputFileName); }
async Task RunForWebRtcInternalsDump( IEnumerableAsync <DMP.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { timeSeriesTypesAccess.CheckForCustomConfigUpdate(); ICombinedParser parser = new TimeSeriesCombinedParser(timeSeriesTypesAccess.GetMetadataTypes()); await parser.FeedLogMessages(input, m => m.ObjectId, m => m.Text); TimeSeriesPostprocessorOutput.SerializePostprocessorOutput( parser.GetParsedTimeSeries(), parser.GetParsedEvents(), outputFileName, timeSeriesTypesAccess); }
async Task RunForSymphonyRtc( IEnumerableAsync <Sym.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { timeSeriesTypesAccess.CheckForCustomConfigUpdate(); ICombinedParser parser = new TimeSeriesCombinedParser(timeSeriesTypesAccess.GetMetadataTypes()); await parser.FeedLogMessages(input, m => m.Text, m => string.Format("{0}.{1}", m.Logger, m.Text)); TimeSeriesPostprocessorOutput.SerializePostprocessorOutput( parser.GetParsedTimeSeries(), parser.GetParsedEvents(), outputFileName, timeSeriesTypesAccess); }
async static Task RunForChromeDriver( IEnumerableAsync <CD.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { IPrefixMatcher matcher = new PrefixMatcher(); var logMessages = CD.Helpers.MatchPrefixes(input, matcher).Multiplex(); CD.ITimelineEvents networkEvents = new CD.TimelineEvents(matcher); var networkEvts = networkEvents.GetEvents(logMessages); matcher.Freeze(); var events = EnumerableAsync.Merge( networkEvts ) .ToFlatList(); await Task.WhenAll(events, logMessages.Open()); if (cancellation.IsCancellationRequested) { return; } if (templatesTracker != null) { (await events).ForEach(e => templatesTracker.RegisterUsage(e.TemplateId)); } TimelinePostprocessorOutput.SerializePostprocessorOutput( await events, null, evtTrigger => TextLogEventTrigger.Make((CD.Message)evtTrigger), contentsEtagAttr ).SaveToFileOrToStdOut(outputFileName); }
private IEnumerableAsync <Event[]> RunForSymMessages( IPrefixMatcher matcher, IEnumerableAsync <Sym.Message[]> messages, ICodepathTracker templatesTracker, out IMultiplexingEnumerable <MessagePrefixesPair <Sym.Message>[]> symLog ) { Sym.IMeetingsStateInspector symMeetingsStateInspector = new Sym.MeetingsStateInspector(matcher); Sym.IMediaStateInspector symMediaStateInsector = new Sym.MediaStateInspector(matcher, symMeetingsStateInspector); Sym.ITimelineEvents symTimelineEvents = new Sym.TimelineEvents(matcher); Sym.Diag.ITimelineEvents diagTimelineEvents = new Sym.Diag.TimelineEvents(matcher); symLog = messages.MatchTextPrefixes(matcher).Multiplex(); var symMeetingStateEvents = symMeetingsStateInspector.GetEvents(symLog); var symMediaStateEvents = symMediaStateInsector.GetEvents(symLog); var symMeetingEvents = postprocessing.Timeline.CreateInspectedObjectsLifetimeEventsSource(e => e.ObjectType == Sym.MeetingsStateInspector.MeetingTypeInfo || e.ObjectType == Sym.MeetingsStateInspector.MeetingSessionTypeInfo || e.ObjectType == Sym.MeetingsStateInspector.MeetingRemoteParticipantTypeInfo || e.ObjectType == Sym.MeetingsStateInspector.ProbeSessionTypeInfo || e.ObjectType == Sym.MeetingsStateInspector.InvitationTypeInfo ).GetEvents(symMeetingStateEvents); var symMediaEvents = postprocessing.Timeline.CreateInspectedObjectsLifetimeEventsSource(e => e.ObjectType == Sym.MediaStateInspector.LocalScreenTypeInfo || e.ObjectType == Sym.MediaStateInspector.LocalAudioTypeInfo || e.ObjectType == Sym.MediaStateInspector.LocalVideoTypeInfo || e.ObjectType == Sym.MediaStateInspector.TestSessionTypeInfo ).GetEvents(symMediaStateEvents); var events = templatesTracker.TrackTemplates(EnumerableAsync.Merge( symMeetingEvents, symMediaEvents, symTimelineEvents.GetEvents(symLog), diagTimelineEvents.GetEvents(symLog) )); return(events); }
async static Task RunForChromeDebug( IEnumerableAsync <CDL.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { var multiplexedInput = input.Multiplex(); IPrefixMatcher matcher = new PrefixMatcher(); // var logMessages = CDL.Helpers.MatchPrefixes(multiplexedInput, matcher); var events = RunForSymMessages( matcher, (new Sym.Reader()).FromChromeDebugLog(multiplexedInput) ); matcher.Freeze(); await Task.WhenAll(events, multiplexedInput.Open()); if (cancellation.IsCancellationRequested) { return; } if (templatesTracker != null) { (await events).ForEach(e => templatesTracker.RegisterUsage(e.TemplateId)); } TimelinePostprocessorOutput.SerializePostprocessorOutput( await events, null, evtTrigger => TextLogEventTrigger.Make((Sym.Message)evtTrigger), contentsEtagAttr ).SaveToFileOrToStdOut(outputFileName); }
public static LogSourcePostprocessorInput SetTemplatesTracker(this LogSourcePostprocessorInput input, ICodepathTracker value) { input.TemplatesTracker = value; return(input); }