protected static async Task AssertComplexTypeCachingAsync(ICacheLayer cacheLayer) { var complexTypeOneEntry = new CacheEntry <ComplexTypeCaching_TypeOne>(new ComplexTypeCaching_TypeOne { ExampleString = "Hello World", ExampleNumber = 99, ListOfNumbers = new List <int>() { 1, 2, 4, 8 } }, TimeSpan.FromDays(1)); await cacheLayer.SetAsync("ComplexTypeOne", complexTypeOneEntry); var complexTypeOneEntryGet = await cacheLayer.GetAsync <ComplexTypeCaching_TypeOne>("ComplexTypeOne"); Assert.AreEqual(complexTypeOneEntry, complexTypeOneEntryGet, "Set value in cache doesn't match retrieved value"); var complexTypeTwoEntry = new CacheEntry <ComplexTypeCaching_TypeTwo>(new ComplexTypeCaching_TypeTwo { ExampleString = "Hello World", ArrayOfObjects = new[] { complexTypeOneEntry.Value }, DictionaryOfNumbers = new Dictionary <string, int>() { { "A", 1 }, { "Z", 26 } } }, TimeSpan.FromDays(1)); await cacheLayer.SetAsync("ComplexTypeTwo", complexTypeTwoEntry); var complexTypeTwoEntryGet = await cacheLayer.GetAsync <ComplexTypeCaching_TypeTwo>("ComplexTypeTwo"); Assert.AreEqual(complexTypeTwoEntry, complexTypeTwoEntryGet, "Set value in cache doesn't match retrieved value"); }
public EventLogFilterRepo(ISettingsProvider settingsProvider, IEventRecordTimeSpanSearcher eventRecordTimeSpanSearcher, ICacheLayer sweetCacheLayer) { EventLogCache = sweetCacheLayer; ListOfServersToQuery = settingsProvider.ServersToQuery; SearchTermsList = settingsProvider.FilterTerm; EventRTimeSearcher = eventRecordTimeSpanSearcher; }
public GithubRawProvider(HttpClient http, ICacheLayer cache) { _http = http; _cache = cache; _maxCraftedItemLevel = 0; }
protected static async Task AssertGetSetCacheAsync(ICacheLayer cacheLayer) { var cacheEntry = new CacheEntry <int>(12, TimeSpan.FromDays(1)); await cacheLayer.SetAsync("AssertGetSetCache", cacheEntry); var cacheEntryGet = await cacheLayer.GetAsync <int>("AssertGetSetCache"); Assert.AreEqual(cacheEntry, cacheEntryGet, "Set value in cache doesn't match retrieved value"); }
public void AddNewCacheLayer(CacheKey key, ICacheLayer layer) { if (!cacheStructure.ContainsKey(key)) { cacheStructure.Add(key, layer); } else { } }
protected static async Task DisposeOf(ICacheLayer cacheLayer) { if (cacheLayer is IDisposable disposableLayer) { disposableLayer.Dispose(); } else if (cacheLayer is IAsyncDisposable asyncDisposableLayer) { await asyncDisposableLayer.DisposeAsync(); } }
protected async ValueTask BenchmarkWork(ICacheLayer cacheLayer) { for (var iterationCount = 0; iterationCount < WorkIterations; iterationCount++) { //Get 100 misses for (var i = 0; i < 100; i++) { await cacheLayer.GetAsync <int>("GetMiss_" + i); } var startDate = DateTime.UtcNow.AddDays(-50); //Set first 100 (simple type) for (var i = 0; i < 100; i++) { await cacheLayer.SetAsync("Comparison_" + i, new CacheEntry <int>(1, startDate.AddDays(i) + TimeSpan.FromDays(1))); } //Set last 100 (complex type) for (var i = 100; i < 200; i++) { await cacheLayer.SetAsync("Comparison_" + i, new CacheEntry <ComplexType>(new ComplexType { ExampleString = "Hello World", ExampleNumber = 42, ExampleDate = new DateTime(2000, 1, 1), DictionaryOfNumbers = new Dictionary <string, int>() { { "A", 1 }, { "B", 2 }, { "C", 3 } } }, startDate.AddDays(i - 100) + TimeSpan.FromDays(1))); } //Get first 50 (simple type) for (var i = 0; i < 50; i++) { await cacheLayer.GetAsync <int>("Comparison_" + i); } //Get last 50 (complex type) for (var i = 150; i < 200; i++) { await cacheLayer.GetAsync <ComplexType>("Comparison_" + i); } //Evict middle 100 for (var i = 50; i < 150; i++) { await cacheLayer.EvictAsync("Comparison_" + i); } //Cleanup outer 100 await cacheLayer.CleanupAsync(); } }
protected static async Task AssertCacheFlushAsync(ICacheLayer cacheLayer) { var cacheEntry = new CacheEntry <int>(77, TimeSpan.FromDays(1)); await cacheLayer.SetAsync("AssertCacheFlush-ToFlush", cacheEntry); var cacheEntryGetPreFlush = await cacheLayer.GetAsync <int>("AssertCacheFlush-ToFlush"); Assert.IsNotNull(cacheEntryGetPreFlush, "Value not set in cache"); await cacheLayer.FlushAsync(); var cacheEntryGetPostFlush = await cacheLayer.GetAsync <int>("AssertCacheFlush-ToFlush"); Assert.IsNull(cacheEntryGetPostFlush, "Didn't flush value that should have been"); }
protected static async Task AssertCacheCleanupAsync(ICacheLayer cacheLayer) { async Task <CacheEntry <int> > DoCleanupTest(DateTime dateTime) { var cacheKey = $"AssertCacheCleanup-(DateTime:{dateTime})"; var cacheEntry = new CacheEntry <int>(98, dateTime); await cacheLayer.SetAsync(cacheKey, cacheEntry); await cacheLayer.CleanupAsync(); return(await cacheLayer.GetAsync <int>(cacheKey)); } Assert.IsNotNull(await DoCleanupTest(DateTime.UtcNow.AddDays(1)), "Cleanup removed entry that was still live"); Assert.IsNull(await DoCleanupTest(DateTime.UtcNow.AddDays(-1)), "Cleanup kept entry past the end of life"); }
public LuminaProvider(ICacheLayer cache) { foreach (string folder in _gameFolders) { if (Directory.Exists(Path.Combine(Util.ProgramFilesx86(), folder, @"\game\sqpack"))) { _cyalume = new Cyalume(folder); break; } } if (_cyalume == null) { throw new DirectoryNotFoundException("sqpack folder not found!"); } _cache = cache; _maxCraftedItemLevel = 0; }
protected static async Task AssertCacheEvictionAsync(ICacheLayer cacheLayer) { var cacheEntry = new CacheEntry <int>(77, TimeSpan.FromDays(1)); await cacheLayer.SetAsync("AssertCacheEviction-ToEvict", cacheEntry); await cacheLayer.SetAsync("AssertCacheEviction-ToKeep", cacheEntry); var cacheEntryGetPreEviction1 = await cacheLayer.GetAsync <int>("AssertCacheEviction-ToEvict"); var cacheEntryGetPreEviction2 = await cacheLayer.GetAsync <int>("AssertCacheEviction-ToKeep"); Assert.IsNotNull(cacheEntryGetPreEviction1, "Value not set in cache"); Assert.IsNotNull(cacheEntryGetPreEviction2, "Value not set in cache"); await cacheLayer.EvictAsync("AssertCacheEviction-ToEvict"); var cacheEntryGetPostEviction1 = await cacheLayer.GetAsync <int>("AssertCacheEviction-ToEvict"); var cacheEntryGetPostEviction2 = await cacheLayer.GetAsync <int>("AssertCacheEviction-ToKeep"); Assert.IsNull(cacheEntryGetPostEviction1, "Didn't evict value that should have been"); Assert.IsNotNull(cacheEntryGetPostEviction2, "Evicted entry that should have been kept"); }
public GameDataService(HttpClient http, ICacheLayer cache) { _http = http; _cache = cache; ReloadProvider(); }
public CachedTimezoneLookup(ITimezoneLookup internalLookup, ICacheLayer cacheLayer) { _internalLookup = internalLookup; _cacheLayer = cacheLayer; }
protected static async Task AssertCacheAvailabilityAsync(ICacheLayer cacheLayer, bool expected) { Assert.AreEqual(expected, await cacheLayer.IsAvailableAsync("AnyCacheKey-DoesntNeedToExist")); }
public void RebuildCache <T>() where T : ICacheLayer => _cache = Activator.CreateInstance <T>();
public DbDriver(IRedisClientsManager redisClient, ICluster cassandraCluster, MySqlContext mySqlContext) { _firstCache = new RedisCache(redisClient); _middleCache = new CassandraCache(cassandraCluster); _mySqlContext = mySqlContext; }