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:
Paulo Janotti 2023-09-15 10:49:10 -07:00 committed by GitHub
parent 376a56b947
commit 443479b566
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 14 deletions

View File

@ -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
%*

View File

@ -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
$@

View File

@ -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()
};
}
}

View File

@ -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();