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

Update cake tools #2293

Draft
wants to merge 13 commits into
base: main
Choose a base branch
from
5 changes: 5 additions & 0 deletions Polly.sln
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,14 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "eng", "eng", "{04E3C7C5-31F7-4CD6-8BEC-C1032527D231}"
ProjectSection(SolutionItems) = preProject
eng\Analyzers.targets = eng\Analyzers.targets
eng\Benchmark.targets = eng\Benchmark.targets
eng\bump-version.ps1 = eng\bump-version.ps1
eng\Common.targets = eng\Common.targets
eng\Library.targets = eng\Library.targets
eng\stryker-config.json = eng\stryker-config.json
eng\Test.targets = eng\Test.targets
eng\update-baselines.ps1 = eng\update-baselines.ps1
eng\update-changelog.ps1 = eng\update-changelog.ps1
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Core.Benchmarks", "bench\Polly.Core.Benchmarks\Polly.Core.Benchmarks.csproj", "{CC306C35-E3BC-4F0B-AB8C-B9D4C82DC3DE}"
Expand Down
4 changes: 2 additions & 2 deletions build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ var configuration = Argument<string>("configuration", "Release");
// EXTERNAL NUGET TOOLS
//////////////////////////////////////////////////////////////////////

#Tool "xunit.runner.console&version=2.8.1"
#Tool "dotnet-stryker&version=4.0.6"
#Tool "xunit.runner.console&version=2.9.1"
#Tool "dotnet-stryker&version=4.2.0"

//////////////////////////////////////////////////////////////////////
// EXTERNAL NUGET LIBRARIES
Expand Down
1 change: 1 addition & 0 deletions eng/stryker-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"block",
"statement"
],
"configuration": "Debug",
"target-framework": "net8.0",
"thresholds": {
"high": 100,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,7 @@ internal AddResiliencePipelineContext(ConfigureBuilderContext<TKey> registryCont
public TOptions GetOptions<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] TOptions>(string? name = null)
{
var monitor = ServiceProvider.GetRequiredService<IOptionsMonitor<TOptions>>();

return name == null ? monitor.CurrentValue : monitor.Get(name);
return monitor.Get(name);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effectively duplicates the implementation the way it was.

}

/// <summary>
Expand Down
19 changes: 14 additions & 5 deletions test/Polly.Extensions.Tests/ReloadableResiliencePipelineTests.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using NSubstitute;
using Polly.DependencyInjection;
using Polly.Registry;
using Polly.Telemetry;

Expand All @@ -20,18 +19,23 @@ public void AddResiliencePipeline_EnsureReloadable(string? name)
var resList = new List<IDisposable>();
var reloadableConfig = new ReloadableConfiguration();
reloadableConfig.Reload(new() { { "tag", "initial-tag" } });
var builder = new ConfigurationBuilder().Add(reloadableConfig);
var fakeListener = new FakeTelemetryListener();

var configuration = new ConfigurationBuilder()
.Add(reloadableConfig)
.Build();

var services = new ServiceCollection();

if (name == null)
{
services.Configure<ReloadableStrategyOptions>(builder.Build());
services.Configure<ReloadableStrategyOptions>(configuration)
.Configure<ReloadableStrategyOptions>(options => options.OptionsName = name);
}
else
{
services.Configure<ReloadableStrategyOptions>(name, builder.Build());
services.Configure<ReloadableStrategyOptions>(name, configuration)
.Configure<ReloadableStrategyOptions>(name, options => options.OptionsName = name);
}

services.Configure<TelemetryOptions>(options => options.TelemetryListeners.Add(fakeListener));
Expand All @@ -40,6 +44,9 @@ public void AddResiliencePipeline_EnsureReloadable(string? name)
builder.InstanceName = "my-instance";

var options = context.GetOptions<ReloadableStrategyOptions>(name);
options.Should().NotBeNull();
options.OptionsName.Should().Be(name);

context.EnableReloads<ReloadableStrategyOptions>(name);

builder.AddStrategy(_ =>
Expand All @@ -48,7 +55,7 @@ public void AddResiliencePipeline_EnsureReloadable(string? name)
resList.Add(res);
return new ReloadableStrategy(options.Tag, res);
},
new ReloadableStrategyOptions());
options);
});

var serviceProvider = services.BuildServiceProvider();
Expand Down Expand Up @@ -115,6 +122,8 @@ protected override ValueTask<Outcome<TResult>> ExecuteCore<TResult, TState>(
public class ReloadableStrategyOptions : ResilienceStrategyOptions
{
public string Tag { get; set; } = string.Empty;

public string? OptionsName { get; set; }
}

private class ReloadableConfiguration : ConfigurationProvider, IConfigurationSource
Expand Down
Loading