-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathProgram.cs
More file actions
44 lines (33 loc) · 1.77 KB
/
Copy pathProgram.cs
File metadata and controls
44 lines (33 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using FeatureFlags.Policies;
using Microsoft.Extensions.DependencyInjection;
using ModularityKit.Mutator.Abstractions;
using ModularityKit.Mutator.Abstractions.Engine;
using ModularityKit.Mutator.Runtime;
using ModularityKit.Mutator.Runtime.Loggers;
namespace FeatureFlags;
internal static class Program
{
private static async Task Main()
{
var services = new ServiceCollection();
services.AddMutators(MutationEngineOptions.Strict, addDefaultLoggingInterceptor: true);
var provider = services.BuildServiceProvider();
var engine = provider.GetRequiredService<IMutationEngine>();
//engine.RegisterPolicy(new BusinessHoursPolicy());
engine.RegisterPolicy(new RequireTwoManApprovalPolicy());
Console.WriteLine("=== ModularityKit.Mutators - Complete Example ===\n");
await Scenarios.EnableNewCheckoutScenario.Run(engine);
await Scenarios.DisableLegacyCheckoutScenario.Run(engine);
await Scenarios.BatchFeatureToggleScenario.Run(engine);
var history = await engine.GetHistoryAsync(stateId: "EnableNewCheckout");
MutationHistoryLogger.LogHistory(history);
Console.WriteLine("\n METRICS & STATISTICS");
var stats = await engine.GetStatisticsAsync();
Console.WriteLine($"\n Mutation Statistics:");
Console.WriteLine($" Total executed: {stats.TotalExecuted}");
Console.WriteLine($"\n Performance Metrics:");
Console.WriteLine($" Average execution time: {stats.AverageExecutionTime.TotalMilliseconds:F2} ms");
Console.WriteLine($" Median execution time: {stats.MedianExecutionTime.TotalMilliseconds:F2} ms");
Console.WriteLine($" P95 execution time: {stats.P95ExecutionTime.TotalMilliseconds:F2} ms");
}
}