Skip to content

Commit 856b04e

Browse files
fix: switch logic
1 parent 5a905f8 commit 856b04e

1 file changed

Lines changed: 34 additions & 42 deletions

File tree

benchmark/BenchmarkRunner/Program.cs

Lines changed: 34 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,37 @@ public class Program
66
{
77
private static readonly HashSet<string> _databases = ["mysql", "postgresql", "sqlite"];
88
private static readonly HashSet<string> _types = ["reads", "writes"];
9+
private static readonly ILoggerFactory _loggerFactory = LoggerFactory.Create(builder =>
10+
builder
11+
.AddConsole()
12+
.SetMinimumLevel(LogLevel.Information));
13+
private static readonly MysqlRunner _mysqlRunner = new(
14+
Config.GetMysqlConnectionString(),
15+
_loggerFactory.CreateLogger<MysqlRunner>());
16+
private static readonly PostgresqlRunner _postgresqlRunner = new(
17+
Config.GetPostgresConnectionString(),
18+
_loggerFactory.CreateLogger<PostgresqlRunner>());
19+
private static readonly SqliteRunner _sqliteRunner = new(
20+
Config.GetSqliteConnectionString(),
21+
_loggerFactory.CreateLogger<SqliteRunner>());
22+
private static readonly Dictionary<string, Dictionary<string, Func<Task>>> _benchmarkConfigs = new()
23+
{
24+
{ "mysql", new()
25+
{
26+
{ "reads", _mysqlRunner.RunReadsAsync },
27+
{ "writes", _mysqlRunner.RunWritesAsync }
28+
}},
29+
{ "postgresql", new()
30+
{
31+
{ "reads", _postgresqlRunner.RunReadsAsync },
32+
{ "writes", _postgresqlRunner.RunWritesAsync }
33+
}},
34+
{ "sqlite", new()
35+
{
36+
{ "reads", _sqliteRunner.RunReadsAsync },
37+
{ "writes", _sqliteRunner.RunWritesAsync }
38+
}}
39+
};
940

1041
public static async Task Main(string[] args)
1142
{
@@ -17,7 +48,9 @@ public static async Task Main(string[] args)
1748
var typeOption = GetTypeOption();
1849
rootCommand.AddOption(typeOption);
1950

20-
rootCommand.SetHandler(CommandHandler, databaseOption, typeOption);
51+
rootCommand.SetHandler(
52+
async (database, type) => await _benchmarkConfigs[database][type](),
53+
databaseOption, typeOption);
2154
await rootCommand.InvokeAsync(args);
2255
}
2356

@@ -54,45 +87,4 @@ private static Option<string> GetTypeOption()
5487
});
5588
return option;
5689
}
57-
private static async Task CommandHandler(string database, string type)
58-
{
59-
using var loggerFactory = LoggerFactory.Create(builder =>
60-
builder
61-
.AddConsole()
62-
.SetMinimumLevel(LogLevel.Information));
63-
64-
var mysqlRunner = new MysqlRunner(
65-
Config.GetMysqlConnectionString(),
66-
loggerFactory.CreateLogger<MysqlRunner>());
67-
var postgresqlRunner = new PostgresqlRunner(
68-
Config.GetPostgresConnectionString(),
69-
loggerFactory.CreateLogger<PostgresqlRunner>());
70-
var sqliteRunner = new SqliteRunner(
71-
Config.GetSqliteConnectionString(),
72-
loggerFactory.CreateLogger<SqliteRunner>());
73-
74-
switch (database, type)
75-
{
76-
case ("mysql", "read"):
77-
await mysqlRunner.RunReadsAsync();
78-
break;
79-
case ("mysql", "write"):
80-
await mysqlRunner.RunWritesAsync();
81-
break;
82-
case ("postgresql", "read"):
83-
await postgresqlRunner.RunReadsAsync();
84-
break;
85-
case ("postgresql", "write"):
86-
await postgresqlRunner.RunWritesAsync();
87-
break;
88-
case ("sqlite", "read"):
89-
await sqliteRunner.RunReadsAsync();
90-
break;
91-
case ("sqlite", "write"):
92-
await sqliteRunner.RunWritesAsync();
93-
break;
94-
default:
95-
throw new ArgumentException($"Invalid database - {database}, type - {type}");
96-
}
97-
}
9890
}

0 commit comments

Comments
 (0)