Esempio n. 1
0
 public void AccessEveryTenthTenTimesMoreMakesItStay()
 {
     using (var fileCollection = new InMemoryFileCollection())
     {
         const int cacheCapacity = 50000;
         using (var cache = new DiskChunkCache(fileCollection, 20, cacheCapacity))
         {
             for (var i = 0; i < 46; i++)
             {
                 Put(cache, i);
                 for (var j = 0; j < (i % 5 == 0 ? 10 + i : 1); j++)
                 {
                     Get(cache, i);
                 }
                 if (i == 42)
                 {
                     Thread.Sleep(500);
                 }
                 Assert.True(fileCollection.Enumerate().Sum(f => (long)f.GetSize()) <= cacheCapacity);
             }
             _output.WriteLine(cache.CalcStats());
             Assert.True(Get(cache, 0));
             Assert.False(Get(cache, 1));
         }
     }
 }
Esempio n. 2
0
        public async Task GettingContentMakesItStayLongerDecreasingRate()
        {
            using (var fileCollection = new InMemoryFileCollection())
            {
                const int cacheCapacity = 50000;
                using (var cache = new DiskChunkCache(fileCollection, 20, cacheCapacity))
                {
                    for (var i = 0; i < 80; i++)
                    {
                        Put(cache, i);
                        for (var j = 0; j < 79 - i; j++)
                        {
                            Get(cache, i);
                        }
                        if (CalcLength(fileCollection) <= cacheCapacity)
                        {
                            continue;
                        }
                        await FinishCompactTask(cache);

                        Assert.True(CalcLength(fileCollection) <= cacheCapacity);
                    }
                    _output.WriteLine(cache.CalcStats());
                    Assert.True(Get(cache, 0));
                    Assert.False(Get(cache, 60));
                }
            }
        }
Esempio n. 3
0
 public void GetFromEmptyCacheReturnsEmptyByteBuffer()
 {
     using (var fileCollection = new InMemoryFileCollection())
         using (var cache = new DiskChunkCache(fileCollection, 20, 1000))
         {
             Assert.Equal(0, cache.Get(CalcHash(new byte[] { 0 })).Result.Length);
         }
 }
Esempio n. 4
0
 public void WhatIPutICanGet()
 {
     using (var fileCollection = new InMemoryFileCollection())
         using (var cache = new DiskChunkCache(fileCollection, 20, 1000))
         {
             cache.Put(CalcHash(new byte[] { 0 }), ByteBuffer.NewAsync(new byte[] { 1 }));
             Assert.Equal(new byte[] { 1 }, cache.Get(CalcHash(new byte[] { 0 })).Result.ToByteArray());
         }
 }
Esempio n. 5
0
        async Task FinishCompactTask(DiskChunkCache cache)
        {
            var t = cache.CurrentCompactionTask();

            if (t == null)
            {
                return;
            }
            await t;
        }
Esempio n. 6
0
 public void ItRemebersContentAfterReopen()
 {
     using (var fileCollection = new InMemoryFileCollection())
     {
         using (var cache = new DiskChunkCache(fileCollection, 20, 1000))
         {
             cache.Put(CalcHash(new byte[] { 0 }), ByteBuffer.NewAsync(new byte[] { 1 }));
         }
         using (var cache = new DiskChunkCache(fileCollection, 20, 1000))
         {
             Assert.Equal(new byte[] { 1 }, cache.Get(CalcHash(new byte[] { 0 })).Result.ToByteArray());
         }
     }
 }
Esempio n. 7
0
 public void SizeDoesNotGrowOverLimit()
 {
     using (var fileCollection = new InMemoryFileCollection())
     {
         const int cacheCapacity = 50000;
         using (var cache = new DiskChunkCache(fileCollection, 20, cacheCapacity))
         {
             for (var i = 0; i < 80; i++)
             {
                 Put(cache, i);
                 Assert.True(fileCollection.Enumerate().Sum(f => (long)f.GetSize()) <= cacheCapacity);
             }
         }
     }
 }
Esempio n. 8
0
        public async Task SizeDoesNotGrowOverLimit()
        {
            using (var fileCollection = new InMemoryFileCollection())
            {
                const int cacheCapacity = 50000;
                using (var cache = new DiskChunkCache(fileCollection, 20, cacheCapacity))
                {
                    for (var i = 0; i < 80; i++)
                    {
                        Put(cache, i);
                        if (CalcLength(fileCollection) <= cacheCapacity)
                        {
                            continue;
                        }
                        await FinishCompactTask(cache);

                        Assert.True(CalcLength(fileCollection) <= cacheCapacity);
                    }
                }
            }
        }
Esempio n. 9
0
 public void GettingContentMakesItStayLongerIncreasingRate()
 {
     using (var fileCollection = new InMemoryFileCollection())
     {
         const int cacheCapacity = 50000;
         using (var cache = new DiskChunkCache(fileCollection, 20, cacheCapacity))
         {
             for (var i = 0; i < 80; i++)
             {
                 Put(cache, i);
                 for (var j = 0; j < i; j++)
                 {
                     Get(cache, i);
                 }
                 Assert.True(fileCollection.Enumerate().Sum(f => (long)f.GetSize()) <= cacheCapacity);
             }
             Assert.True(Get(cache, 79));
             Assert.False(Get(cache, 0));
         }
     }
 }