Skip to content

Commit

Permalink
Update exception filter
Browse files Browse the repository at this point in the history
  • Loading branch information
schmittjoseph committed Jul 3, 2024
1 parent 476dfb6 commit 79fb7b9
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 85 deletions.
45 changes: 9 additions & 36 deletions documentation/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -513,10 +513,7 @@
],
"properties": {
"Filters": {
"type": [
"array",
"null"
],
"type": "array",
"description": "Process filters used to determine to which process(es) the collection rule is applied. All filters must match. If no filters are specified, the rule is applied to all discovered processes.",
"items": {
"$ref": "#/definitions/ProcessFilterDescriptor"
Expand All @@ -531,10 +528,7 @@
]
},
"Actions": {
"type": [
"array",
"null"
],
"type": "array",
"description": "The list of actions to be executed when the trigger raises its notification.",
"items": {
"$ref": "#/definitions/CollectionRuleActionOptions"
Expand Down Expand Up @@ -1130,20 +1124,14 @@
"additionalProperties": false,
"properties": {
"Include": {
"type": [
"array",
"null"
],
"type": "array",
"description": "The list of exception configurations that determine which exceptions should be shown.\nEach configuration is a logical OR, so if any of the configurations match, the exception is shown.",
"items": {
"$ref": "#/definitions/ExceptionFilter"
}
},
"Exclude": {
"type": [
"array",
"null"
],
"type": "array",
"description": "The list of exception configurations that determine which exceptions should be shown.\nEach configuration is a logical OR, so if any of the configurations match, the exception isn't shown.",
"items": {
"$ref": "#/definitions/ExceptionFilter"
Expand Down Expand Up @@ -1384,20 +1372,14 @@
"default": true
},
"Providers": {
"type": [
"array",
"null"
],
"type": "array",
"description": "Providers for custom metrics.",
"items": {
"$ref": "#/definitions/MetricProvider"
}
},
"Meters": {
"type": [
"array",
"null"
],
"type": "array",
"description": "Names of meters to collect from the System.Diagnostics.Metrics provider.",
"items": {
"$ref": "#/definitions/MeterConfiguration"
Expand All @@ -1418,10 +1400,7 @@
"minLength": 1
},
"CounterNames": {
"type": [
"array",
"null"
],
"type": "array",
"description": "Name of custom metrics counters.",
"items": {
"type": "string"
Expand All @@ -1441,10 +1420,7 @@
"description": "Name of the custom meter."
},
"InstrumentNames": {
"type": [
"array",
"null"
],
"type": "array",
"description": "Names of the custom instruments.",
"items": {
"type": "string"
Expand Down Expand Up @@ -1484,10 +1460,7 @@
"additionalProperties": false,
"properties": {
"Filters": {
"type": [
"array",
"null"
],
"type": "array",
"description": "Process filters used to determine which process to use if one is not explicitly specified. All filters must match.",
"items": {
"$ref": "#/definitions/ProcessFilterDescriptor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ public sealed class ExceptionsConfiguration
/// Each configuration is a logical OR, so if any of the configurations match, the exception is shown.
/// </summary>
[JsonPropertyName("include")]
public List<ExceptionFilter>? Include { get; set; } = new();
public List<ExceptionFilter> Include { get; } = [];

/// <summary>
/// The list of exception configurations that determine which exceptions should be shown.
/// Each configuration is a logical OR, so if any of the configurations match, the exception isn't shown.
/// </summary>
[JsonPropertyName("exclude")]
public List<ExceptionFilter>? Exclude { get; set; } = new();
public List<ExceptionFilter> Exclude { get; } = [];
}

public sealed class ExceptionFilter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@ public class MetricsOptions
[Display(
ResourceType = typeof(OptionsDisplayStrings),
Description = nameof(OptionsDisplayStrings.DisplayAttributeDescription_MetricsOptions_Providers))]
public List<MetricProvider>? Providers { get; set; } = new List<MetricProvider>(0);
public List<MetricProvider> Providers { get; } = [];

[Display(
ResourceType = typeof(OptionsDisplayStrings),
Description = nameof(OptionsDisplayStrings.DisplayAttributeDescription_MetricsOptions_Meters))]
public List<MeterConfiguration>? Meters { get; set; } = new List<MeterConfiguration>(0);
public List<MeterConfiguration> Meters { get; } = [];
}

public class MetricProvider
Expand All @@ -62,7 +62,7 @@ public class MetricProvider
[Display(
ResourceType = typeof(OptionsDisplayStrings),
Description = nameof(OptionsDisplayStrings.DisplayAttributeDescription_MetricProvider_CounterNames))]
public List<string>? CounterNames { get; set; } = new List<string>(0);
public List<string> CounterNames { get; } = [];
}

public class MeterConfiguration
Expand All @@ -75,6 +75,6 @@ public class MeterConfiguration
[Display(
ResourceType = typeof(OptionsDisplayStrings),
Description = nameof(OptionsDisplayStrings.DisplayAttributeDescription_MeterConfiguration_InstrumentNames))]
public List<string>? InstrumentNames { get; set; } = new List<string>(0);
public List<string> InstrumentNames { get; } = [];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public sealed class ProcessFilterOptions
[Display(
ResourceType = typeof(OptionsDisplayStrings),
Description = nameof(OptionsDisplayStrings.DisplayAttributeDescription_ProcessFilterOptions_Filters))]
public List<ProcessFilterDescriptor>? Filters { get; set; } = new List<ProcessFilterDescriptor>(0);
public List<ProcessFilterDescriptor> Filters { get; } = [];
}

public sealed partial class ProcessFilterDescriptor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,14 @@ public static ExceptionsConfigurationSettings ConvertExceptionsConfiguration(Exc
return configurationSettings;
}

if (configuration.Include != null)
foreach (var filter in configuration.Include)
{
foreach (var filter in configuration.Include)
{
configurationSettings.Include.Add(ConvertExceptionFilter(filter));
}
configurationSettings.Include.Add(ConvertExceptionFilter(filter));
}

if (configuration.Exclude != null)
foreach (var filter in configuration.Exclude)
{
foreach (var filter in configuration.Exclude)
{
configurationSettings.Exclude.Add(ConvertExceptionFilter(filter));
}
configurationSettings.Exclude.Add(ConvertExceptionFilter(filter));
}

return configurationSettings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,14 +204,16 @@ await ScenarioRunner.SingleTarget(
},
configureTool: runner =>
{
MetricsOptions metricOptions = new()
{
Enabled = true,
IncludeDefaultProviders = false
};
metricOptions.Providers.AddRange(providers);
runner.WriteKeyPerValueConfiguration(new RootOptions()
{
Metrics = new MetricsOptions()
{
Enabled = true,
IncludeDefaultProviders = false,
Providers = providers
},
Metrics = metricOptions,
GlobalCounter = new GlobalCounterOptions()
{
IntervalSeconds = 1
Expand Down Expand Up @@ -272,14 +274,16 @@ await ScenarioRunner.SingleTarget(
},
configureTool: runner =>
{
MetricsOptions metricOptions = new()
{
Enabled = true,
IncludeDefaultProviders = false,
};
metricOptions.Providers.AddRange(providers);
runner.WriteKeyPerValueConfiguration(new RootOptions()
{
Metrics = new MetricsOptions()
{
Enabled = true,
IncludeDefaultProviders = false,
Providers = providers,
},
Metrics = metricOptions,
GlobalCounter = new GlobalCounterOptions()
{
IntervalSeconds = 1,
Expand Down Expand Up @@ -344,14 +348,16 @@ await ScenarioRunner.SingleTarget(
},
configureTool: runner =>
{
MetricsOptions metricOptions = new()
{
Enabled = true,
IncludeDefaultProviders = false,
};
metricOptions.Providers.AddRange(providers);
runner.WriteKeyPerValueConfiguration(new RootOptions()
{
Metrics = new MetricsOptions()
{
Enabled = true,
IncludeDefaultProviders = false,
Providers = providers
},
Metrics = metricOptions,
GlobalCounter = new GlobalCounterOptions()
{
IntervalSeconds = 1,
Expand Down Expand Up @@ -427,14 +433,16 @@ await ScenarioRunner.SingleTarget(
},
configureTool: runner =>
{
MetricsOptions metricOptions = new()
{
Enabled = true,
IncludeDefaultProviders = false,
};
metricOptions.Providers.AddRange(providers);
runner.WriteKeyPerValueConfiguration(new RootOptions()
{
Metrics = new MetricsOptions()
{
Enabled = true,
IncludeDefaultProviders = false,
Providers = providers
},
Metrics = metricOptions,
GlobalCounter = new GlobalCounterOptions()
{
IntervalSeconds = 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using Xunit;
Expand Down Expand Up @@ -107,11 +106,13 @@ public void ValidateMetricStoreSettings()

var options = host.Services.GetRequiredService<IOptionsMonitor<GlobalCounterOptions>>();

var settings = MetricsSettingsFactory.CreateSettings(options.CurrentValue, Timeout.Infinite, new MetricsOptions
MetricsOptions metricOptions = new()
{
IncludeDefaultProviders = false,
Providers = new List<MetricProvider> { new MetricProvider { ProviderName = CustomProvider1 }, new MetricProvider { ProviderName = CustomProvider2 } }
});
IncludeDefaultProviders = false
};
metricOptions.Providers.AddRange([new MetricProvider { ProviderName = CustomProvider1 }, new MetricProvider { ProviderName = CustomProvider2 }]);

var settings = MetricsSettingsFactory.CreateSettings(options.CurrentValue, Timeout.Infinite, metricOptions);

Assert.Equal(ExpectedGlobalInterval, settings.CounterIntervalSeconds);
Assert.Equal(CustomInterval, GetInterval(settings, CustomProvider1));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ internal sealed partial class CollectionRuleOptions
[Display(
ResourceType = typeof(OptionsDisplayStrings),
Description = nameof(OptionsDisplayStrings.DisplayAttributeDescription_CollectionRuleOptions_Filters))]
public List<ProcessFilterDescriptor>? Filters { get; } = new List<ProcessFilterDescriptor>(0);
public List<ProcessFilterDescriptor> Filters { get; } = [];

#nullable disable
[Display(
Expand All @@ -30,13 +30,13 @@ internal sealed partial class CollectionRuleOptions
[Display(
ResourceType = typeof(OptionsDisplayStrings),
Description = nameof(OptionsDisplayStrings.DisplayAttributeDescription_CollectionRuleOptions_Actions))]
public List<CollectionRuleActionOptions>? Actions { get; } = new List<CollectionRuleActionOptions>(0);
public List<CollectionRuleActionOptions> Actions { get; } = [];

[Display(
ResourceType = typeof(OptionsDisplayStrings),
Description = nameof(OptionsDisplayStrings.DisplayAttributeDescription_CollectionRuleOptions_Limits))]
public CollectionRuleLimitsOptions? Limits { get; set; }

internal List<ValidationResult> ErrorList { get; } = new List<ValidationResult>();
internal List<ValidationResult> ErrorList { get; } = [];
}
}

0 comments on commit 79fb7b9

Please sign in to comment.