in sdk/src/Core/Sampling/Local/LocalizedSamplingStrategy.cs [163:209]
private void Init(Stream stream)
{
using (var reader = new StreamReader(stream))
{
SamplingConfiguration samplingConfiguration = JsonMapper.ToObject<SamplingConfiguration>(reader);
if (samplingConfiguration == null)
{
throw new InvalidSamplingConfigurationException("The provided sampling configuration had invalid JSON format and cannot be parsed correctly.");
}
if (samplingConfiguration.Default == null)
{
throw new InvalidSamplingConfigurationException("No default sampling rule is provided. A default sampling rule is required.");
}
if ( !SupportedSamplingConfigurationVersion.Contains(samplingConfiguration.Version))
{
throw new InvalidSamplingConfigurationException(
string.Format(
CultureInfo.InvariantCulture,
"The version of provided sampling configuration is not supported. Provided version = {0}, supported versions = {1}",
samplingConfiguration.Version, String.Join(", ", SupportedSamplingConfigurationVersion)));
}
DefaultRule = samplingConfiguration.Default;
var rules = new List<SamplingRule>();
if (samplingConfiguration.Rules != null)
{
foreach (var rule in samplingConfiguration.Rules) // contains supported versions.
{
if (LocalizedSamplingStrategy.IsValidVersion1(samplingConfiguration, rule))
{
rule.Host = rule.ServiceName;
}
else
{
LocalizedSamplingStrategy.ValidateVersion2(samplingConfiguration, rule); // rule.Host already parsed in rule.
}
rules.Add(rule);
}
}
Rules = rules;
}
}