示例#1
0
        public async Task GetOrCreateStringAsync_MemoryEmpty_RedisContains_CallTwice()
        {
            const string generatedKey = "key1";

            IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions());

            var options    = Options.Create(new MemoryDistributedCacheOptions());
            var redisCache = new MemoryDistributedCache(options);
            await redisCache.SetStringAsync(generatedKey, Test);

            var logger = Substitute.For <ILogger <CommonCachingService> >();

            var cacheService = new CommonCachingService(memoryCache, redisCache, logger);

            var result = await cacheService.GetOrCreateStringAsync(generatedKey, () => Task.FromResult(Test), TimeSpan.FromSeconds(30), TimeSpan.FromMinutes(5));

            Assert.AreEqual(Test, result);

            result = await cacheService.GetOrCreateStringAsync(generatedKey, () => Task.FromResult(Test), TimeSpan.FromSeconds(30), TimeSpan.FromMinutes(5));

            Assert.AreEqual(Test, result);

            logger.Received(1).Log(LogLevel.Debug, Arg.Any <EventId>(), Arg.Is <Microsoft.Extensions.Logging.Internal.FormattedLogValues>(flv => flv.ToString() == $"Getting cached value from Distributed cache for key {generatedKey}"), null, Arg.Any <Func <Object, Exception, string> >());
            logger.Received(1).Log(LogLevel.Debug, Arg.Any <EventId>(), Arg.Is <Microsoft.Extensions.Logging.Internal.FormattedLogValues>(flv => flv.ToString() == $"Read cached value from Distributed cache for key {generatedKey}"), null, Arg.Any <Func <Object, Exception, string> >());
            logger.Received(0).Log(LogLevel.Debug, Arg.Any <EventId>(), Arg.Is <Microsoft.Extensions.Logging.Internal.FormattedLogValues>(flv => flv.ToString() == $"Stored in Distributed cache for key {generatedKey}"), null, Arg.Any <Func <Object, Exception, string> >());
        }
示例#2
0
        public async Task GetOrCreateStringAsync_MemoryEmpty_RedisContains_CallTwice()
        {
            const string generatedKey = "key1";

            IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions());

            var options    = Options.Create(new MemoryDistributedCacheOptions());
            var redisCache = new MemoryDistributedCache(options);
            await redisCache.SetStringAsync(generatedKey, Test);

            var logger = Substitute.For <LoggerMock <CommonCachingService> >();

            var cacheService = new CommonCachingService(memoryCache, redisCache, logger);

            var result = await cacheService.GetOrCreateStringAsync(generatedKey, () => Task.FromResult(Test), TimeSpan.FromSeconds(30), TimeSpan.FromMinutes(5));

            Assert.AreEqual(Test, result);

            result = await cacheService.GetOrCreateStringAsync(generatedKey, () => Task.FromResult(Test), TimeSpan.FromSeconds(30), TimeSpan.FromMinutes(5));

            Assert.AreEqual(Test, result);

            logger.Received(1).Log(LogLevel.Debug, $"Getting cached value from Distributed cache for key {generatedKey}");
            logger.Received(1).Log(LogLevel.Debug, $"Read cached value from Distributed cache for key {generatedKey}");
            logger.Received(0).Log(LogLevel.Debug, $"Stored in Distributed cache for key {generatedKey}");
        }
示例#3
0
        public async Task GetOrCreateAsync_NotSupportedType()
        {
            const string generatedKey = "key1";

            IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions());

            var options    = Options.Create(new MemoryDistributedCacheOptions());
            var redisCache = new MemoryDistributedCache(options);

            var logger = Substitute.For <ILogger <CommonCachingService> >();

            var cacheService = new CommonCachingService(memoryCache, redisCache, logger);

            var result = await cacheService.GetOrCreateAsync(generatedKey, () => Task.FromResult(Test), TimeSpan.FromSeconds(30), TimeSpan.FromMinutes(5));
        }
示例#4
0
        public async Task GetOrCreateAsync_EmptyCache()
        {
            const string generatedKey = "key1";
            var          testObject   = new TestClass {
                MyProperty = Test
            };

            IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions());

            var options    = Options.Create(new MemoryDistributedCacheOptions());
            var redisCache = new MemoryDistributedCache(options);

            var logger = Substitute.For <LoggerMock <CommonCachingService> >();

            var cacheService = new CommonCachingService(memoryCache, redisCache, logger);

            var result = await cacheService.GetOrCreateAsync(generatedKey, () => Task.FromResult(testObject), TimeSpan.FromSeconds(30), TimeSpan.FromMinutes(5));

            Assert.AreEqual(Test, result.MyProperty);

            logger.Received(1).Log(LogLevel.Debug, $"Getting cached value from Distributed cache for key {generatedKey}");
            logger.Received(0).Log(LogLevel.Debug, $"Read cached value from Distributed cache for key {generatedKey}");
            logger.Received(1).Log(LogLevel.Debug, $"Stored in Distributed cache for key {generatedKey}");
        }