コード例 #1
0
        public async Task TestDoNotIncludeInCacheKeyAsync()
        {
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(0, cache1.Misses);

            var service = new MultiService();
            IList <MockData> results;

            results = await service.GetItemsAsync(new[] { "a", "b", "c" }, new MockObject { Data = 1111 });

            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            Assert.AreEqual(3, results.Count);
            Assert.AreEqual("a", results[0].Id);
            Assert.AreEqual("a1111", results[0].Value);
            Assert.AreEqual("b", results[1].Id);
            Assert.AreEqual("b1111", results[1].Value);
            Assert.AreEqual("c", results[2].Id);
            Assert.AreEqual("c1111", results[2].Value);

            results = await service.GetItemsAsync(new[] { "a", "b", "d" }, new MockObject { Data = 2222 });

            Assert.AreEqual(2, cache1.Hits);
            Assert.AreEqual(4, cache1.Misses);
            Assert.AreEqual(3, results.Count);
            Assert.AreEqual("a", results[0].Id);
            Assert.AreEqual("a1111", results[0].Value);
            Assert.AreEqual("b", results[1].Id);
            Assert.AreEqual("b1111", results[1].Value);
            Assert.AreEqual("d", results[2].Id);
            Assert.AreEqual("d2222", results[2].Value);
        }
コード例 #2
0
ファイル: AopMultiCacheTests.cs プロジェクト: ronybot/caching
        public void TestMultiCacheWith3ItemsThen5()
        {
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(0, cache1.Misses);

            var service  = new MultiService();
            var results1 = service.GetItems(new[] { "k1", "k2", "k3" });

            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            LinqAssert.Count(results1, 3);
            LinqAssert.Any(results1, r => r.Id == "k1");
            LinqAssert.Any(results1, r => r.Id == "k2");
            LinqAssert.Any(results1, r => r.Id == "k3");

            var results2 = service.GetItems(new[] { "k5", "k2", "k1", "k4", "k3" });

            Assert.AreEqual(3, cache1.Hits);
            Assert.AreEqual(5, cache1.Misses);
            LinqAssert.Count(results2, 5);
            LinqAssert.Any(results2, r => r.Id == "k1");
            LinqAssert.Any(results2, r => r.Id == "k2");
            LinqAssert.Any(results2, r => r.Id == "k3");
            LinqAssert.Any(results2, r => r.Id == "k4");
            LinqAssert.Any(results2, r => r.Id == "k5");
        }
コード例 #3
0
        public async Task TestMultiCacheWith3ItemsThen5Async()
        {
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(0, cache1.Misses);

            var service  = new MultiService();
            var results1 = await service.GetItemsAsync(new[] { "k1", "k2", "k3" });

            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            Assert.AreEqual(results1.Count, 3);
            CollectionAssert.Contains(results1.Select(x => x.Id).ToArray(), "k1");
            CollectionAssert.Contains(results1.Select(x => x.Id).ToArray(), "k2");
            CollectionAssert.Contains(results1.Select(x => x.Id).ToArray(), "k3");

            var results2 = await service.GetItemsAsync(new[] { "k5", "k2", "k1", "k4", "k3" });

            Assert.AreEqual(3, cache1.Hits);
            Assert.AreEqual(5, cache1.Misses);
            Assert.AreEqual(results2.Count, 5);
            CollectionAssert.Contains(results2.Select(x => x.Id).ToArray(), "k1");
            CollectionAssert.Contains(results2.Select(x => x.Id).ToArray(), "k2");
            CollectionAssert.Contains(results2.Select(x => x.Id).ToArray(), "k3");
            CollectionAssert.Contains(results2.Select(x => x.Id).ToArray(), "k4");
            CollectionAssert.Contains(results2.Select(x => x.Id).ToArray(), "k5");
        }
コード例 #4
0
ファイル: AopMultiCacheTests.cs プロジェクト: ronybot/caching
        public void TestDoNotIncludeInCacheKey()
        {
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(0, cache1.Misses);

            var service = new MultiService();
            IList <MockData> results;

            results = service.GetItems(new[] { "a", "b", "c" }, new MockObject(1111));
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            Assert.AreEqual(3, results.Count);
            Assert.AreEqual("a", results[0].Id);
            Assert.AreEqual("a1111", results[0].Value);
            Assert.AreEqual("b", results[1].Id);
            Assert.AreEqual("b1111", results[1].Value);
            Assert.AreEqual("c", results[2].Id);
            Assert.AreEqual("c1111", results[2].Value);

            results = service.GetItems(new[] { "a", "b", "d" }, new MockObject(2222));
            Assert.AreEqual(2, cache1.Hits);
            Assert.AreEqual(4, cache1.Misses);
            Assert.AreEqual(3, results.Count);
            Assert.AreEqual("a", results[0].Id);
            Assert.AreEqual("a1111", results[0].Value);
            Assert.AreEqual("b", results[1].Id);
            Assert.AreEqual("b1111", results[1].Value);
            Assert.AreEqual("d", results[2].Id);
            Assert.AreEqual("d2222", results[2].Value);
        }
コード例 #5
0
        public void TestMultiMissingCache()
        {
            var service = new MultiService();
            var results = service.GetItemsNoCache(new[] { "k1" });

            Assert.AreEqual("1", results.First().Value);
            results = service.GetItemsNoCache(new[] { "k1" });
            Assert.AreEqual("2", results.First().Value);
        }
