/// <summary> /// Generate performance block ranges for a block. /// </summary> /// <param name="block">The block to generate for.</param> /// <returns>A task to monitor the progress.</returns> private async Task GeneratePerfRangesForBlock(Func <IBlobCache, int, List <string>, Task <long> > block) { var results = new Dictionary <int, long>(); var dbName = default(string); var dirPath = default(string); using (Utility.WithEmptyDirectory(out dirPath)) using (var cache = await GenerateAGiantDatabase(dirPath).ConfigureAwait(false)) { var keys = await cache.GetAllKeys(); dbName = cache.GetType().Name; foreach (var size in PerfHelper.GetPerfRanges()) { results[size] = await block(cache, size, keys.ToList()).ConfigureAwait(false); } } Console.WriteLine(dbName); foreach (var kvp in results) { Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value); } }
/// <summary> /// Generates a giant database. /// </summary> /// <param name="path">A path to use for generating it.</param> /// <returns>The blob cache.</returns> private async Task <IBlobCache> GenerateAGiantDatabase(string path) { path ??= IntegrationTestHelper.GetIntegrationTestRootDirectory(); var giantDbSize = PerfHelper.GetPerfRanges().Last(); var cache = CreateBlobCache(path); var keys = await cache.GetAllKeys(); if (keys.Count() == giantDbSize) { return(cache); } await cache.InvalidateAll(); await PerfHelper.GenerateDatabase(cache, giantDbSize).ConfigureAwait(false); return(cache); }
public async Task GeneratePerfRangesForBlock(Func <IBlobCache, int, Task <long> > block) { var results = new Dictionary <int, long>(); var dbName = default(string); var dirPath = default(string); using (Utility.WithEmptyDirectory(out dirPath)) using (var cache = CreateBlobCache(dirPath)) { dbName = dbName ?? cache.GetType().Name; foreach (var size in PerfHelper.GetPerfRanges()) { results[size] = await block(cache, size); } } Console.WriteLine(dbName); foreach (var kvp in results) { Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value); } }