//[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(); }
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(); }
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(); }