Exemplo n.º 1
0
        public void CompressedReadWriteTests()
        {
            TestHelper.CleanupTestFolder();
            string          directoryPath = Path.Combine(TestHelper.TestFolder, "GzipCKMonWriterClientTest");
            ActivityMonitor m             = new ActivityMonitor();
            var             client        = new CKMonWriterClient(directoryPath, 20000, LogFilter.Undefined, true);

            m.Output.RegisterClient(client);
            using (m.OpenWarn().Send("Group test"))
            {
                m.Info().Send("Line test");
            }
            // This closes the client: the file is then compressed asynchronously
            // on a thread from the ThreadPool.
            Assert.That(client.IsOpened);
            m.Output.UnregisterClient(client);
            string    ckmonPath = TestHelper.WaitForCkmonFilesInDirectory(directoryPath, 1)[0];
            LogReader r         = LogReader.Open(ckmonPath);

            r.MoveNext();
            Assert.That(r.Current.LogType, Is.EqualTo(LogEntryType.OpenGroup));
            Assert.That(r.Current.Text, Is.EqualTo("Group test"));
            r.MoveNext();
            Assert.That(r.Current.LogType, Is.EqualTo(LogEntryType.Line));
            Assert.That(r.Current.Text, Is.EqualTo("Line test"));
            r.MoveNext();
            Assert.That(r.Current.LogType, Is.EqualTo(LogEntryType.CloseGroup));
            bool hasRemainingEntries = r.MoveNext();

            Assert.That(hasRemainingEntries, Is.False);
        }
Exemplo n.º 2
0
        public void LogEntry_write_and_read_back()
        {
            var exInner = new CKExceptionData("message", "typeof(exception)", "assemblyQualifiedName", "stackTrace", null, "fileName", "fusionLog", null, null);
            var ex2     = new CKExceptionData("message2", "typeof(exception2)", "assemblyQualifiedName2", "stackTrace2", exInner, "fileName2", "fusionLog2", null, null);
            var exL     = new CKExceptionData("loader-message", "typeof(loader-exception)", "loader-assemblyQualifiedName", "loader-stackTrace", null, "loader-fileName", "loader-fusionLog", null, null);
            var exAgg   = new CKExceptionData("agg-message", "typeof(agg-exception)", "agg-assemblyQualifiedName", "agg-stackTrace", ex2, "fileName", "fusionLog", null, new[] { ex2, exL });

            var       prevLog = DateTimeStamp.UtcNow;
            ILogEntry e1      = LogEntry.CreateLog("Text1", new DateTimeStamp(DateTime.UtcNow, 42), LogLevel.Info, "c:\\test.cs", 3712, ActivityMonitor.Tags.CreateDependentToken, exAgg);
            ILogEntry e2      = LogEntry.CreateMulticastLog("GOId", "3712", LogEntryType.Line, prevLog, 5, "Text2", DateTimeStamp.UtcNow, LogLevel.Fatal, null, 3712, ActivityMonitor.Tags.CreateDependentToken, exAgg);;

            using (var mem = new MemoryStream())
                using (var w = new CKBinaryWriter(mem))
                {
                    w.Write(LogReader.CurrentStreamVersion);
                    e1.WriteLogEntry(w);
                    e2.WriteLogEntry(w);
                    w.Write((byte)0);
                    w.Flush();

                    byte[] versionBytes = new byte[4];
                    mem.Position = 0;
                    mem.Read(versionBytes, 0, 4);
                    BitConverter.ToInt32(versionBytes, 0).Should().Be(LogReader.CurrentStreamVersion);

                    using (var reader = new LogReader(mem, LogReader.CurrentStreamVersion, 4))
                    {
                        reader.MoveNext().Should().BeTrue();
                        reader.Current.Text.Should().Be(e1.Text);
                        reader.Current.LogLevel.Should().Be(e1.LogLevel);
                        reader.Current.LogTime.Should().Be(e1.LogTime);
                        reader.Current.FileName.Should().Be(e1.FileName);
                        reader.Current.LineNumber.Should().Be(e1.LineNumber);
                        reader.Current.Exception.ExceptionTypeAssemblyQualifiedName.Should().Be(e1.Exception.ExceptionTypeAssemblyQualifiedName);
                        reader.Current.Exception.ToString().Should().Be(e1.Exception.ToString());

                        reader.MoveNext().Should().BeTrue();
                        reader.CurrentMulticast.GrandOutputId.Should().Be("GOId");
                        reader.CurrentMulticast.MonitorId.Should().Be("3712");
                        reader.CurrentMulticast.PreviousEntryType.Should().Be(LogEntryType.Line);
                        reader.CurrentMulticast.PreviousLogTime.Should().Be(prevLog);
                        reader.Current.Text.Should().Be(e2.Text);
                        reader.Current.LogTime.Should().Be(e2.LogTime);
                        reader.Current.FileName.Should().BeNull();
                        reader.Current.LineNumber.Should().Be(0, "Since no file name is set, line number is 0.");
                        reader.Current.Exception.ExceptionTypeAssemblyQualifiedName.Should().Be(e2.Exception.ExceptionTypeAssemblyQualifiedName);
                        reader.Current.Exception.ToString().Should().Be(e2.Exception.ToString());

                        reader.MoveNext().Should().BeFalse();
                        reader.BadEndOfFileMarker.Should().BeFalse();
                    }
                }
        }
