Disable optional rules by default on the NuGet package scripts (#2958)
* Disable optional rules by default on NuGet package * Delay allocation of optional rules * Return to previous dependency injection pattern * Fix botched merge * Add Lazy and method to create optional rules --------- Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
This commit is contained in:
parent
376a56b947
commit
443479b566
|
|
@ -25,6 +25,7 @@ set DOTNET_STARTUP_HOOKS=%BASE_PATH%OpenTelemetry.AutoInstrumentation.StartupHoo
|
|||
|
||||
:: Settings for OpenTelemetry
|
||||
set OTEL_DOTNET_AUTO_HOME=%BASE_PATH%
|
||||
set OTEL_DOTNET_AUTO_RULE_ENGINE_ENABLED=false
|
||||
|
||||
@echo on
|
||||
%*
|
||||
|
|
|
|||
|
|
@ -11,5 +11,6 @@ export DOTNET_STARTUP_HOOKS=${BASE_PATH}/OpenTelemetry.AutoInstrumentation.Start
|
|||
|
||||
# Settings for OpenTelemetry
|
||||
export OTEL_DOTNET_AUTO_HOME=${BASE_PATH}
|
||||
export OTEL_DOTNET_AUTO_RULE_ENGINE_ENABLED=false
|
||||
|
||||
$@
|
||||
|
|
|
|||
|
|
@ -28,21 +28,17 @@ internal class RuleEngine
|
|||
new MinSupportedFrameworkRule()
|
||||
};
|
||||
|
||||
private readonly List<Rule> _otherRules = new()
|
||||
{
|
||||
new OpenTelemetrySdkMinimumVersionRule(),
|
||||
new AssemblyFileVersionRule(),
|
||||
new NativeProfilerDiagnosticsRule()
|
||||
};
|
||||
private readonly Lazy<List<Rule>> _optionalRules;
|
||||
|
||||
internal RuleEngine()
|
||||
: this(new Lazy<List<Rule>>(CreateDefaultOptionalRules))
|
||||
{
|
||||
}
|
||||
|
||||
// This constructor is used for test purpose.
|
||||
internal RuleEngine(List<Rule> rules)
|
||||
internal RuleEngine(Lazy<List<Rule>> optionalRules)
|
||||
{
|
||||
_otherRules = rules;
|
||||
_optionalRules = optionalRules;
|
||||
}
|
||||
|
||||
internal bool ValidateRules()
|
||||
|
|
@ -65,7 +61,7 @@ internal class RuleEngine
|
|||
}
|
||||
|
||||
// All the rules are validated here.
|
||||
foreach (var rule in _otherRules)
|
||||
foreach (var rule in _optionalRules.Value)
|
||||
{
|
||||
if (!EvaluateRule(rule))
|
||||
{
|
||||
|
|
@ -93,4 +89,14 @@ internal class RuleEngine
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static List<Rule> CreateDefaultOptionalRules()
|
||||
{
|
||||
return new()
|
||||
{
|
||||
new OpenTelemetrySdkMinimumVersionRule(),
|
||||
new AssemblyFileVersionRule(),
|
||||
new NativeProfilerDiagnosticsRule()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public class RuleEngineTests : IDisposable
|
|||
// Arrange
|
||||
SetShouldTrackEnvironmentVariable(true);
|
||||
var testRule = new TestRule();
|
||||
var ruleEngine = new RuleEngine(new List<Rule> { testRule });
|
||||
var ruleEngine = new RuleEngine(new Lazy<List<Rule>>(() => new() { testRule }));
|
||||
|
||||
// Act
|
||||
var result = ruleEngine.ValidateRules();
|
||||
|
|
@ -48,7 +48,7 @@ public class RuleEngineTests : IDisposable
|
|||
// Arrange
|
||||
SetShouldTrackEnvironmentVariable(false);
|
||||
var testRule = new TestRule();
|
||||
var ruleEngine = new RuleEngine(new List<Rule> { testRule });
|
||||
var ruleEngine = new RuleEngine(new Lazy<List<Rule>>(() => new() { testRule }));
|
||||
|
||||
// Act
|
||||
var result = ruleEngine.ValidateRules();
|
||||
|
|
@ -64,7 +64,7 @@ public class RuleEngineTests : IDisposable
|
|||
// Arrange
|
||||
SetShouldTrackEnvironmentVariable(null);
|
||||
var testRule = new TestRule();
|
||||
var ruleEngine = new RuleEngine(new List<Rule> { testRule });
|
||||
var ruleEngine = new RuleEngine(new Lazy<List<Rule>>(() => new() { testRule }));
|
||||
|
||||
// Act
|
||||
var result = ruleEngine.ValidateRules();
|
||||
|
|
@ -79,7 +79,7 @@ public class RuleEngineTests : IDisposable
|
|||
{
|
||||
// Arrange
|
||||
var testRule = new TestRule();
|
||||
var ruleEngine = new RuleEngine(new List<Rule> { testRule });
|
||||
var ruleEngine = new RuleEngine(new Lazy<List<Rule>>(() => new() { testRule }));
|
||||
|
||||
// Act
|
||||
var result = ruleEngine.ValidateRules();
|
||||
|
|
@ -95,7 +95,7 @@ public class RuleEngineTests : IDisposable
|
|||
// Arrange
|
||||
Environment.SetEnvironmentVariable("OTEL_DOTNET_AUTO_RULE_ENGINE_ENABLED", "Invalid");
|
||||
var testRule = new TestRule();
|
||||
var ruleEngine = new RuleEngine(new List<Rule> { testRule });
|
||||
var ruleEngine = new RuleEngine(new Lazy<List<Rule>>(() => new() { testRule }));
|
||||
|
||||
// Act
|
||||
var result = ruleEngine.ValidateRules();
|
||||
|
|
|
|||
Loading…
Reference in New Issue