Exemplo n.º 1
0
        public void WriteRead(int cnt)
        {
            ////var ms = new FileStream("c:\\azos\\archive.lar", FileMode.Create);//  new MemoryStream();
            var ms = new MemoryStream();

            var meta = VolumeMetadataBuilder.Make("Log archive", LogMessageArchiveAppender.CONTENT_TYPE_LOG)
                       .SetVersion(1, 0)
                       .SetDescription("Testing log messages")
                       .SetChannel(Atom.Encode("dvop"));

            var volume = new DefaultVolume(CryptoMan, meta, ms);

            using (var appender = new LogMessageArchiveAppender(volume,
                                                                NOPApplication.Instance.TimeSource,
                                                                NOPApplication.Instance.AppId, "dima@zhaba"))
            {
                for (var i = 0; i < cnt; i++)
                {
                    var msg = new Message()
                    {
                        Text = "Message#" + i.ToString()
                    }.InitDefaultFields();

                    appender.Append(msg);
                }
            }


            var reader = new LogMessageArchiveReader(volume);

            Aver.AreEqual(cnt, reader.All.Count());
            Aver.AreEqual(cnt, reader.GetEntriesStartingAt(new Bookmark()).Count());
            Aver.AreEqual(cnt, reader.GetBookmarkedEntriesStartingAt(new Bookmark()).Count());
            Aver.AreEqual(cnt, reader.GetEntriesAsObjectsStartingAt(new Bookmark()).Count());
            Aver.AreEqual(cnt, reader.GetBookmarkedEntriesAsObjectsStartingAt(new Bookmark()).Count());

            reader.All.ForEach((m, i) => Aver.AreEqual("Message#" + i.ToString(), m.Text));

            reader.GetBookmarkedEntriesStartingAt(new Bookmark()).ForEach((t, i) =>
            {
                var pointed = reader.GetEntriesStartingAt(t.bm).First();
                Aver.AreEqual("Message#" + i.ToString(), pointed.Text);
                Aver.AreEqual(t.entry.Text, pointed.Text);
            });

            volume.Dispose();
        }
Exemplo n.º 2
0
        public void Write_Read_Compare(string compress, string encrypt, int count, int pgsize)
        {
            var expected = FakeLogMessage.BuildRandomArr(count);
            var ms       = new MemoryStream();

            var meta = VolumeMetadataBuilder.Make("Log archive", LogMessageArchiveAppender.CONTENT_TYPE_LOG)
                       .SetVersion(1, 0)
                       .SetDescription("Testing log messages")
                       .SetChannel(Atom.Encode("dvop"))
                       .SetCompressionScheme(compress)
                       .SetEncryptionScheme(encrypt);

            var volume = new DefaultVolume(CryptoMan, meta, ms)
            {
                PageSizeBytes = pgsize
            };

            using (var appender = new LogMessageArchiveAppender(volume,
                                                                NOPApplication.Instance.TimeSource,
                                                                NOPApplication.Instance.AppId, "dima@zhaba"))
            {
                for (var i = 0; i < count; i++)
                {
                    appender.Append(expected[i]);
                }
            }

            "The volume is {0:n0} bytes".SeeArgs(ms.Length);

            var reader = new LogMessageArchiveReader(volume);

            var got = reader.GetEntriesStartingAt(new Bookmark()).ToArray();

            Aver.AreEqual(expected.Length, got.Length);
            for (int i = 0; i < count; i++)
            {
                Aver.AreEqual(expected[i].App, got[i].App);
                Aver.AreEqual(expected[i].ArchiveDimensions, got[i].ArchiveDimensions);
                Aver.AreEqual(expected[i].Channel, got[i].Channel);
                Aver.AreEqual(expected[i].Exception?.Message, got[i].Exception?.Message);
                Aver.AreEqual(expected[i].From, got[i].From);
                Aver.AreEqual(expected[i].Gdid, got[i].Gdid);
                Aver.AreEqual(expected[i].Guid.ToString(), got[i].Guid.ToString());
                Aver.AreEqual(expected[i].Host, got[i].Host);
                Aver.AreEqual(expected[i].Parameters, got[i].Parameters);
                Aver.AreEqual(expected[i].RelatedTo.ToString(), got[i].RelatedTo.ToString());
                Aver.AreEqual(expected[i].Text, got[i].Text);
                Aver.AreEqual(expected[i].Topic, got[i].Topic);
                Aver.AreEqual((int)expected[i].Type, (int)got[i].Type);
                Aver.AreEqual(expected[i].UTCTimeStamp, got[i].UTCTimeStamp);
            }

            volume.Dispose();
        }