Exemplo n.º 3
0
        public void LogEntryReadWrite()
        {
            var exInner = new CKExceptionData( "message", "typeof(exception)", "assemblyQualifiedName", "stackTrace", null, "fileName", "fusionLog", null, null );
            var ex2 = new CKExceptionData( "message2", "typeof(exception2)", "assemblyQualifiedName2", "stackTrace2", exInner, "fileName2", "fusionLog2", null, null );
            var exL = new CKExceptionData( "loader-message", "typeof(loader-exception)", "loader-assemblyQualifiedName", "loader-stackTrace", null, "loader-fileName", "loader-fusionLog", null, null );
            var exAgg = new CKExceptionData( "agg-message", "typeof(agg-exception)", "agg-assemblyQualifiedName", "agg-stackTrace", ex2, "fileName", "fusionLog", null, new[]{ ex2, exL } );

            var prevLog = DateTimeStamp.UtcNow;
            ILogEntry e1 = LogEntry.CreateLog( "Text1", new DateTimeStamp( DateTime.UtcNow, 42 ), LogLevel.Info, "c:\\test.cs", 3712, ActivityMonitor.Tags.CreateDependentActivity, exAgg );
            ILogEntry e2 = LogEntry.CreateMulticastLog( Guid.Empty, LogEntryType.Line, prevLog, 5, "Text2", DateTimeStamp.UtcNow, LogLevel.Fatal, null, 3712, ActivityMonitor.Tags.CreateDependentActivity, exAgg );

            using( var mem = new MemoryStream() )
            using( var w = new CKBinaryWriter( mem ) )
            {
                w.Write( LogReader.CurrentStreamVersion );
                e1.WriteLogEntry( w );
                e2.WriteLogEntry( w );
                w.Write( (byte)0 );
                w.Flush();

                byte[] versionBytes = new byte[4];
                mem.Position = 0;
                mem.Read( versionBytes, 0, 4 );
                Assert.That( BitConverter.ToInt32( versionBytes, 0 ), Is.EqualTo( LogReader.CurrentStreamVersion ) );

                using( var reader = new LogReader( mem, LogReader.CurrentStreamVersion, 4 ) )
                {
                    Assert.That( reader.MoveNext() );
                    Assert.That( reader.Current.Text, Is.EqualTo( e1.Text ) );
                    Assert.That( reader.Current.LogLevel, Is.EqualTo( e1.LogLevel ) );
                    Assert.That( reader.Current.LogTime, Is.EqualTo( e1.LogTime ) );
                    Assert.That( reader.Current.FileName, Is.EqualTo( e1.FileName ) );
                    Assert.That( reader.Current.LineNumber, Is.EqualTo( e1.LineNumber ) );
                    Assert.That( reader.Current.Exception.ExceptionTypeAssemblyQualifiedName, Is.EqualTo( e1.Exception.ExceptionTypeAssemblyQualifiedName ) );
                    Assert.That( reader.Current.Exception.ToString(), Is.EqualTo( e1.Exception.ToString() ) );

                    Assert.That( reader.MoveNext() );
                    Assert.That( reader.CurrentMulticast.PreviousEntryType, Is.EqualTo( LogEntryType.Line ) );
                    Assert.That( reader.CurrentMulticast.PreviousLogTime, Is.EqualTo( prevLog ) );
                    Assert.That( reader.Current.Text, Is.EqualTo( e2.Text ) );
                    Assert.That( reader.Current.LogTime, Is.EqualTo( e2.LogTime ) );
                    Assert.That( reader.Current.FileName, Is.Null );
                    Assert.That( reader.Current.LineNumber, Is.EqualTo( 0 ), "Since no file name is set, line number is 0." );
                    Assert.That( reader.Current.Exception.ExceptionTypeAssemblyQualifiedName, Is.EqualTo( e2.Exception.ExceptionTypeAssemblyQualifiedName ) );
                    Assert.That( reader.Current.Exception.ToString(), Is.EqualTo( e2.Exception.ToString() ) );
                    
                    Assert.That( reader.MoveNext(), Is.False );
                    Assert.That( reader.BadEndOfFileMarker, Is.False );
                }
            }

        }
