public void ApplyContextConfigLogParserFailureHandling()
        {
            var parser = new XMLLogParser();

            parser.SetConfig(logConfig);
            parser.SetRegistry(logRegistry);

            logRegistry.AddLog(Arg.Any <string>(), Arg.Any <string>()).Returns(logEntry);
            logRegistry.AddFailedLog().Returns(failedLogEntry);

            parser.ApplyContextConfig(ContextConfigs.FailureHandling, LogParserFailureHandling.MarkEntriesAsFailed, contextParser =>
            {
                Assert.That(Object.ReferenceEquals(contextParser, parser), Is.False);

                var log = "<fakelog time=\"goodtime\" log=\"my log1\"></fakelog><fakelog log=\"my log2\"></fakelog>";
                using (var ms = CreateStream(log))
                {
                    contextParser.Parse(ms);
                }
            });

            logRegistry.Received(1).AddLog("goodtime", "my log1");
            logRegistry.Received(1).AddFailedLog();
            logRegistry.Received(1).NotifyFailedLogParsed(failedLogEntry);
            logRegistry.DidNotReceive().AddValueToLog(logEntry, Arg.Any <LogAttribute>(), Arg.Any <object>());
            logRegistry.Received().AddValueToLog(failedLogEntry, LogAttribute.Message, Arg.Any <object>());
        }
        public void ApplyContextConfigMultiConfig()
        {
            var parser = new XMLLogParser();

            parser.SetConfig(logConfig);
            parser.SetRegistry(logRegistry);

            logRegistry.AddLog(Arg.Any <string>(), Arg.Any <string>()).Returns(logEntry);
            logRegistry.AddFailedLog().Returns(failedLogEntry);

            var configs = new Dictionary <ContextConfigs, object>
            {
                { ContextConfigs.LogSource, "tests" },
                { ContextConfigs.FailureHandling, LogParserFailureHandling.MarkEntriesAsFailed }
            };

            parser.ApplyContextConfig(configs, contextParser =>
            {
                Assert.That(Object.ReferenceEquals(contextParser, parser), Is.False);

                var log = "<fakelog time=\"goodtime\" log=\"my log1\"></fakelog><fakelog log=\"my log2\"></fakelog>";
                using (var ms = CreateStream(log))
                {
                    contextParser.Parse(ms);
                }
            });

            logRegistry.Received(1).AddLog("goodtime", "my log1");
            logRegistry.Received(1).AddFailedLog();
            logRegistry.Received(1).NotifyFailedLogParsed(failedLogEntry);
            logRegistry.Received(1).AddValueToLog(logEntry, LogAttribute.LogSource, "tests");
            logRegistry.Received(2).AddValueToLog(failedLogEntry, Arg.Is <LogAttribute>(att => att == LogAttribute.Message || att == LogAttribute.LogSource), Arg.Any <object>());
        }
        public void ApplyContextConfigLogSource()
        {
            var parser = new XMLLogParser();

            parser.SetConfig(logConfig);
            parser.SetRegistry(logRegistry);

            logRegistry.AddLog("goodtime", "my log").Returns(logEntry);

            var configs = new Dictionary <ContextConfigs, object>
            {
                { ContextConfigs.LogSource, "tests" }
            };

            parser.ApplyContextConfig(configs, contextParser =>
            {
                Assert.That(Object.ReferenceEquals(contextParser, parser), Is.False);

                var log = "<fakelog time=\"goodtime\" log=\"my log\"></fakelog>";
                using (var ms = CreateStream(log))
                {
                    contextParser.Parse(ms);
                }
            });

            logRegistry.Received().AddLog("goodtime", "my log");
            logRegistry.Received(1).AddValueToLog(logEntry, LogAttribute.LogSource, "tests");
        }
