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); }
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"); }
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"); }
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); }
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); }
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); }
public ClientsController( ClientService clientService, RelatedToBothService <Purchase, PurchaseDTO> purchaseService, MultiService bothService ) : base(clientService) { ClientService = clientService; PurchaseService = purchaseService; BothService = bothService; }
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); }
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); }
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"); }
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"); }
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"); }
public TradersController(TraderService traderService, MultiService multiService) : base(traderService) { TraderService = traderService; MultiService = multiService; }