public void TestGetMatchedRuleForExpiredCache1() // Cache not loaded, hould return null { RuleCache ruleCache = new RuleCache(); SamplingInput samplingInput = new SamplingInput("elasticbeanstalk", "/api/1", "GET", "dynamo", "*"); TimeStamp current = TimeStamp.CurrentTime(); var actualRule = ruleCache.GetMatchedRule(samplingInput, current); // cache is expired since never loaded Assert.IsNull(actualRule); }
public void TestGetMatchedRuleNotMatching() // Rule not matched { RuleCache ruleCache = new RuleCache(); List <SamplingRule> newRules = new List <SamplingRule>(); SamplingInput samplingInput = new SamplingInput("elasticbeanstalk", "/api/1", "GET", "dynamo", "*"); SamplingRule rule = GetSamplingRule("a", 1, 0.5, 10, "j", samplingInput.ServiceName, samplingInput.Method, samplingInput.Url); newRules.Add(rule); ruleCache.LoadRules(newRules); TimeStamp current = TimeStamp.CurrentTime(); ruleCache.LastUpdated = current; var actualRule = ruleCache.GetMatchedRule(samplingInput, current); Assert.IsNull(actualRule); }
public void TestGetMatchedRule3() // sampling input ServiceName and ServiceType is null - it should be ignored for rule matching { RuleCache ruleCache = new RuleCache(); List <SamplingRule> newRules = new List <SamplingRule>(); SamplingInput samplingInput = new SamplingInput("elasticbeanstalk", "/api/1", "GET", "", ""); SamplingRule expectedRule = GetSamplingRule("a", 1, 0.5, 10, samplingInput.Host, "test", samplingInput.Method, samplingInput.Url, serviceType: "XYZ"); newRules.Add(expectedRule); ruleCache.LoadRules(newRules); TimeStamp current = TimeStamp.CurrentTime(); ruleCache.LastUpdated = current; var actualRule = ruleCache.GetMatchedRule(samplingInput, current); Assert.IsTrue(actualRule.Equals(expectedRule)); }
public void TestGetMatchedRule2() // ServiceType is different { RuleCache ruleCache = new RuleCache(); List <SamplingRule> newRules = new List <SamplingRule>(); SamplingInput samplingInput = new SamplingInput("elasticbeanstalk", "/api/1", "GET", "dynamo", "AWS::ECS::Container"); SamplingRule expectedRule = GetSamplingRule("a", 1, 0.5, 10, samplingInput.Host, samplingInput.ServiceName, samplingInput.Method, samplingInput.Url, serviceType: "XYZ"); newRules.Add(expectedRule); ruleCache.LoadRules(newRules); TimeStamp current = TimeStamp.CurrentTime(); ruleCache.LastUpdated = current; var actualRule = ruleCache.GetMatchedRule(samplingInput, current); Assert.IsNull(actualRule); }
public void TestGetMatchedRuleNotMatching2() // SamplingInput with only ServiceName - Rule not matched { RuleCache ruleCache = new RuleCache(); List <SamplingRule> newRules = new List <SamplingRule>(); SamplingInput samplingInput = new SamplingInput("elasticbeanstalk"); SamplingRule rule = GetSamplingRule("a", 1, 0.5, 10, serviceName: "XYZ"); newRules.Add(rule); ruleCache.LoadRules(newRules); TimeStamp current = TimeStamp.CurrentTime(); ruleCache.LastUpdated = current; var actualRule = ruleCache.GetMatchedRule(samplingInput, current); Assert.IsNull(actualRule); }
public void TestGetMatchedRule4() // sampling input has only ServiceName - the rule should be matched { RuleCache ruleCache = new RuleCache(); List <SamplingRule> newRules = new List <SamplingRule>(); SamplingInput samplingInput = new SamplingInput("elasticbeanstalk"); SamplingRule expectedRule = GetSamplingRule("a", 1, 0.5, 10, serviceName: samplingInput.ServiceName); newRules.Add(expectedRule); ruleCache.LoadRules(newRules); TimeStamp current = TimeStamp.CurrentTime(); ruleCache.LastUpdated = current; var actualRule = ruleCache.GetMatchedRule(samplingInput, current); Assert.IsTrue(actualRule.Equals(expectedRule)); }
public void TestGetMatchedRuleForExpiredCache2() // Expired cache should not match rule. { RuleCache ruleCache = new RuleCache(); List <SamplingRule> newRules = new List <SamplingRule>(); SamplingInput samplingInput = new SamplingInput("elasticbeanstalk", "/api/1", "GET", "dynamo", "*"); SamplingRule expectedRule = GetSamplingRule("a", 1, 0.5, 10, samplingInput.Host, samplingInput.ServiceName, samplingInput.Method, samplingInput.Url); newRules.Add(expectedRule); ruleCache.LoadRules(newRules); TimeStamp current = TimeStamp.CurrentTime(); ruleCache.LastUpdated.Time = current.Time; current.Time += RuleCache.TTL + 1; var actualRule = ruleCache.GetMatchedRule(samplingInput, current); // cache is expired, though matching rule is present Assert.IsNull(actualRule); }
public void TestGetMatchedRuleWithDefaultRule() // Matching with default Rule; { RuleCache ruleCache = new RuleCache(); List <SamplingRule> newRules = new List <SamplingRule>(); SamplingInput samplingInput = new SamplingInput("elasticbeanstalk", "/api/1", "GET", "dynamo", "*"); SamplingRule rule = GetSamplingRule("a", 1, 0.5, 10, "j", "test", samplingInput.Method, samplingInput.Url); newRules.Add(rule); SamplingRule expectedRule = GetSamplingRule(SamplingRule.Default, 10000, 0.5, 1, "j", "*", "*", "*"); // should match to default rule newRules.Add(expectedRule); ruleCache.LoadRules(newRules); TimeStamp current = TimeStamp.CurrentTime(); ruleCache.LastUpdated = current; var actualRule = ruleCache.GetMatchedRule(samplingInput, current); Assert.IsTrue(actualRule.Equals(expectedRule)); }
public void TestGetMatchedRuleWithDefaultRule2() // SamplingInput with only ServiceName - Matching with default Rule; { RuleCache ruleCache = new RuleCache(); List <SamplingRule> newRules = new List <SamplingRule>(); SamplingInput samplingInput = new SamplingInput("elasticbeanstalk"); SamplingRule rule = GetSamplingRule("a", 1, 0.5, 10, serviceName: "XYZ"); newRules.Add(rule); SamplingRule expectedRule = GetSamplingRule(SamplingRule.Default, 10000, 0.5, 1, "j", "*", "*", "*"); // should match to default rule newRules.Add(expectedRule); ruleCache.LoadRules(newRules); TimeStamp current = TimeStamp.CurrentTime(); ruleCache.LastUpdated = current; var actualRule = ruleCache.GetMatchedRule(samplingInput, current); Assert.IsTrue(actualRule.Equals(expectedRule)); }