コード例 #1
0
ファイル: PerfTests.cs プロジェクト: erxdkh/azos
        //[Run("!arch-perf-write", "compress=gzip   encrypt=aes1   cnt=16000000 para=16")]
        public void Write_LogMessages(string compress, string encrypt, int CNT, int PARA)
        {
            var msData  = new FileStream("c:\\azos\\logging-{0}-{1}.lar".Args(compress.Default("none"), encrypt.Default("none")), FileMode.Create);
            var msIdxId = new FileStream("c:\\azos\\logging-{0}-{1}.guid.lix".Args(compress.Default("none"), encrypt.Default("none")), FileMode.Create);


            var volumeData = new DefaultVolume(CryptoMan, VolumeMetadataBuilder.Make("Perf", LogMessageArchiveAppender.CONTENT_TYPE_LOG)
                                               .SetVersion(1, 1)
                                               .SetDescription("Perf testing")
                                               .SetCompressionScheme(compress)
                                               .SetEncryptionScheme(encrypt),
                                               msData);

            var volumeIdxId = new DefaultVolume(CryptoMan, VolumeMetadataBuilder.Make("Perf", StringIdxAppender.CONTENT_TYPE_IDX_STRING)
                                                .SetVersion(1, 1)
                                                .SetDescription("Perf testing")
                                                .SetCompressionScheme(compress)
                                                .SetEncryptionScheme(encrypt),
                                                msIdxId);


            volumeData.PageSizeBytes  = 1024 * 1024;
            volumeIdxId.PageSizeBytes = 128 * 1024;

            var time = Azos.Time.Timeter.StartNew();


            Parallel.For(0, PARA, _ => {
                var app = Azos.Apps.ExecutionContext.Application;

                using (var aIdxId = new StringIdxAppender(volumeIdxId,
                                                          NOPApplication.Instance.TimeSource,
                                                          NOPApplication.Instance.AppId, "dima@zhaba"))
                {
                    using (var appender = new LogMessageArchiveAppender(volumeData,
                                                                        NOPApplication.Instance.TimeSource,
                                                                        NOPApplication.Instance.AppId,
                                                                        "dima@zhaba",
                                                                        onPageCommit: (e, b) => aIdxId.Append(new StringBookmark(e.Guid.ToString().TakeLastChars(4), b))))
                    {
                        for (var i = 0; app.Active && i < CNT / PARA; i++)
                        {
                            var msg = FakeLogMessage.BuildRandom();
                            appender.Append(msg);
                        }
                    }
                }
            });

            time.Stop();
            "Did {0:n0} in {1:n1} sec at {2:n2} ops/sec\n".SeeArgs(CNT, time.ElapsedSec, CNT / time.ElapsedSec);

            volumeIdxId.Dispose();
            volumeData.Dispose();

            "CLOSED all volumes\n".See();
        }
コード例 #2
0
ファイル: LogMsgTests.cs プロジェクト: erxdkh/azos
        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();
        }
コード例 #3
0
        public void Write_Read_Compare_Strings(bool ascii, int pgsize, string compress, int count, int min, int max)
        {
            var expected = ascii ? FakeLogMessage.BuildRandomASCIIStringArr(count, min, max) : FakeLogMessage.BuildRandomUnicodeStringArr(count, min, max);
            var ms       = new MemoryStream();

            var meta = VolumeMetadataBuilder.Make("String archive", StringArchiveAppender.CONTENT_TYPE_STRING)
                       .SetVersion(1, 0)
                       .SetDescription("Testing string messages")
                       .SetChannel(Atom.Encode("dvop"));

            if (compress.IsNotNullOrWhiteSpace())
            {
                meta.SetCompressionScheme(compress);
            }

            var volume = new DefaultVolume(NOPApplication.Instance.SecurityManager.Cryptography, meta, ms);

            volume.PageSizeBytes = pgsize;

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

            "Volume data stream is {0:n0} bytes".SeeArgs(ms.Length);

            var reader = new StringArchiveReader(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], got[i]);
            }

            volume.Dispose();
        }