コード例 #6
0
        public async Task TestMultiMissingCacheAsync()
        {
            var service = new MultiService();
            var results = await service.GetItemsNoCacheAsync(new[] { "k1" });

            Assert.AreEqual("1", results.First().Value);
            results = await service.GetItemsNoCacheAsync(new[] { "k1" });

            Assert.AreEqual("2", results.First().Value);
        }
コード例 #7
0
 public ClientsController(
     ClientService clientService,
     RelatedToBothService <Purchase, PurchaseDTO> purchaseService,
     MultiService bothService
     ) : base(clientService)
 {
     ClientService   = clientService;
     PurchaseService = purchaseService;
     BothService     = bothService;
 }
コード例 #8
0
        public async Task TestMultiCacheWith1ItemsAsync()
        {
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(0, cache1.Misses);

            var service = new MultiService();
            var results = await service.GetItemsAsync(new[] { "k1" });

            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(1, cache1.Misses);
            Assert.AreEqual(results.Count, 1);
        }
コード例 #9
0
        public void TestMultiCacheWith1Items()
        {
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(0, cache1.Misses);

            var service = new MultiService();
            var results = service.GetItems(new[] { "k1" });

            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(1, cache1.Misses);
            Assert.AreEqual(results.Count, 1);
        }
コード例 #10
0
        public void TestKeyGeneration_CacheList()
        {
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(0, cache1.Misses);

            var service = new MultiService();
            var results = service.GetItems(new[] { "k1", "k2", "k3" });

            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            Assert.AreEqual(results.Count, 3);
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k1");
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k2");
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k3");

            results = service.GetItems(new[] { "k1", "k2", "k3" });

            Assert.AreEqual(3, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            Assert.AreEqual(results.Count, 3);
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k1");
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k2");
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k3");

            // Note: must use List<string>, not string[] here in order to get correct key
            var key = CacheKey.GetKey(() => service.GetItems(new List <string> {
                "k2"
            }));

            cache1.Clear(key);

            results = service.GetItems(new[] { "k1" });
            Assert.AreEqual(4, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            Assert.AreEqual(results.Count, 1);
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k1");

            results = service.GetItems(new[] { "k2" });
            Assert.AreEqual(4, cache1.Hits);
            Assert.AreEqual(4, cache1.Misses);
            Assert.AreEqual(results.Count, 1);
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k2");

            results = service.GetItems(new[] { "k1", "k2", "k3" });

            Assert.AreEqual(7, cache1.Hits);
            Assert.AreEqual(4, cache1.Misses);
            Assert.AreEqual(results.Count, 3);
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k1");
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k2");
            CollectionAssert.Contains(results.Select(x => x.Id).ToArray(), "k3");
        }
コード例 #11
0
ファイル: AopMultiCacheTests.cs プロジェクト: omriv/caching
        public void TestKeyGeneration_CacheList()
        {
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(0, cache1.Misses);

            var service = new MultiService();
            var results = service.GetItems(new[] { "k1", "k2", "k3" });

            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            LinqAssert.Count(results, 3);
            LinqAssert.Any(results, r => r.Id == "k1");
            LinqAssert.Any(results, r => r.Id == "k2");
            LinqAssert.Any(results, r => r.Id == "k3");

            results = service.GetItems(new[] { "k1", "k2", "k3" });

            Assert.AreEqual(3, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            LinqAssert.Count(results, 3);
            LinqAssert.Any(results, r => r.Id == "k1");
            LinqAssert.Any(results, r => r.Id == "k2");
            LinqAssert.Any(results, r => r.Id == "k3");

            // Note: must use List<string>, not string[] here in order to get correct key
            var key = CacheKey.GetKey(() => service.GetItems(new List <string> {
                "k2"
            }));

            cache1.Clear(key);

            results = service.GetItems(new[] { "k1" });
            Assert.AreEqual(4, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            LinqAssert.Count(results, 1);
            LinqAssert.Any(results, r => r.Id == "k1");

            results = service.GetItems(new[] { "k2" });
            Assert.AreEqual(4, cache1.Hits);
            Assert.AreEqual(4, cache1.Misses);
            LinqAssert.Count(results, 1);
            LinqAssert.Any(results, r => r.Id == "k2");

            results = service.GetItems(new[] { "k1", "k2", "k3" });

            Assert.AreEqual(7, cache1.Hits);
            Assert.AreEqual(4, cache1.Misses);
            LinqAssert.Count(results, 3);
            LinqAssert.Any(results, r => r.Id == "k1");
            LinqAssert.Any(results, r => r.Id == "k2");
            LinqAssert.Any(results, r => r.Id == "k3");
        }
コード例 #12
0
        public void TestMultiCacheWith3ItemsThen1()
        {
            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(0, cache1.Misses);

            var service  = new MultiService();
            var results1 = service.GetItems(new[] { "k1", "k2", "k3" });

            Assert.AreEqual(0, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            Assert.AreEqual(results1.Count, 3);
            CollectionAssert.Contains(results1.Select(x => x.Id).ToArray(), "k1");
            CollectionAssert.Contains(results1.Select(x => x.Id).ToArray(), "k2");
            CollectionAssert.Contains(results1.Select(x => x.Id).ToArray(), "k3");

            var results2 = service.GetItems(new[] { "k1" });

            Assert.AreEqual(1, cache1.Hits);
            Assert.AreEqual(3, cache1.Misses);
            Assert.AreEqual(results2.Count, 1);
            CollectionAssert.Contains(results2.Select(x => x.Id).ToArray(), "k1");
        }
コード例 #13
0
 public TradersController(TraderService traderService, MultiService multiService) : base(traderService)
 {
     TraderService = traderService;
     MultiService  = multiService;
 }