public LogsTests() { _rnd = new Random(1); _beginTime = DateTime.UtcNow; var sw = Stopwatch.StartNew(); _logsToAdd = new RaxNewLog[ITERS][]; var lastLogTime = _beginTime; var totalLogIndex = 0; for (int i = 0; i < ITERS; i++) { _logsToAdd[i] = new RaxNewLog[LOGS_PER_ITER]; for (int j = 0; j < LOGS_PER_ITER; j++, ++totalLogIndex) { var local = new List <string>(); var indx = _rnd.Next(0, _cats.Length); if (_rnd.NextDouble() > 0.5) { local.Add(_cats[indx]); var nindx = _rnd.Next(0, _cats.Length); while (nindx == indx) { nindx = _rnd.Next(0, _cats.Length); } indx = nindx; } local.Add(_cats[indx]); _logsToAdd[i][j] = new RaxNewLog { Categories = local.ToArray(), Message = $"LOG ENTRY {i}x{j} - {Guid.NewGuid():N}".ToCharArray(), Timestamp = lastLogTime.ToTimestamp() }; _endTime = lastLogTime; if (_rnd.NextDouble() > 0.4) { lastLogTime = lastLogTime.AddMinutes(_rnd.Next(0, 60)); } else if (totalLogIndex % 2000 == 0) { lastLogTime = lastLogTime.AddMonths(3); } } } sw.Stop(); Console.WriteLine($"MIN DATE = {_beginTime}"); Console.WriteLine($"MAX DATE = {_endTime}"); Console.WriteLine($"CREATE {ITERS * LOGS_PER_ITER} LOGS = {sw.Elapsed}"); }
public LogsBenchmark(bool manyMinutes, bool manyYears) { _logs = new RaxNewLog[N][]; var rnd = new Random(); var lastLogTime = DateTime.UtcNow; long totalLogIndex = 0; for (int i = 0; i < N; i++) { _logs[i] = new RaxNewLog[LOGS]; for (int j = 0; j < LOGS; j++, ++totalLogIndex) { var local = new List <string>(); var indx = rnd.Next(0, _cats.Length); if (rnd.NextDouble() > 0.5) { local.Add(_cats[indx]); var nindx = rnd.Next(0, _cats.Length); while (nindx == indx) { nindx = rnd.Next(0, _cats.Length); } indx = nindx; } local.Add(_cats[indx]); _logs[i][j] = new RaxNewLog { Categories = local.ToArray(), Message = $"LOG ENTRY {i}x{j} - {Guid.NewGuid():N}".ToCharArray(), Timestamp = lastLogTime.ToTimestamp() }; if (manyMinutes && rnd.NextDouble() > 0.4) { lastLogTime = lastLogTime.AddMinutes(rnd.Next(0, 60)); } else if (manyYears && totalLogIndex % 5000 == 0) { lastLogTime = lastLogTime.AddMonths(3); } } } string logsDir = $"_temp_bench_{N}_{LOGS}"; if (!Directory.Exists(logsDir)) { Directory.CreateDirectory(logsDir); } Directory.GetFiles(logsDir).ToList().ForEach(x => File.Delete(x)); _table = RaxManager.OpenTable(logsDir); }
public void ProcessNewLogInCategory(RaxNewLog log) { if (LogsCount++ == 0) { MinTimestamp = MaxTimestamp = log.Timestamp; } else { if (log.Timestamp > MaxTimestamp) { MaxTimestamp = log.Timestamp; } } }