cs-codex-dist-tests/ContinuousTests/ContinuousTestRunner.cs

58 lines
2.0 KiB
C#
Raw Normal View History

2023-06-28 13:11:20 +00:00
using DistTestCore;
using Logging;
2023-06-25 09:06:47 +00:00
namespace ContinuousTests
{
2023-06-25 07:53:10 +00:00
public class ContinuousTestRunner
{
2023-06-28 13:11:20 +00:00
private readonly K8sFactory k8SFactory = new K8sFactory();
private readonly ConfigLoader configLoader = new ConfigLoader();
private readonly TestFactory testFactory = new TestFactory();
2023-06-25 07:53:10 +00:00
private readonly Configuration config;
private readonly StartupChecker startupChecker;
2023-06-26 12:44:21 +00:00
public ContinuousTestRunner(string[] args)
{
2023-06-26 12:44:21 +00:00
config = configLoader.Load(args);
2023-06-25 07:53:10 +00:00
startupChecker = new StartupChecker(config);
}
2023-06-25 07:53:10 +00:00
public void Run()
{
2023-06-25 07:53:10 +00:00
startupChecker.Check();
2023-06-25 09:06:47 +00:00
var overviewLog = new FixtureLog(new LogConfig(config.LogPath, false), "Overview");
2023-06-27 08:16:59 +00:00
overviewLog.Log("Continuous tests starting...");
2023-06-25 07:53:10 +00:00
var allTests = testFactory.CreateTests();
2023-06-28 13:11:20 +00:00
ClearAllCustomNamespaces(allTests, overviewLog);
2023-06-27 08:16:59 +00:00
var testLoop = allTests.Select(t => new TestLoop(config, overviewLog, t.GetType(), t.RunTestEvery)).ToArray();
2023-06-27 08:16:59 +00:00
foreach (var t in testLoop)
{
2023-06-27 08:16:59 +00:00
overviewLog.Log("Launching test-loop for " + t.Name);
2023-06-25 07:53:10 +00:00
t.Begin();
2023-06-28 10:01:20 +00:00
Thread.Sleep(TimeSpan.FromSeconds(15));
}
2023-06-27 08:16:59 +00:00
overviewLog.Log("All test-loops launched.");
2023-06-25 08:50:01 +00:00
while (true) Thread.Sleep((2 ^ 31) - 1);
}
2023-06-28 13:11:20 +00:00
private void ClearAllCustomNamespaces(ContinuousTest[] allTests, FixtureLog log)
{
foreach (var test in allTests) ClearAllCustomNamespaces(test, log);
}
private void ClearAllCustomNamespaces(ContinuousTest test, FixtureLog log)
{
if (string.IsNullOrEmpty(test.CustomK8sNamespace)) return;
log.Log($"Clearing namespace '{test.CustomK8sNamespace}'...");
var (workflowCreator, _) = k8SFactory.CreateFacilities(config, test.CustomK8sNamespace, new DefaultTimeSet(), log);
workflowCreator.CreateWorkflow().DeleteTestResources();
}
}
}