private static void Assert_KeysCollected(PerKeyCacheClientRuleAggregator aggregator, Dictionary <Guid, IList <string> > expectedkeysForCacheClients, List <IRoutedCacheClientRule> rules, int numKeys) { Assert.NotNull(aggregator.CacheClients); Assert.NotNull(aggregator.KeysForCacheClient); Assert.AreEqual(Math.Min(numKeys, expectedkeysForCacheClients.Count), aggregator.KeysForCacheClient.Count); foreach (KeyValuePair <Guid, IList <string> > actualKeysForCacheClientPair in aggregator.KeysForCacheClient) { Assert.IsTrue(expectedkeysForCacheClients .ContainsKey(actualKeysForCacheClientPair.Key)); CollectionAssert.AreEquivalent(expectedkeysForCacheClients[actualKeysForCacheClientPair.Key], actualKeysForCacheClientPair.Value); } Assert.AreEqual(Math.Min(rules.Count, numKeys), aggregator.CacheClients.Count); foreach (KeyValuePair <Guid, ICacheClient> actualCacheClientPair in aggregator.CacheClients) { Assert.IsTrue(rules.Any(r => r.Id == actualCacheClientPair.Key)); Assert.AreSame(rules.FirstOrDefault(r => r.Id == actualCacheClientPair.Key).Client, actualCacheClientPair.Value); } }
public void Test_CanCollect_All(int numKeys, int numClients) { PerKeyCacheClientRuleAggregator aggregator = new PerKeyCacheClientRuleAggregator(); Dictionary <Guid, IList <string> > keysForCacheClients = new Dictionary <Guid, IList <string> >(); //Init rules List <IRoutedCacheClientRule> cacheClientRules = CreateTestRules(numClients); foreach (IRoutedCacheClientRule r in cacheClientRules) { keysForCacheClients[r.Id] = new List <string>(); } //Generate some keys and distribute // them per cache client rules List <string> testCacheKeys = GenerateTestKeys(numKeys, cacheClientRules, keysForCacheClients); aggregator.CollectAll(testCacheKeys, key => { KeyValuePair <Guid, IList <string> > ruleWithKey = keysForCacheClients .FirstOrDefault(p => p.Value.Contains(key)); return(cacheClientRules .FirstOrDefault(r => r.Id == ruleWithKey.Key)); }); Assert_KeysCollected(aggregator, keysForCacheClients, cacheClientRules, numKeys); }
public void Test_CanCollect_Single(int numKeys, int numClients) { PerKeyCacheClientRuleAggregator aggregator = new PerKeyCacheClientRuleAggregator(); Dictionary <Guid, IList <string> > keysForCacheClients = new Dictionary <Guid, IList <string> >(); //Init rules List <IRoutedCacheClientRule> cacheClientRules = CreateTestRules(numClients); foreach (IRoutedCacheClientRule r in cacheClientRules) { keysForCacheClients[r.Id] = new List <string>(); } //Generate some keys and distribute // them per cache client rules List <string> testCacheKeys = GenerateTestKeys(numKeys, cacheClientRules, keysForCacheClients); foreach (KeyValuePair <Guid, IList <string> > keysForRules in keysForCacheClients) { IRoutedCacheClientRule rule = cacheClientRules.FirstOrDefault(r => r.Id == keysForRules.Key); foreach (string key in keysForRules.Value) { aggregator.Collect(key, rule); } } Assert_KeysCollected(aggregator, keysForCacheClients, cacheClientRules, numKeys); }