Example #4
0
            public ILogParser Create(ILogRegistry registry, LogConfig config)
            {
                creationCounter.Increment();

                var parser = new XMLLogParser();

                parser.SetRegistry(registry);
                parser.SetConfig(config);
                return(parser);
            }
        public void ApplyContextConfigContextInvalid()
        {
            var parser = new XMLLogParser();

            parser.SetConfig(logConfig);
            parser.SetRegistry(logRegistry);

            Assert.Throws <ArgumentNullException>(() =>
            {
                parser.ApplyContextConfig(null, null);
            });
        }
        public void ApplyContextConfigLogHasRootInvalid()
        {
            var parser = new XMLLogParser();

            parser.SetConfig(logConfig);
            parser.SetRegistry(logRegistry);

            Assert.Throws <ArgumentException>(() =>
            {
                parser.ApplyContextConfig(ContextConfigs.LogHasRoot, "false", contextParser =>
                {
                });
            });
        }
        public void ApplyContextConfigLogParserFailureHandlingInvalid()
        {
            var parser = new XMLLogParser();

            parser.SetConfig(logConfig);
            parser.SetRegistry(logRegistry);

            Assert.Throws <ArgumentException>(() =>
            {
                parser.ApplyContextConfig(ContextConfigs.FailureHandling, false, contextParser =>
                {
                });
            });
        }
        public void BasicTestAsyncCancelled()
        {
            var parser = new XMLLogParser();

            parser.SetConfig(logConfig);
            parser.SetRegistry(logRegistry);

            logRegistry.AddLog("goodtime", "my log").Returns(logEntry);

            var cancellationToken = new System.Threading.CancellationToken(true);

            var log       = "<fakelog time=\"goodtime\" log=\"my log\"></fakelog>";
            var ms        = CreateStream(log);
            var parseTask = parser.ParseAsync(ms, cancellationToken);

            parseTask.ContinueWith(_ => ms.Dispose(), System.Threading.Tasks.TaskContinuationOptions.ExecuteSynchronously).Wait();

            logRegistry.DidNotReceive().AddLog(Arg.Any <string>(), Arg.Any <string>());
            logRegistry.DidNotReceive().AddValueToLog(logEntry, Arg.Any <LogAttribute>(), Arg.Any <object>());
        }
        public void ApplyContextConfigLogHasRoot()
        {
            var parser = new XMLLogParser();

            parser.SetConfig(logConfig);
            parser.SetRegistry(logRegistry);

            logRegistry.AddLog(Arg.Any <string>(), Arg.Any <string>()).Returns(logEntry);

            parser.ApplyContextConfig(ContextConfigs.LogHasRoot, true, contextParser =>
            {
                Assert.That(Object.ReferenceEquals(contextParser, parser), Is.False);

                var log = "<myroot><fakelog time=\"goodtime\" log=\"my log\"></fakelog></myroot>";
                using (var ms = CreateStream(log))
                {
                    contextParser.Parse(ms);
                }
            });

            logRegistry.Received(1).AddLog("goodtime", "my log");
            logRegistry.DidNotReceive().AddValueToLog(logEntry, Arg.Any <LogAttribute>(), Arg.Any <object>());
        }
        public void LogFile()
        {
            var tmpLogFile = Path.GetTempFileName();

            using (var sw = new StreamWriter(tmpLogFile))
            {
                sw.Write("<fakelog time=\"goodtime-file\" log=\"my log\"></fakelog>");
            }

            Console.WriteLine(tmpLogFile);

            var parser = new XMLLogParser();

            parser.SetConfig(logConfig);
            parser.SetRegistry(logRegistry);

            logRegistry.AddLog("goodtime-file", "my log").Returns(logEntry);

            parser.Parse(tmpLogFile);

            logRegistry.Received().AddLog("goodtime-file", "my log");
            logRegistry.DidNotReceive().AddValueToLog(logEntry, Arg.Any <LogAttribute>(), Arg.Any <object>());
        }
        // Note, the usage of "default implementations" means that XMLLogParser must be cast to ILogParser otherwise compile errors will occur
        private static (XMLLogParser, ILogParser) CreateXMLLogParser()
        {
            var parser = new XMLLogParser();

            return(parser, parser);
        }