static void Main(string[] args) { string data; using (var sr = new StreamReader(@"Sample.json")) { data = sr.ReadToEnd(); } //data = "test"; var logger = new AppLogger(); var executor = new RedisExecutor(logger); int.TryParse(ConfigurationManager.AppSettings["threadsNumber"], out int threadsNumber); int.TryParse(ConfigurationManager.AppSettings["operationsNumber"], out int operationsNumber); int.TryParse(ConfigurationManager.AppSettings["secondsNumber"], out int secondsToRun); int[] tasks = Enumerable.Range(1, threadsNumber).ToArray(); logger.Info($"Starting with {threadsNumber} threads and {operationsNumber} operations."); var timeUp = TimeSpan.FromSeconds(secondsToRun); RedisCacheW.Instance.RedisCache.Get("asasjakjsa"); Parallel.ForEach(tasks, t => { var watcher = new Stopwatch(); watcher.Start(); do { Task.Factory .StartNew(() => { executor.ExecuteInsertsAndReads(data, operationsNumber); }) .Wait(); Console.Clear(); Console.WriteLine($"Elapsed: {watcher.Elapsed} of {timeUp}"); }while (watcher.Elapsed < timeUp); }); Console.WriteLine("Press any key..."); Console.ReadLine(); }
static void Main(string[] args) { string data; using (var sr = new StreamReader(@"D:\Work Related\Redis Stress Test\Redis-Stress-Test\StressTest.App\Sample.json")) { data = sr.ReadToEnd(); } var logger = new AppLogger(); var executor = new RedisExecutor(logger); int.TryParse(ConfigurationManager.AppSettings["threadsNumber"], out int threadsNumber); int.TryParse(ConfigurationManager.AppSettings["operationsNumber"], out int operationsNumber); int.TryParse(ConfigurationManager.AppSettings["secondsNumber"], out int secondsToRun); Task[] tasks = new Task[threadsNumber]; executor.InitializeKeys(threadsNumber, operationsNumber); logger.Info($"Starting with {threadsNumber} threads and {operationsNumber} operations."); var watcher = new Stopwatch(); watcher.Start(); do { //insert data for (int index = 0; index < threadsNumber; index += 1) { try { tasks[index] = Task.Factory.StartNew(() => executor.ExecuteInserts(executor.InitializeKeys(threadsNumber, operationsNumber), data, operationsNumber)); } catch (Exception e) { logger.Error(e); throw; } } //get data for (int index = 0; index < threadsNumber; index += 1) { try { tasks[index] = Task.Factory.StartNew(() => executor.ExecuteReads(executor.InitializeKeys(threadsNumber, operationsNumber), operationsNumber)); } catch (Exception e) { logger.Error(e); throw; } } //delete data for (int index = 0; index < threadsNumber; index += 1) { try { tasks[index] = Task.Factory.StartNew(() => executor.ExecuteDeletes(executor.InitializeKeys(threadsNumber, operationsNumber), operationsNumber)); } catch (Exception e) { logger.Error(e); throw; } } }while (watcher.Elapsed < TimeSpan.FromSeconds(secondsToRun)); Console.ReadLine(); }