private static void PrintStats() { string str = string.Join(",", IgniteFactory.GetIgnite().GetCacheNames() .Select(c => IgniteFactory.GetIgnite().GetCache <object, object>(c)) .Select(c => $"{c.Name}: {c.GetLocalSize()}/{c.GetSize()}")); Console.WriteLine(str); }
public static async void LoadCachesDistributed() { var funcs = ReflectionHelper.GetTimTypes().Select(t => new LoadCacheAction { Type = t }); var sw = Stopwatch.StartNew(); await IgniteFactory.GetIgnite().GetCompute().RunAsync(funcs); Console.WriteLine($"LoadCachesDistributed took {sw.Elapsed}"); await IgniteFactory.GetIgnite().GetCompute().BroadcastAsync(new PrintMessageAction { Message = $"LoadCachesDistributed took {sw.Elapsed}" }); }
private static void RunDbStressTest() { Console.WriteLine($"Starting DB stress test"); var sw = Stopwatch.StartNew(); int counter = 0; Parallel.ForEach(ReflectionHelper.GetTimTypes(), t => { var ctx = new TimDbContext(); var rnd = new Random(); var repository = ctx.GetType().GetProperties().FirstOrDefault(p => p.Name == t.Name).GetValue(ctx); var cache = IgniteFactory.GetIgnite().GetCache <int, object>(t.Name);; //GetOrCreateCache(t); var size = ReflectionHelper.GetCacheSize(cache); if (size < 2) { return; } if (t.GetProperty("ID") == null) { return; } if (t.Assembly.GetType($"{t.Name}ComplexPK") != null) { return; } for (int i = 0; i < 1000; i++) { var key = rnd.Next(1, size - 1); try { var item = repository.GetType().GetMethod("Find").Invoke(repository, new object[] { new object[] { key } }); if (item != null) { counter++; } } catch (Exception ex) { Console.WriteLine($"Exception in {t.Name}"); return; } } }); Console.WriteLine($"DB stress test for {counter} items finished in {sw.Elapsed}"); }
private static void RunIgniteStressTest() { Console.WriteLine($"Starting Ignite stress test"); var sw = Stopwatch.StartNew(); int counter = 0; //foreach (var t in GetTimTypes()) Parallel.ForEach(ReflectionHelper.GetTimTypes(), t => { var cache = IgniteFactory.GetIgnite().GetCache <int, object>(t.Name);; //GetOrCreateCache(t); var rnd = new Random(); var size = ReflectionHelper.GetCacheSize(cache); if (size < 2) { return; } if (t.GetProperty("ID") == null) { return; } if (t.Assembly.GetType($"{t.Name}ComplexPK") != null) { return; } for (int i = 0; i < 1000; i++) { var key = rnd.Next(1, size - 1); if (cache.ContainsKey(key)) { var item = cache[key]; counter++; } } }); Console.WriteLine($"Ignite stress test for {counter} items finished in {sw.Elapsed}"); }
public static void Main(string[] args) { Ignition.ClientMode = args.Any(s => s.Contains("client")); if (!Ignition.ClientMode) { Environment.SetEnvironmentVariable("IGNITE_H2_DEBUG_CONSOLE", "true"); } IgniteFactory.GetIgnite(); if (Ignition.ClientMode) { IgniteFactory.CreateLocalCaches(); } Console.WriteLine("\n>>> Example started\n\n"); Console.WriteLine("Press Q to quit, L to reload caches, R to run query, D for DB stress test, S for Ignite stress test, any key to display local stats"); while (true) { switch (Console.Read()) { case 'q': return; case 'l': IgniteFactory.LoadCaches(); break; case 'r': RunQueryGetBudgetDataSections(); break; case 'p': var actions = new List <Action>(); for (int i = 0; i < 10; i++) { actions.Add(RunQueryPPRV); } Parallel.Invoke(actions.ToArray()); break; case 's': RunIgniteStressTest(); break; case 'd': RunDbStressTest(); break; case '\r': case '\n': break; default: PrintStats(); break; } } }