Example #1
0
        public async Task LongRunningCacheTest_NoRefresh_InstantGet()
        {
            MemoryCacheWrapper     memoryCache      = new MemoryCacheWrapper(new MemoryCache(new MemoryCacheOptions()));
            Mock <IDatabaseCache>  databaseCache    = new Mock <IDatabaseCache>();
            LongRunningCache <int> longRunningCache = new LongRunningCache <int>(memoryCache, databaseCache.Object, TimeSpan.FromSeconds(2));

            Debug.WriteLine("Starting...");

            var result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.immediateValueGetter());

            Debug.WriteLine(result.State);
            Assert.IsTrue(result.State == CachedValueState.Updating);

            await Task.Delay(1000);

            result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.immediateValueGetter());

            Debug.WriteLine(result.State);
            Assert.IsTrue(result.State == CachedValueState.FoundAndNotUpdating);

            await Task.Delay(3000);

            result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.immediateValueGetter());

            Debug.WriteLine("#3: " + result.State);
            Assert.IsTrue(result.State == CachedValueState.Updating);

            result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.immediateValueGetter());

            await Task.Delay(500);

            Debug.WriteLine("#4: " + result.State);
            Assert.IsTrue(result.State == CachedValueState.FoundAndNotUpdating);
        }
Example #2
0
        public async Task LongRunningCacheTest_WithRefresh_WaitingGet()
        {
            MemoryCacheWrapper     memoryCache      = new MemoryCacheWrapper(new MemoryCache(new MemoryCacheOptions()));
            Mock <IDatabaseCache>  databaseCache    = new Mock <IDatabaseCache>();
            LongRunningCache <int> longRunningCache = new LongRunningCache <int>(memoryCache, databaseCache.Object, TimeSpan.FromSeconds(6), TimeSpan.FromSeconds(3));

            DateTime startTime = DateTime.Now;

            Debug.WriteLine("Starting...");

            var result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.waitingValueGetter(500));

            Debug.WriteLine("0.00: " + result.State);
            Assert.IsTrue(result.State == CachedValueState.Updating);

            await Task.Delay(250);

            result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.waitingValueGetter(500));

            Debug.WriteLine((DateTime.Now - startTime).TotalMilliseconds + ": " + result.State);
            Assert.IsTrue(result.State == CachedValueState.Updating);

            await Task.Delay(1000);

            result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.waitingValueGetter(500));

            Debug.WriteLine((DateTime.Now - startTime).TotalMilliseconds + ": " + result.State);
            Assert.IsTrue(result.State == CachedValueState.FoundAndNotUpdating);

            await Task.Delay(3000);

            result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.waitingValueGetter(500));

            Debug.WriteLine((DateTime.Now - startTime).TotalMilliseconds + ": " + result.State);
            Assert.IsTrue(result.State == CachedValueState.FoundButUpdating);

            await Task.Delay(1000);

            result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.waitingValueGetter(500));

            Debug.WriteLine((DateTime.Now - startTime).TotalMilliseconds + ": " + result.State);
            Assert.IsTrue(result.State == CachedValueState.FoundAndNotUpdating);


            await Task.Delay(10000);

            result = await longRunningCache.GetOrRefreshCachedValueAsync("testKey", this.testRunner(), this.waitingValueGetter(500));

            Debug.WriteLine((DateTime.Now - startTime).TotalMilliseconds + ": " + result.State);
            Assert.IsTrue(result.State == CachedValueState.Updating);
        }
Example #3
0
 public GuildStatsRetriever(
     ICache memoryCache,
     IDatabaseCache databaseCache,
     IBackgroundTaskQueue taskQueue,
     IMailSender mailSender,
     ICommonValuesProvider commonValues,
     IMailGenerator mailGenerator)
 {
     this.longRunningCache = new LongRunningCache <IEnumerable <GuildMemberStats> >(memoryCache, databaseCache, TimeSpan.FromDays(3), TimeSpan.FromDays(1));
     this.taskQueue        = taskQueue;
     this.mailSender       = mailSender;
     this.commonValues     = commonValues;
     this.mailGenerator    = mailGenerator;
 }