Cleanup codex log level and namespace override

This commit is contained in:
benbierens 2023-09-13 14:37:53 +02:00
parent ec5aebb47b
commit ca5981e852
No known key found for this signature in database
GPG Key ID: FE44815D96D0A1AA
9 changed files with 34 additions and 135 deletions

View File

@ -7,6 +7,7 @@ namespace CodexPlugin
{ {
private readonly CodexStarter codexStarter; private readonly CodexStarter codexStarter;
private readonly IPluginTools tools; private readonly IPluginTools tools;
private readonly CodexLogLevel defaultLogLevel = CodexLogLevel.Trace;
public CodexPlugin(IPluginTools tools) public CodexPlugin(IPluginTools tools)
{ {
@ -27,7 +28,8 @@ namespace CodexPlugin
public RunningContainers[] StartCodexNodes(int numberOfNodes, Action<ICodexSetup> setup) public RunningContainers[] StartCodexNodes(int numberOfNodes, Action<ICodexSetup> setup)
{ {
var codexSetup = new CodexSetup(numberOfNodes, CodexLogLevel.Trace); var codexSetup = new CodexSetup(numberOfNodes);
codexSetup.LogLevel = defaultLogLevel;
setup(codexSetup); setup(codexSetup);
return codexStarter.BringOnline(codexSetup); return codexStarter.BringOnline(codexSetup);
} }

View File

@ -5,6 +5,7 @@ namespace CodexPlugin
{ {
public interface ICodexSetup public interface ICodexSetup
{ {
ICodexSetup WithLogLevel(CodexLogLevel logLevel);
ICodexSetup WithName(string name); ICodexSetup WithName(string name);
ICodexSetup At(Location location); ICodexSetup At(Location location);
ICodexSetup WithBootstrapNode(IOnlineCodexNode node); ICodexSetup WithBootstrapNode(IOnlineCodexNode node);
@ -22,12 +23,17 @@ namespace CodexPlugin
{ {
public int NumberOfNodes { get; } public int NumberOfNodes { get; }
public CodexSetup(int numberOfNodes, CodexLogLevel logLevel) public CodexSetup(int numberOfNodes)
: base(logLevel)
{ {
NumberOfNodes = numberOfNodes; NumberOfNodes = numberOfNodes;
} }
public ICodexSetup WithLogLevel(CodexLogLevel logLevel)
{
LogLevel = logLevel;
return this;
}
public ICodexSetup WithName(string name) public ICodexSetup WithName(string name)
{ {
NameOverride = name; NameOverride = name;

View File

@ -5,14 +5,9 @@ namespace CodexPlugin
{ {
public class CodexStartupConfig public class CodexStartupConfig
{ {
public CodexStartupConfig(CodexLogLevel logLevel)
{
LogLevel = logLevel;
}
public string? NameOverride { get; set; } public string? NameOverride { get; set; }
public Location Location { get; set; } public Location Location { get; set; }
public CodexLogLevel LogLevel { get; } public CodexLogLevel LogLevel { get; set; }
public ByteSize? StorageQuota { get; set; } public ByteSize? StorageQuota { get; set; }
public bool MetricsEnabled { get; set; } public bool MetricsEnabled { get; set; }
//public MarketplaceInitialConfig? MarketplaceConfig { get; set; } //public MarketplaceInitialConfig? MarketplaceConfig { get; set; }

View File

@ -62,8 +62,7 @@ namespace Core
public IStartupWorkflow CreateWorkflow(string? namespaceOverride = null) public IStartupWorkflow CreateWorkflow(string? namespaceOverride = null)
{ {
if (namespaceOverride != null) throw new Exception("Namespace override is not supported in the DistTest environment. (It would mess up automatic resource cleanup.)"); return workflowCreator.CreateWorkflow(namespaceOverride);
return workflowCreator.CreateWorkflow();
} }
public IFileManager GetFileManager() public IFileManager GetFileManager()

View File

@ -8,8 +8,6 @@ namespace DistTestCore
private readonly string logPath; private readonly string logPath;
private readonly bool logDebug; private readonly bool logDebug;
private readonly string dataFilesPath; private readonly string dataFilesPath;
//private readonly CodexLogLevel codexLogLevel;
private readonly string k8sNamespacePrefix;
public Configuration() public Configuration()
{ {
@ -17,28 +15,28 @@ namespace DistTestCore
logPath = GetEnvVarOrDefault("LOGPATH", "CodexTestLogs"); logPath = GetEnvVarOrDefault("LOGPATH", "CodexTestLogs");
logDebug = GetEnvVarOrDefault("LOGDEBUG", "false").ToLowerInvariant() == "true"; logDebug = GetEnvVarOrDefault("LOGDEBUG", "false").ToLowerInvariant() == "true";
dataFilesPath = GetEnvVarOrDefault("DATAFILEPATH", "TestDataFiles"); dataFilesPath = GetEnvVarOrDefault("DATAFILEPATH", "TestDataFiles");
//codexLogLevel = ParseEnum.Parse<CodexLogLevel>(GetEnvVarOrDefault("LOGLEVEL", nameof(CodexLogLevel.Trace)));
k8sNamespacePrefix = "ct-";
} }
public Configuration(string? kubeConfigFile, string logPath, bool logDebug, string dataFilesPath, /*CodexLogLevel codexLogLevel,*/ string k8sNamespacePrefix) public Configuration(string? kubeConfigFile, string logPath, bool logDebug, string dataFilesPath)
{ {
this.kubeConfigFile = kubeConfigFile; this.kubeConfigFile = kubeConfigFile;
this.logPath = logPath; this.logPath = logPath;
this.logDebug = logDebug; this.logDebug = logDebug;
this.dataFilesPath = dataFilesPath; this.dataFilesPath = dataFilesPath;
//this.codexLogLevel = codexLogLevel;
this.k8sNamespacePrefix = k8sNamespacePrefix;
} }
public KubernetesWorkflow.Configuration GetK8sConfiguration(ITimeSet timeSet, string k8sNamespace) public KubernetesWorkflow.Configuration GetK8sConfiguration(ITimeSet timeSet, string k8sNamespace)
{ {
return new KubernetesWorkflow.Configuration( var config = new KubernetesWorkflow.Configuration(
kubeConfigFile: kubeConfigFile, kubeConfigFile: kubeConfigFile,
operationTimeout: timeSet.K8sOperationTimeout(), operationTimeout: timeSet.K8sOperationTimeout(),
retryDelay: timeSet.WaitForK8sServiceDelay(), retryDelay: timeSet.WaitForK8sServiceDelay(),
kubernetesNamespace: k8sNamespace kubernetesNamespace: k8sNamespace
); );
config.AllowNamespaceOverride = false;
return config;
} }
public Logging.LogConfig GetLogConfig() public Logging.LogConfig GetLogConfig()
@ -51,11 +49,6 @@ namespace DistTestCore
return dataFilesPath; return dataFilesPath;
} }
//public CodexLogLevel GetCodexLogLevel()
//{
// return codexLogLevel;
//}
private static string GetEnvVarOrDefault(string varName, string defaultValue) private static string GetEnvVarOrDefault(string varName, string defaultValue)
{ {
var v = Environment.GetEnvironmentVariable(varName); var v = Environment.GetEnvironmentVariable(varName);
@ -70,6 +63,4 @@ namespace DistTestCore
return v; return v;
} }
} }
} }

View File

@ -113,59 +113,6 @@ namespace DistTestCore
Get().GetFileManager().ScopedFiles(action); Get().GetFileManager().ScopedFiles(action);
} }
//public IOnlineCodexNode SetupCodexBootstrapNode()
//{
// return SetupCodexBootstrapNode(s => { });
//}
//public virtual IOnlineCodexNode SetupCodexBootstrapNode(Action<ICodexSetup> setup)
//{
// return SetupCodexNode(s =>
// {
// setup(s);
// s.WithName("Bootstrap");
// });
//}
//public IOnlineCodexNode SetupCodexNode()
//{
// return SetupCodexNode(s => { });
//}
//public IOnlineCodexNode SetupCodexNode(Action<ICodexSetup> setup)
//{
// return SetupCodexNodes(1, setup)[0];
//}
//public ICodexNodeGroup SetupCodexNodes(int numberOfNodes)
//{
// return SetupCodexNodes(numberOfNodes, s => { });
//}
//public virtual ICodexNodeGroup SetupCodexNodes(int numberOfNodes, Action<ICodexSetup> setup)
//{
// var codexSetup = CreateCodexSetup(numberOfNodes);
// setup(codexSetup);
// return BringOnline(codexSetup);
//}
//public ICodexNodeGroup BringOnline(ICodexSetup codexSetup)
//{
// return Get().CodexStarter.BringOnline((CodexSetup)codexSetup);
//}
//public IEnumerable<IOnlineCodexNode> GetAllOnlineCodexNodes()
//{
// return Get().CodexStarter.RunningGroups.SelectMany(g => g.Nodes);
//}
//public override T GetPlugin<T>()
//{
// return Get().GetPlugin<T>();
//}
public ILog GetTestLog() public ILog GetTestLog()
{ {
return Get().Log; return Get().Log;
@ -188,11 +135,6 @@ namespace DistTestCore
Stopwatch.Measure(Get().Log, name, action); Stopwatch.Measure(Get().Log, name, action);
} }
//protected CodexSetup CreateCodexSetup(int numberOfNodes)
//{
// return new CodexSetup(numberOfNodes, configuration.GetCodexLogLevel());
//}
protected TestLifecycle Get() protected TestLifecycle Get()
{ {
lock (lifecycleLock) lock (lifecycleLock)
@ -293,37 +235,6 @@ namespace DistTestCore
} }
} }
//private void DownloadAllLogs(TestLifecycle lifecycle)
//{
// OnEachCodexNode(lifecycle, node =>
// {
// lifecycle.DownloadLog(node.CodexAccess.Container);
// });
//}
//private void DownloadAllMetrics(TestLifecycle lifecycle)
//{
// var metricsDownloader = new MetricsDownloader(lifecycle.Log);
// OnEachCodexNode(lifecycle, node =>
// {
// var m = node.Metrics as MetricsAccess;
// if (m != null)
// {
// metricsDownloader.DownloadAllMetricsForNode(node.GetName(), m);
// }
// });
//}
//private void OnEachCodexNode(TestLifecycle lifecycle, Action<OnlineCodexNode> action)
//{
// var allNodes = lifecycle.CodexStarter.RunningGroups.SelectMany(g => g.Nodes);
// foreach (var node in allNodes)
// {
// action(node);
// }
//}
private string GetCurrentTestName() private string GetCurrentTestName()
{ {
return $"[{TestContext.CurrentContext.Test.Name}]"; return $"[{TestContext.CurrentContext.Test.Name}]";

View File

@ -45,29 +45,12 @@ namespace DistTestCore
return entryPoint.Tools.GetFileManager(); return entryPoint.Tools.GetFileManager();
} }
//public IDownloadedLog DownloadLog(RunningContainer container, int? tailLines = null)
//{
// var subFile = Log.CreateSubfile();
// var description = container.Name;
// var handler = new LogDownloadHandler(container, description, subFile);
// Log.Log($"Downloading logs for {description} to file '{subFile.FullFilename}'");
// //CodexStarter.DownloadLog(container, handler, tailLines);
// return new DownloadedLog(subFile, description);
//}
public string GetTestDuration() public string GetTestDuration()
{ {
var testDuration = DateTime.UtcNow - testStart; var testDuration = DateTime.UtcNow - testStart;
return Time.FormatDuration(testDuration); return Time.FormatDuration(testDuration);
} }
////public void SetCodexVersion(CodexDebugVersionResponse version)
////{
//// if (CodexVersion == null) CodexVersion = version;
////}
//public ApplicationIds GetApplicationIds() //public ApplicationIds GetApplicationIds()
//{ //{
// //return new ApplicationIds( // //return new ApplicationIds(

View File

@ -14,5 +14,6 @@
public TimeSpan OperationTimeout { get; } public TimeSpan OperationTimeout { get; }
public TimeSpan RetryDelay { get; } public TimeSpan RetryDelay { get; }
public string KubernetesNamespace { get; } public string KubernetesNamespace { get; }
public bool AllowNamespaceOverride { get; set; } = true;
} }
} }

View File

@ -10,22 +10,33 @@ namespace KubernetesWorkflow
private readonly KnownK8sPods knownPods = new KnownK8sPods(); private readonly KnownK8sPods knownPods = new KnownK8sPods();
private readonly K8sCluster cluster; private readonly K8sCluster cluster;
private readonly ILog log; private readonly ILog log;
private readonly Configuration configuration;
private readonly string k8sNamespace; private readonly string k8sNamespace;
public WorkflowCreator(ILog log, Configuration configuration) public WorkflowCreator(ILog log, Configuration configuration)
{ {
this.log = log; this.log = log;
this.configuration = configuration;
cluster = new K8sCluster(configuration); cluster = new K8sCluster(configuration);
k8sNamespace = configuration.KubernetesNamespace.ToLowerInvariant(); k8sNamespace = configuration.KubernetesNamespace.ToLowerInvariant();
} }
public IStartupWorkflow CreateWorkflow() public IStartupWorkflow CreateWorkflow(string? namespaceOverride = null)
{ {
var workflowNumberSource = new WorkflowNumberSource(numberSource.GetNextNumber(), var workflowNumberSource = new WorkflowNumberSource(numberSource.GetNextNumber(),
containerNumberSource); containerNumberSource);
return new StartupWorkflow(log, workflowNumberSource, cluster, knownPods, k8sNamespace); return new StartupWorkflow(log, workflowNumberSource, cluster, knownPods, GetNamespace(namespaceOverride));
}
private string GetNamespace(string? namespaceOverride)
{
if (namespaceOverride != null)
{
if (!configuration.AllowNamespaceOverride) throw new Exception("Namespace override is not allowed.");
return namespaceOverride;
}
return k8sNamespace;
} }
} }
} }