public void Test2SmallSources()
        {
            using (var source1 = new LogFile(_scheduler, LogFileTest.File2Entries))
            using (var source2 = new LogFile(_scheduler, LogFileTest.File2Lines))
            using (var merged = new MergedLogFile(_scheduler, TimeSpan.Zero, source1, source2))
            {
                source1.Property(x => x.EndOfSourceReached).ShouldEventually().BeTrue();

                source2.Property(x => x.EndOfSourceReached).ShouldEventually().BeTrue();

                merged.Property(x => x.Count).ShouldEventually().Be(8, TimeSpan.FromSeconds(5),
                                                                    "Because the merged file should've been finished");
                merged.Property(x => x.FileSize).ShouldEventually().Be(source1.FileSize + source2.FileSize);
                merged.Property(x => x.StartTimestamp).ShouldEventually().Be(source1.StartTimestamp);

                LogLine[] source1Lines = source1.GetSection(new LogFileSection(0, source1.Count));
                LogLine[] source2Lines = source2.GetSection(new LogFileSection(0, source2.Count));
                LogLine[] mergedLines = merged.GetSection(new LogFileSection(0, merged.Count));

                mergedLines[0].Should().Be(new LogLine(0, 0, source1Lines[0]));
                mergedLines[1].Should().Be(new LogLine(1, 0, source1Lines[1]));
                mergedLines[2].Should().Be(new LogLine(2, 0, source1Lines[2]));
                mergedLines[3].Should().Be(new LogLine(3, 1, source2Lines[0]));
                mergedLines[4].Should().Be(new LogLine(4, 2, source1Lines[3]));
                mergedLines[5].Should().Be(new LogLine(5, 2, source1Lines[4]));
                mergedLines[6].Should().Be(new LogLine(6, 2, source1Lines[5]));
                mergedLines[7].Should().Be(new LogLine(7, 3, source2Lines[1]));
            }
        }
        public void Test20Mb()
        {
            using (var source = new LogFile(_scheduler, LogFileTest.File20Mb))
            using (var merged = new MergedLogFile(_scheduler, TimeSpan.FromMilliseconds(1), source))
            {
                source.Property(x => x.EndOfSourceReached).ShouldEventually().BeTrue();

                merged.Property(x => x.EndOfSourceReached).ShouldEventually().BeTrue();

                merged.Count.Should().Be(source.Count);
                merged.FileSize.Should().Be(source.FileSize);
                merged.StartTimestamp.Should().Be(source.StartTimestamp);

                LogLine[] sourceLines = source.GetSection(new LogFileSection(0, source.Count));
                LogLine[] mergedLines = merged.GetSection(new LogFileSection(0, merged.Count));
                for (int i = 0; i < source.Count; ++i)
                {
                    LogLine mergedLine = mergedLines[i];
                    LogLine sourceLine = sourceLines[i];
                    mergedLine.Should().Be(sourceLine);
                }
            }
        }
Example #3
0
        public void TestRead2LogEntries()
        {
            using (var file = new LogFile(_scheduler, File2Entries))
            {
                var listener = new Mock<ILogFileListener>();
                var changes = new List<LogFileSection>();
                listener.Setup(x => x.OnLogFileModified(It.IsAny<ILogFile>(), It.IsAny<LogFileSection>()))
                        .Callback((ILogFile logFile, LogFileSection section) => changes.Add(section));

                file.AddListener(listener.Object, TimeSpan.Zero, 1);

                changes.Property(x => x.Count).ShouldEventually().Be(7, TimeSpan.FromSeconds(5));

                changes.Should().Equal(new[]
                    {
                        LogFileSection.Reset,
                        new LogFileSection(0, 1),
                        new LogFileSection(1, 1),
                        new LogFileSection(2, 1),
                        new LogFileSection(3, 1),
                        new LogFileSection(4, 1),
                        new LogFileSection(5, 1)
                    });

                file.StartTimestamp.Should().Be(new DateTime(2015, 10, 7, 19, 50, 58, 982));

                LogLine[] lines = file.GetSection(new LogFileSection(0, 6));
                lines.Should().Equal(new[]
                    {
                        new LogLine(0, 0,
                                    "2015-10-07 19:50:58,982 [8092, 1] INFO  SharpRemote.Hosting.OutOfProcessSiloServer (null) - Silo Server starting, args (1): \"14056\", without custom type resolver",
                                    LevelFlags.Info, new DateTime(2015, 10, 7, 19, 50, 58, 982)),
                        new LogLine(1, 0, "Foobar", LevelFlags.Info, new DateTime(2015, 10, 7, 19, 50, 58, 982)),
                        new LogLine(2, 0, "Some more info", LevelFlags.Info, new DateTime(2015, 10, 7, 19, 50, 58, 982)),
                        new LogLine(3, 1,
                                    "2015-10-07 19:50:58,998 [8092, 1] DEBUG SharpRemote.Hosting.OutOfProcessSiloServer (null) - Args.Length: 1",
                                    LevelFlags.Debug, new DateTime(2015, 10, 7, 19, 50, 58, 998)),
                        new LogLine(4, 1, "Hey look at me", LevelFlags.Debug, new DateTime(2015, 10, 7, 19, 50, 58, 998)),
                        new LogLine(5, 1, "dwadawdadw", LevelFlags.Debug, new DateTime(2015, 10, 7, 19, 50, 58, 998))
                    });
            }
        }