Exemplo n.º 4
0
        public void LogEntryReadWrite()
        {
            var exInner = new CKExceptionData("message", "typeof(exception)", "assemblyQualifiedName", "stackTrace", null, "fileName", "fusionLog", null, null);
            var ex2     = new CKExceptionData("message2", "typeof(exception2)", "assemblyQualifiedName2", "stackTrace2", exInner, "fileName2", "fusionLog2", null, null);
            var exL     = new CKExceptionData("loader-message", "typeof(loader-exception)", "loader-assemblyQualifiedName", "loader-stackTrace", null, "loader-fileName", "loader-fusionLog", null, null);
            var exAgg   = new CKExceptionData("agg-message", "typeof(agg-exception)", "agg-assemblyQualifiedName", "agg-stackTrace", ex2, "fileName", "fusionLog", null, new[] { ex2, exL });

            var       prevLog = DateTimeStamp.UtcNow;
            ILogEntry e1      = LogEntry.CreateLog("Text1", new DateTimeStamp(DateTime.UtcNow, 42), LogLevel.Info, "c:\\test.cs", 3712, ActivityMonitor.Tags.CreateDependentActivity, exAgg);
            ILogEntry e2      = LogEntry.CreateMulticastLog(Guid.Empty, LogEntryType.Line, prevLog, 5, "Text2", DateTimeStamp.UtcNow, LogLevel.Fatal, null, 3712, ActivityMonitor.Tags.CreateDependentActivity, exAgg);

            using (var mem = new MemoryStream())
                using (var w = new CKBinaryWriter(mem))
                {
                    w.Write(LogReader.CurrentStreamVersion);
                    e1.WriteLogEntry(w);
                    e2.WriteLogEntry(w);
                    w.Write((byte)0);
                    w.Flush();

                    byte[] versionBytes = new byte[4];
                    mem.Position = 0;
                    mem.Read(versionBytes, 0, 4);
                    Assert.That(BitConverter.ToInt32(versionBytes, 0), Is.EqualTo(LogReader.CurrentStreamVersion));

                    using (var reader = new LogReader(mem, LogReader.CurrentStreamVersion, 4))
                    {
                        Assert.That(reader.MoveNext());
                        Assert.That(reader.Current.Text, Is.EqualTo(e1.Text));
                        Assert.That(reader.Current.LogLevel, Is.EqualTo(e1.LogLevel));
                        Assert.That(reader.Current.LogTime, Is.EqualTo(e1.LogTime));
                        Assert.That(reader.Current.FileName, Is.EqualTo(e1.FileName));
                        Assert.That(reader.Current.LineNumber, Is.EqualTo(e1.LineNumber));
                        Assert.That(reader.Current.Exception.ExceptionTypeAssemblyQualifiedName, Is.EqualTo(e1.Exception.ExceptionTypeAssemblyQualifiedName));
                        Assert.That(reader.Current.Exception.ToString(), Is.EqualTo(e1.Exception.ToString()));

                        Assert.That(reader.MoveNext());
                        Assert.That(reader.CurrentMulticast.PreviousEntryType, Is.EqualTo(LogEntryType.Line));
                        Assert.That(reader.CurrentMulticast.PreviousLogTime, Is.EqualTo(prevLog));
                        Assert.That(reader.Current.Text, Is.EqualTo(e2.Text));
                        Assert.That(reader.Current.LogTime, Is.EqualTo(e2.LogTime));
                        Assert.That(reader.Current.FileName, Is.Null);
                        Assert.That(reader.Current.LineNumber, Is.EqualTo(0), "Since no file name is set, line number is 0.");
                        Assert.That(reader.Current.Exception.ExceptionTypeAssemblyQualifiedName, Is.EqualTo(e2.Exception.ExceptionTypeAssemblyQualifiedName));
                        Assert.That(reader.Current.Exception.ToString(), Is.EqualTo(e2.Exception.ToString()));

                        Assert.That(reader.MoveNext(), Is.False);
                        Assert.That(reader.BadEndOfFileMarker, Is.False);
                    }
                }
        }
Exemplo n.º 5
0
 public IndexCkmon(LuceneConfiguration configuration, string pathCkmon)
 {
     using (var indexer = new LuceneIndexer(configuration))
         using (LogReader reader = LogReader.Open(pathCkmon))
         {
             reader.MoveNext();
             for ( ; ;)
             {
                 indexer.IndexLog(reader.CurrentMulticast, configuration.Directory);
                 if (!reader.MoveNext())
                 {
                     return;
                 }
             }
         }
 }
Exemplo n.º 6
0
 private static void CopyTo(MulticastLogEntryTextBuilder b, string filePath)
 {
     using (LogReader r = LogReader.Open(filePath, 0L, null))
     {
         var o = Console.Out;
         {
             int i = 0;
             while (r.MoveNext())
             {
                 b.AppendEntry(r.CurrentMulticast);
                 if (i++ == 20)
                 {
                     o.Write(b.Builder.ToString());
                     b.Builder.Clear();
                     i = 0;
                 }
             }
             o.Write(b.Builder.ToString());
         }
     }
 }