mirror of
https://github.com/logos-storage/logos-storage-nim-cs-dist-tests.git
synced 2026-05-07 18:09:36 +00:00
* ci(docker): build dist-tests images * Update to .net 10, kubernetes client 18.0.13 Kubernetes client 18.0.13 is compatible with Kubernetes 1.34.x. The Kubernetes version is selected automatically by kubeadm in docker desktop (v1.34.1). See https://github.com/kubernetes-client/csharp#version-compatibility for a compatibility table. * Updates to support Kubernetes upgrade * bump openapi.yaml to match openapi.yaml in the logos-storage-nim docker image * bump doc to .net 10 * bump docker to .net 10 * Build image with latest tag always Always build an image with a latest tag (as well as a sha commit hash) when there's a push to master * docker image tag as "latest" only when pushing to master * Update docker image to install doctl * Remove doctl install kubeconfig is now created and uses a plain bearer token instead of using doctl as a credential mgr * Rename and remove all instances of Codex * Further remove CodexNetDeployer as it is no longer needed --------- Co-authored-by: Adam Uhlíř <adam@uhlir.dev>
69 lines
3.3 KiB
C#
69 lines
3.3 KiB
C#
using ArgsUniform;
|
|
using StoragePlugin;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace ContinuousTests
|
|
{
|
|
public class Configuration
|
|
{
|
|
[Uniform("log-path", "l", "LOGPATH", true, "Path where log files will be written.")]
|
|
public string LogPath { get; set; } = "logs";
|
|
|
|
[Uniform("data-path", "d", "DATAPATH", true, "Path where temporary data files will be written.")]
|
|
public string DataPath { get; set; } = "data";
|
|
|
|
[Uniform("storage-deployment", "c", "CODEXDEPLOYMENT", true, "Path to storage-deployment JSON file.")]
|
|
public string LogosStorageDeploymentJson { get; set; } = string.Empty;
|
|
|
|
[Uniform("keep", "k", "KEEP", false, "Set to 1 or 'true' to retain logs of successful tests.")]
|
|
public bool KeepPassedTestLogs { get; set; } = false;
|
|
|
|
[Uniform("kube-config", "kc", "KUBECONFIG", true, "Path to Kubeconfig file. Use 'null' (default) to use local cluster.")]
|
|
public string KubeConfigFile { get; set; } = "null";
|
|
|
|
[Uniform("stop", "s", "STOPONFAIL", false, "If greater than zero, runner will stop after this many test failures and download all cluster container logs. 0 by default.")]
|
|
public int StopOnFailure { get; set; } = 0;
|
|
|
|
[Uniform("target-duration", "td", "TARGETDURATION", false, "If set, runner will run for this length of time before stopping. Supports seconds, or '1d2h3m4s' format.")]
|
|
public string TargetDurationSeconds { get; set; } = string.Empty;
|
|
|
|
[Uniform("filter", "f", "FILTER", false, "If set, runs only tests whose names contain any of the filter strings. Comma-separated. Case sensitive.")]
|
|
public string Filter { get; set; } = string.Empty;
|
|
|
|
[Uniform("cleanup", "cl", "CLEANUP", false, "If set to 1 or 'true', the kubernetes namespace will be deleted after the test run has finished.")]
|
|
public bool Cleanup { get; set; } = false;
|
|
|
|
[Uniform("full-container-logs", "fcl", "FULLCONTAINERLOGS", false, "If set to 1 or 'true', container logs downloaded on test failure will download from" +
|
|
" the timestamp of the start of the network deployment. Otherwise, logs will start from the test start timestamp.")]
|
|
public bool FullContainerLogs { get; set; } = false;
|
|
|
|
public LogosStorageDeployment LogosStorageDeployment { get; set; } = null!;
|
|
}
|
|
|
|
public class ConfigLoader
|
|
{
|
|
public Configuration Load(string[] args)
|
|
{
|
|
var uniformArgs = new ArgsUniform<Configuration>(PrintHelp, args);
|
|
|
|
var result = uniformArgs.Parse(true);
|
|
result.LogosStorageDeployment = ParseLogosStorageDeploymentJson(result.LogosStorageDeploymentJson);
|
|
return result;
|
|
}
|
|
|
|
private LogosStorageDeployment ParseLogosStorageDeploymentJson(string filename)
|
|
{
|
|
var d = JsonConvert.DeserializeObject<LogosStorageDeployment>(File.ReadAllText(filename))!;
|
|
if (d == null) throw new Exception("Unable to parse " + filename);
|
|
return d;
|
|
}
|
|
|
|
private static void PrintHelp()
|
|
{
|
|
var nl = Environment.NewLine;
|
|
Console.WriteLine("ContinuousTests will run a set of tests against a logos-storage deployment given a storage-deployment.json file." + nl +
|
|
"The tests will run in an endless loop unless otherwise specified." + nl);
|
|
}
|
|
}
|
|
}
|