Example #4
0
        public void TestGetSection1()
        {
            using (var file = new LogFile(_scheduler, File20Mb))
            {
                file.Property(x => x.EndOfSourceReached).ShouldEventually().BeTrue(TimeSpan.FromSeconds(20), "because we should be able to read the entire file in a few seconds");
                file.Count.Should().Be(165342);
                file.StartTimestamp.Should().Be(new DateTime(2015, 10, 7, 19, 50, 58, 982));

                LogLine[] section = file.GetSection(new LogFileSection(0, 10));
                section.Should().Equal(new[]
                    {
                        new LogLine(0,
                                    "2015-10-07 19:50:58,982 [8092, 1] INFO  SharpRemote.Hosting.OutOfProcessSiloServer (null) - Silo Server starting, args (1): \"14056\", without custom type resolver",
                                    LevelFlags.Info,
                                    new DateTime(2015, 10, 7, 19, 50, 58, 982)),
                        new LogLine(1,
                                    "2015-10-07 19:50:58,998 [8092, 1] DEBUG SharpRemote.Hosting.OutOfProcessSiloServer (null) - Args.Length: 1",
                                    LevelFlags.Debug,
                                    new DateTime(2015, 10, 7, 19, 50, 58, 998)),
                        new LogLine(2,
                                    "2015-10-07 19:50:59,013 [8092, 1] DEBUG SharpRemote.AbstractSocketRemotingEndPoint (null) - Creating new servant (#18446744073709551613) 'SharpRemote.Heartbeat' implementing 'SharpRemote.IHeartbeat'",
                                    LevelFlags.Debug,
                                    new DateTime(2015, 10, 7, 19, 50, 59, 013)),
                        new LogLine(3,
                                    "2015-10-07 19:50:59,062 [8092, 1] DEBUG SharpRemote.AbstractSocketRemotingEndPoint (null) - Creating new servant (#18446744073709551614) 'SharpRemote.Latency' implementing 'SharpRemote.ILatency'",
                                    LevelFlags.Debug,
                                    new DateTime(2015, 10, 7, 19, 50, 59, 062)),
                        new LogLine(4,
                                    "2015-10-07 19:50:59,067 [8092, 1] DEBUG SharpRemote.AbstractSocketRemotingEndPoint (null) - Creating new servant (#18446744073709551615) 'SharpRemote.Hosting.SubjectHost' implementing 'SharpRemote.Hosting.ISubjectHost'",
                                    LevelFlags.Debug,
                                    new DateTime(2015, 10, 7, 19, 50, 59, 067)),
                        new LogLine(5,
                                    "2015-10-07 19:50:59,081 [8092, 1] INFO  SharpRemote.SocketRemotingEndPointServer (null) - EndPoint '<Unnamed>' listening on 0.0.0.0:49152",
                                    LevelFlags.Info,
                                    new DateTime(2015, 10, 7, 19, 50, 59, 081)),
                        new LogLine(6,
                                    "2015-10-07 19:50:59,141 [8092, 6] DEBUG SharpRemote.SocketRemotingEndPointServer (null) - Incoming connection from '127.0.0.1:10348', starting handshake...",
                                    LevelFlags.Debug,
                                    new DateTime(2015, 10, 7, 19, 50, 59, 141)),
                        new LogLine(7,
                                    "2015-10-07 19:50:59,171 [8092, 6] INFO  SharpRemote.AbstractIPSocketRemotingEndPoint (null) - <Unnamed>: Connected to 127.0.0.1:10348",
                                    LevelFlags.Info,
                                    new DateTime(2015, 10, 7, 19, 50, 59, 171)),
                        new LogLine(8,
                                    "2015-10-07 19:50:59,181 [8092, 10] DEBUG SharpRemote.AbstractSocketRemotingEndPoint (null) - 0.0.0.0:49152 to 127.0.0.1:10348: sending RPC #1 to 18446744073709551611.Beat",
                                    LevelFlags.Debug,
                                    new DateTime(2015, 10, 7, 19, 50, 59, 181)),
                        new LogLine(9,
                                    "2015-10-07 19:50:59,182 [8092, 11] DEBUG SharpRemote.AbstractSocketRemotingEndPoint (null) - 0.0.0.0:49152 to 127.0.0.1:10348: sending RPC #2 to 18446744073709551612.Roundtrip",
                                    LevelFlags.Debug,
                                    new DateTime(2015, 10, 7, 19, 50, 59, 182))
                    });
            }
        }