Пример #1
0
    public void Set_ExcessiveMemDurationCappedAtHalf_OK()
    {
        // arrange
        const string encoded       = "\"blob\"";
        var          expectedBytes = Encoding.UTF8.GetBytes(encoded);
        var          cache         = new Mock <IDistributedCache>();
        var          memory        = new Mock <IMemoryCache>();
        var          entry         = new Mock <ICacheEntry>();

        memory.Setup(m => m.CreateEntry(It.IsAny <object>())).Returns(entry.Object);
        var svc = new DualLayerCacheService(cache.Object, memory.Object, new NullLogger <DualLayerCacheService>(),
                                            new OptionsWrapper <CacheSettings>(new CacheSettings {
            DefaultMemoryExpirySeconds = 60 * 60 * 24
        }));

        // act
        var obj = "blob";
        var _   = svc.Set("test", opts =>
        {
            opts.AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(12);
            return(obj);
        });

        // assert
        cache.Verify(m => m.Set("test", It.Is <byte[]>(x => x.SequenceEqual(expectedBytes)), It.IsAny <DistributedCacheEntryOptions>()));
        cache.VerifyNoOtherCalls();
        entry.VerifySet(m => m.Value = obj);
        entry.VerifySet(m => m.AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6));
        entry.Verify(m => m.Dispose());
        entry.VerifyNoOtherCalls();
        memory.Verify(m => m.CreateEntry("test"));
        memory.VerifyNoOtherCalls();
    }
Пример #2
0
    public void Set_OK()
    {
        // arrange
        const string encoded       = "\"blob\"";
        var          expectedBytes = Encoding.UTF8.GetBytes(encoded);
        var          cache         = new Mock <IDistributedCache>();
        var          memory        = new Mock <IMemoryCache>();
        var          entry         = new Mock <ICacheEntry>();

        memory.Setup(m => m.CreateEntry(It.IsAny <object>())).Returns(entry.Object);
        var svc = new DualLayerCacheService(cache.Object, memory.Object, new NullLogger <DualLayerCacheService>(), _opts);

        // act
        const string obj = "blob";
        var          _   = svc.Set("test", _ => obj);

        // assert
        cache.Verify(m => m.Set("test", It.Is <byte[]>(x => x.SequenceEqual(expectedBytes)), It.IsAny <DistributedCacheEntryOptions>()));
        cache.VerifyNoOtherCalls();
        entry.VerifySet(m => m.Value = obj);
        entry.VerifySet(m => m.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(_opts.Value.DefaultMemoryExpirySeconds));
        entry.Verify(m => m.Dispose());
        entry.VerifyNoOtherCalls();
        memory.Verify(m => m.CreateEntry("test"));
        memory.VerifyNoOtherCalls();
    }