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);
 }
Exemple #5
0
 public MatchingResult Match(PrefixMatcher prefixMatcher)
 {
     return(myLookupItem.Match(prefixMatcher));
 }
Exemple #6
0
            public override MatchingResult Match(PrefixMatcher prefixMatcher)
            {
                var result = base.Match(prefixMatcher);

                return(result?.Shift(myShiftOffset));
            }
Exemple #7
0
 public MatchingResult Match(PrefixMatcher prefixMatcher, ITextControl textControl)
 {
     return(Item.Match(prefixMatcher, textControl));
 }
 public override bool Matches(string filter, PrefixMatcher matcher)
 {
   return matcher.IsMatch(GetTypeClrName());
 }
Exemple #9
0
 public override bool Matches(string filter, PrefixMatcher matcher)
 {
     return(matcher.IsMatch(GetTypeClrName()));
 }
Exemple #10
0
 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));
 }