-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program.cs
74 lines (61 loc) · 2.91 KB
/
Program.cs
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using Microsoft.Extensions.Configuration;
using System.Diagnostics;
namespace VectorIndexScenarioSuite
{
internal class Program
{
static async Task Main(string[] args)
{
// Setup configuration builder
var builder = new ConfigurationBuilder()
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
.AddCommandLine(args);
var configurations = builder.Build();
TraceConfigKeyValues(configurations);
string scenarioName = configurations["AppSettings:scenario:name"] ?? throw new ArgumentNullException("AppSettings:scenario:name");
Console.WriteLine();
Console.WriteLine($"Setting up {scenarioName}");
Scenario scenario = CreateScenario(configurations);
scenario.Setup();
Console.WriteLine();
Console.WriteLine($"Running {scenarioName} scenario. StartTime: {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
await scenario.Run();
stopwatch.Stop();
Console.WriteLine($"Scenario run took: {stopwatch.Elapsed.TotalSeconds} seconds.");
Console.WriteLine();
Console.WriteLine($"Finishing {scenarioName} scenario. EndTime: {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
scenario.Stop();
Console.WriteLine("Press Enter to exit...");
Console.ReadLine();
bool waitForUserInputBeforeExit = Convert.ToBoolean(configurations["AppSettings:waitForUserInputBeforeExit"]);
if(waitForUserInputBeforeExit)
{
Console.WriteLine("Press Enter to exit...");
Console.ReadLine();
}
}
static void TraceConfigKeyValues(IConfiguration configurations)
{
Console.WriteLine("Executing VectorIndexScenarioSuite.");
foreach (var configuration in configurations.AsEnumerable())
{
Console.WriteLine($"{configuration.Key} = {configuration.Value}");
}
}
static Scenario CreateScenario(IConfiguration configurations)
{
string scenarioName = configurations["AppSettings:scenario:name"] ?? throw new ArgumentNullException("AppSettings:scenario:name");
Scenarios scenarios = ScenarioParser.Parse(scenarioName);
switch (scenarios)
{
case Scenarios.WikiCohereEnglishEmbeddingOnly:
return new WikiCohereEnglishEmbeddingOnlyScenario(configurations);
default:
throw new System.Exception($"Scenario {scenarioName} is not supported.");
}
}
}
}