Example #1
0
        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}");
        }
Example #2
0
        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);
        }
Example #3
0
 public void ProcessNewLogInCategory(RaxNewLog log)
 {
     if (LogsCount++ == 0)
     {
         MinTimestamp = MaxTimestamp = log.Timestamp;
     }
     else
     {
         if (log.Timestamp > MaxTimestamp)
         {
             MaxTimestamp = log.Timestamp;
         }
     }
 }