public override bool Matches(string filter, PrefixMatcher matcher) { if (Parent.Matches(filter, matcher)) { return true; } return matcher.IsMatch(FieldName); }
async static Task RunForWebRTCDump( IEnumerableAsync <WRD.Message[]> input, string outputFileName, CancellationToken cancellation, ICodepathTracker templatesTracker, XAttribute contentsEtagAttr ) { IPrefixMatcher matcher = new PrefixMatcher(); var logMessages = WRD.Helpers.MatchPrefixes(input, matcher).Multiplex(); WRD.IWebRtcStateInspector webRtcStateInspector = new WRD.WebRtcStateInspector(matcher); var webRtcEvts = webRtcStateInspector.GetEvents(logMessages); matcher.Freeze(); var events = EnumerableAsync.Merge( webRtcEvts ) .Select(ConvertTriggers <WRD.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); }
public TimeSeriesCombinedParser(IEnumerable <Type> eventTypes) { // Each type can have multiple expressions and hence result in more than one parser instance var parsers = new List <TSA.ILineParser>(); foreach (var t in eventTypes) { List <Regex> regexps; List <string> prefixes; List <UInt32> numericIds; ExtractExpressions(t, out regexps, out prefixes, out numericIds); if (regexps.Count == 0) { throw new ArgumentException(string.Format("Type {0} is not marked with any of attribute [Expression]", t.Name)); } for (var i = 0; i < regexps.Count; ++i) { var timeSeriesParser = TSA.TimeSeriesEventParser.TryCreate(t, regexps[i], prefixes[i], numericIds[i]); if (timeSeriesParser != null) { parsers.Add(timeSeriesParser); } var eventParser = TSA.GenericEventParser.TryCreate(t, regexps[i], prefixes[i], numericIds[0]); if (eventParser != null) { parsers.Add(eventParser); } } } _prefixMatcher = new PrefixMatcher(); _parsers = parsers.Where(p => p.GetNumericId() == 0).ToLookup(p => _prefixMatcher.RegisterPrefix(p.GetPrefix())); _numericIdCapableParsers = parsers.Where(p => p.GetNumericId() != 0).ToLookup(p => p.GetNumericId()); }
public MatchingResult Match(PrefixMatcher prefixMatcher, ITextControl textControl) { return Item.Match(prefixMatcher, textControl); }
public MatchingResult Match(PrefixMatcher prefixMatcher) { return(myLookupItem.Match(prefixMatcher)); }
public override MatchingResult Match(PrefixMatcher prefixMatcher) { var result = base.Match(prefixMatcher); return(result?.Shift(myShiftOffset)); }
public MatchingResult Match(PrefixMatcher prefixMatcher, ITextControl textControl) { return(Item.Match(prefixMatcher, textControl)); }
public override bool Matches(string filter, PrefixMatcher matcher) { return matcher.IsMatch(GetTypeClrName()); }
public override bool Matches(string filter, PrefixMatcher matcher) { return(matcher.IsMatch(GetTypeClrName())); }
public virtual MatchingResult Match(PrefixMatcher prefixMatcher, ITextControl textControl) { return(prefixMatcher.Matcher(myIdentifier)); }
public override MatchingResult Match(PrefixMatcher prefixMatcher, ITextControl textControl) { var result = base.Match(prefixMatcher, textControl); return(result?.Shift(myShiftOffset)); }
async Task <IPostprocessorRunSummary> Run(LogSourcePostprocessorInput[] inputFiles, IPostprocessorsRegistry postprocessorsRegistry) { var usedRoleInstanceNames = new HashSet <string>(); Func <LogSourcePostprocessorInput, string> getUniqueRoleInstanceName = inputFile => { for (int tryCount = 0; ; ++tryCount) { var ret = string.Format( tryCount == 0 ? "{0}" : "{0} ({1})", inputFile.LogSource.GetShortDisplayNameWithAnnotation(), tryCount ); if (usedRoleInstanceNames.Add(ret)) { return(ret); } } }; var noMessagingEvents = Task.FromResult(new List <M.Event>()); var chromeDebugLogs = Enumerable.Empty <NodeInfo>() .Concat( inputFiles .Where(f => f.LogSource.Provider.Factory == postprocessorsRegistry.ChromeDebugLog.LogProviderFactory) .Select(inputFile => { var reader = (new CDL.Reader(inputFile.CancellationToken)).Read(inputFile.LogFileName, inputFile.GetLogFileNameHint(), inputFile.ProgressHandler); IPrefixMatcher prefixMatcher = new PrefixMatcher(); var nodeId = new NodeId("chrome-debug", getUniqueRoleInstanceName(inputFile)); var matchedMessages = CDL.Helpers.MatchPrefixes(reader, prefixMatcher).Multiplex(); var webRtcStateInspector = new CDL.WebRtcStateInspector(prefixMatcher); var processIdDetector = new CDL.ProcessIdDetector(); var nodeDetectionTokenTask = (new CDL.NodeDetectionTokenSource(processIdDetector, webRtcStateInspector)).GetToken(matchedMessages); return(new NodeInfo( new[] { inputFile.LogSource }, nodeId, matchedMessages, null, noMessagingEvents, nodeDetectionTokenTask )); }) ) .ToList(); var webRtcInternalsDumps = Enumerable.Empty <NodeInfo>() .Concat( inputFiles .Where(f => f.LogSource.Provider.Factory == postprocessorsRegistry.WebRtcInternalsDump.LogProviderFactory) .Select(inputFile => { var reader = (new WRD.Reader(inputFile.CancellationToken)).Read(inputFile.LogFileName, inputFile.GetLogFileNameHint(), inputFile.ProgressHandler); IPrefixMatcher prefixMatcher = new PrefixMatcher(); var nodeId = new NodeId("webrtc-int", getUniqueRoleInstanceName(inputFile)); var matchedMessages = WRD.Helpers.MatchPrefixes(reader, prefixMatcher).Multiplex(); var webRtcStateInspector = new WRD.WebRtcStateInspector(prefixMatcher); var nodeDetectionTokenTask = (new WRD.NodeDetectionTokenSource(webRtcStateInspector)).GetToken(matchedMessages); return(new NodeInfo( new[] { inputFile.LogSource }, nodeId, matchedMessages, null, noMessagingEvents, nodeDetectionTokenTask )); }) ) .ToList(); var chromeDriverLogs = Enumerable.Empty <NodeInfo>() .Concat( inputFiles .Where(f => f.LogSource.Provider.Factory == postprocessorsRegistry.ChromeDriver.LogProviderFactory) .Select(inputFile => { var reader = (new CD.Reader(inputFile.CancellationToken)).Read(inputFile.LogFileName, inputFile.GetLogFileNameHint(), inputFile.ProgressHandler); IPrefixMatcher prefixMatcher = new PrefixMatcher(); var nodeId = new NodeId("webrtc-int", getUniqueRoleInstanceName(inputFile)); var matchedMessages = CD.Helpers.MatchPrefixes(reader, prefixMatcher).Multiplex(); var nodeDetectionTokenTask = (new CD.NodeDetectionTokenSource(new CD.ProcessIdDetector(prefixMatcher), prefixMatcher)).GetToken(matchedMessages); return(new NodeInfo( new[] { inputFile.LogSource }, nodeId, matchedMessages, null, noMessagingEvents, nodeDetectionTokenTask )); }) ) .ToList(); var tasks = new List <Task>(); tasks.AddRange(chromeDebugLogs.Select(l => l.SameNodeDetectionTokenTask)); tasks.AddRange(chromeDebugLogs.Select(l => l.MultiplexingEnumerable.Open())); tasks.AddRange(webRtcInternalsDumps.Select(l => l.SameNodeDetectionTokenTask)); tasks.AddRange(webRtcInternalsDumps.Select(l => l.MultiplexingEnumerable.Open())); tasks.AddRange(chromeDriverLogs.Select(l => l.SameNodeDetectionTokenTask)); tasks.AddRange(chromeDriverLogs.Select(l => l.MultiplexingEnumerable.Open())); await Task.WhenAll(tasks); var allLogs = Enumerable.Empty <NodeInfo>() .Concat(chromeDebugLogs) .Concat(webRtcInternalsDumps) .Concat(chromeDriverLogs) .ToArray(); var fixedConstraints = allLogs .GroupBy(l => l.SameNodeDetectionTokenTask.Result, new SameNodeEqualityComparer()) .SelectMany(group => LinqUtils.ZipWithNext(group).Select(pair => new NodesConstraint() { Node1 = pair.Key.NodeId, Node2 = pair.Value.NodeId, Value = pair.Value.SameNodeDetectionTokenTask.Result.DetectSameNode(pair.Key.SameNodeDetectionTokenTask.Result).TimeDiff })) .ToList(); var allowInstacesMergingForRoles = new HashSet <string>(); ICorrelator correlator = new LogJoint.Analytics.Correlation.Correlator( new M.Analisys.InternodeMessagesDetector(), SolverFactory.Create() ); var correlatorSolution = await correlator.Correlate( allLogs.ToDictionary(i => i.NodeId, i => (IEnumerable <M.Event>)i.MessagesTask.Result), fixedConstraints, allowInstacesMergingForRoles ); var nodeIdToLogSources = (from l in allLogs from ls in l.LogSources select new { L = l.NodeId, Ls = ls }) .ToLookup(i => i.L, i => i.Ls); var grouppedLogsReport = new StringBuilder(); foreach (var group in allLogs.Where(g => g.LogSources.Length > 1)) { if (grouppedLogsReport.Length == 0) { grouppedLogsReport.AppendLine(); grouppedLogsReport.AppendLine("Groupped logs info:"); } grouppedLogsReport.AppendLine(string.Format( " - {0} were groupped to represent node {1}", string.Join(", ", group.LogSources.Select(ls => '\"' + ls.GetShortDisplayNameWithAnnotation() + '\"')), group.NodeId)); } var timeOffsets = (from ns in correlatorSolution.NodeSolutions from ls in nodeIdToLogSources[ns.Key] select new { Sln = ns.Value, Ls = ls }) .ToDictionary(i => i.Ls, i => i.Sln); await modelThreadSync.Invoke(() => { foreach (var ls in ljModel.SourcesManager.Items) { NodeSolution sln; if (timeOffsets.TryGetValue(ls, out sln)) { ITimeOffsetsBuilder builder = new TimeOffsets.Builder(); builder.SetBaseOffset(sln.BaseDelta); if (sln.TimeDeltas != null) { foreach (var d in sln.TimeDeltas) { builder.AddOffset(d.At, d.Delta); } } ls.TimeOffsets = builder.ToTimeOffsets(); } } }); var correlatedLogsConnectionIds = postprocessorsManager.GetCorrelatableLogsConnectionIds(inputFiles.Select(i => i.LogSource)); foreach (var inputFile in inputFiles) { NodeSolution sln; if (!timeOffsets.TryGetValue(inputFile.LogSource, out sln)) { continue; } (new CorrelatorPostprocessorOutput(sln, correlatedLogsConnectionIds)).Save(inputFile.OutputFileName); } return(new CorrelatorPostprocessorRunSummary(correlatorSolution.Success, correlatorSolution.CorrelationLog + grouppedLogsReport.ToString())); }
public MatchingResult Match(PrefixMatcher prefixMatcher, ITextControl textControl) { return(prefixMatcher.Matcher(myFakeText)); }
MatchingResult ILookupItem.Match(PrefixMatcher prefixMatcher, ITextControl textControl) { string prefix = prefixMatcher.Prefix; Log.Info("Match prefix = {0}", prefix); if (_tree == null || string.IsNullOrEmpty(prefix)) { Log.Error("Expand tree is null, return."); return null; } var matcher = new LiveTemplateMatcher(_tree); var matchedScopes = _scopes.Where(s => _tree.IsScopeExist(s)).ToList(); Log.Trace("Matched scopes = {0}", string.Join(", ", matchedScopes)); if (matchedScopes.Count == 0) { return null; } foreach (var scope in matchedScopes) { try { var matchingResult = GetMatchingResult(prefix, matcher, scope); if (matchingResult != null) { return matchingResult; } } catch (Exception e) { Log.Error("Exception during match", e); return null; } } return null; }
public MatchingResult Match(PrefixMatcher prefixMatcher, ITextControl textControl) { return(prefixMatcher.Matcher(myShortName)); }