|
| 1 | +using KeyLoad.Core; |
| 2 | +using KeyLoad.Storage.ZoneTree; |
| 3 | +using KeyLoad.Storage.ZoneTree.Features.ResourceExecution; |
| 4 | +using Microsoft.Extensions.Configuration; |
| 5 | +using Microsoft.Extensions.Options; |
| 6 | + |
| 7 | +namespace KeyLoad.BenchmarkScenarios.Features.BenchmarkComparisons; |
| 8 | + |
| 9 | +/// <summary>Holds the validated native snapshots borrowed by an embedded benchmark owner.</summary> |
| 10 | +internal sealed record EmbeddedBenchmarkRuntimeOptions(IOptions<DatabaseLimits> Database, |
| 11 | + IOptions<DueWorkExecutionOptions> DueWork, IOptions<EventSourceExecutionOptions> EventSource, |
| 12 | + IOptions<MessagingExecutionOptions> Messaging, IOptions<ZoneTreeStorageExecutionOptions> Storage, |
| 13 | + IOptions<ZoneTreePointCacheExecutionOptions> PointCache); |
| 14 | + |
| 15 | +/// <summary>Binds the actual generated runner's environment to native fixture policies.</summary> |
| 16 | +[ConfigurationBinding] |
| 17 | +internal static class EmbeddedBenchmarkRuntimeRegistration |
| 18 | +{ |
| 19 | + internal static EmbeddedBenchmarkRuntimeOptions Read() |
| 20 | + { |
| 21 | + using var configuration = new ConfigurationBuilder().AddEnvironmentVariables().Build(); |
| 22 | + return new( |
| 23 | + BenchmarkScenarioOptionsRegistration.Read<DatabaseLimits>(configuration, DatabaseLimits.SectionName, |
| 24 | + settings => settings.IsValid(), DatabaseLimits.ValidationMessage), |
| 25 | + BenchmarkScenarioOptionsRegistration.Read<DueWorkExecutionOptions>(configuration, DueWorkExecutionOptions.SectionName, |
| 26 | + settings => settings.IsValid(), DueWorkExecutionOptions.ValidationMessage), |
| 27 | + BenchmarkScenarioOptionsRegistration.Read<EventSourceExecutionOptions>(configuration, EventSourceExecutionOptions.SectionName, |
| 28 | + settings => settings.IsValid(), EventSourceExecutionOptions.ValidationMessage), |
| 29 | + BenchmarkScenarioOptionsRegistration.Read<MessagingExecutionOptions>(configuration, MessagingExecutionOptions.SectionName, |
| 30 | + settings => settings.IsValid(), MessagingExecutionOptions.ValidationMessage), |
| 31 | + BenchmarkScenarioOptionsRegistration.Read<ZoneTreeStorageExecutionOptions>(configuration, ZoneTreeStorageExecutionOptions.SectionName, |
| 32 | + settings => settings.IsValid(), ZoneTreeStorageExecutionOptions.ValidationMessage), |
| 33 | + BenchmarkScenarioOptionsRegistration.Read<ZoneTreePointCacheExecutionOptions>(configuration, ZoneTreePointCacheExecutionOptions.SectionName, |
| 34 | + settings => settings.IsValid(), ZoneTreePointCacheExecutionOptions.ValidationMessage)); |
| 35 | + } |
| 36 | +} |
0 commit comments