Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create a SamplingInput with only ServiceName #100

Merged
merged 2 commits into from
Aug 26, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sdk/src/Core/AWSXRayRecorderImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ public void BeginSegment(string name, string traceId = null, string parentId = n

if (samplingResponse == null)
{
SamplingInput samplingInput = new SamplingInput();
SamplingInput samplingInput = new SamplingInput(name);
samplingResponse = SamplingStrategy.ShouldTrace(samplingInput);
}

Expand Down
4 changes: 4 additions & 0 deletions sdk/src/Core/Sampling/SamplingInput.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ public SamplingInput()
{
}

public SamplingInput(string serviceName): this(host: null, url: null, method: null, serviceName: serviceName, serviceType: null)
{
}

public SamplingInput(string host, string url, string method, string serviceName, string serviceType)
{
Host = host;
Expand Down
53 changes: 53 additions & 0 deletions sdk/test/UnitTests/RuleCacheTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,23 @@ public void TestGetMatchedRule2() // ServiceType is different
Assert.IsTrue(actualRule.Equals(expectedRule));
}

[TestMethod]
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));
}

[TestMethod]
public void TestGetMatchedRuleNotMatching() // Rule not matched
{
Expand All @@ -229,6 +246,23 @@ public void TestGetMatchedRuleNotMatching() // Rule not matched
Assert.IsNull(actualRule);
}

[TestMethod]
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);
}

[TestMethod]
public void TestGetMatchedRuleWithDefaultRule() // Matching with default Rule;
{
Expand All @@ -248,6 +282,25 @@ public void TestGetMatchedRuleNotMatching() // Rule not matched
Assert.IsTrue(actualRule.Equals(expectedRule));
}

[TestMethod]
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));
}

[TestMethod]
public void TestGetMatchedRuleForExpiredCache1() // Cache not loaded, hould return null
{
Expand Down