public Task DeleteAll() { return(Task.WhenAll( _cache.DeleteAll(), _varyBy.DeleteAll(), _uriInfo.DeleteAll() )); }
static void Main(string[] args) { string testPlanParameters = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestPlan.json")); var testPlans = JsonConvert.DeserializeObject <List <TestPlan> >(testPlanParameters); foreach (var testPlan in testPlans) { try { ICacheProvider provider = ProviderFactory.GetByName(testPlan.ProviderName); var keys = PrepareTestData(testPlan, provider); ConcurrentBag <TestResult> results = new ConcurrentBag <TestResult>(); List <Task> tasks = new List <Task>(); for (int i = 0; i < testPlan.Threads.Count; i++) { var value = i; tasks.Add(Task.Factory.StartNew(() => { var cacheProvider = ProviderFactory.GetByName(testPlan.ProviderName); for (int j = 0; j < testPlan.RepeateCount; j++) { results.Add(ProcessOneRequest(cacheProvider, keys, testPlan.Threads[value])); } Thread.Sleep(testPlan.Threads[value].Interval); })); } Task.WaitAll(tasks.ToArray()); if (!Directory.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports"))) { Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports")); } var res = results.ToList(); File.WriteAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports", $"{testPlan.Name}.csv"), TestResultConverter.Convert(res.OrderBy(p => p.DateTimeStart))); var groupedRes = res.GroupBy(p => p.ThreadNumber); foreach (var item in groupedRes) { File.WriteAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports", $"{testPlan.Name} - {item.Key}.csv"), TestResultConverter.Convert(item)); } File.AppendAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "process.log"), $"Processed {testPlan.Name}"); provider.DeleteAll(keys.Select(p => p.Value)); } catch (Exception ex) { File.AppendAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "error.log"), DateTime.Now.ToString() + " | " + ex.ToString()); } } }
public Task DeleteAll() { return(_cache.DeleteAll()); }