From 686cdc88e26f343799242fc92c8492e6e5563b21 Mon Sep 17 00:00:00 2001 From: benbierens Date: Sun, 19 Mar 2023 11:18:56 +0100 Subject: [PATCH] Debugging two-client test --- BasicTests/DebugEndpointTests.cs | 12 ++++---- TestCore/CodexDockerImage.cs | 50 ++++++++++++++++++++++++++++++++ TestCore/DistTest.cs | 2 +- TestCore/FileManager.cs | 6 ++++ TestCore/K8sManager.cs | 17 ++++------- 5 files changed, 68 insertions(+), 19 deletions(-) create mode 100644 TestCore/CodexDockerImage.cs diff --git a/BasicTests/DebugEndpointTests.cs b/BasicTests/DebugEndpointTests.cs index a218600..29c75c4 100644 --- a/BasicTests/DebugEndpointTests.cs +++ b/BasicTests/DebugEndpointTests.cs @@ -15,24 +15,24 @@ namespace CodexDistTests.BasicTests Assert.That(debugInfo.spr, Is.Not.Empty); } - + //[Test] //public void TwoClientTest() //{ - // var primaryNodex = SetupCodexNode() + // var primary = SetupCodexNode() // .WithLogLevel(CodexLogLevel.Warn) // .WithStorageQuota(1024 * 1024) // .BringOnline(); - // var secondaryNodex = SetupCodexNode() - // .WithBootstrapNode(primaryNodex) + // var secondary = SetupCodexNode() + // .WithBootstrapNode(primary) // .BringOnline(); // var testFile = GenerateTestFile(1024 * 1024); - // var contentId = primaryNodex.UploadFile(testFile); + // var contentId = primary.UploadFile(testFile); - // var downloadedFile = secondaryNodex.DownloadContent(contentId); + // var downloadedFile = secondary.DownloadContent(contentId); // testFile.AssertIsEqual(downloadedFile); diff --git a/TestCore/CodexDockerImage.cs b/TestCore/CodexDockerImage.cs new file mode 100644 index 0000000..4bc5c70 --- /dev/null +++ b/TestCore/CodexDockerImage.cs @@ -0,0 +1,50 @@ +using k8s.Models; + +namespace CodexDistTests.TestCore +{ + public class CodexDockerImage + { + public string GetImageTag() + { + return "thatbenbierens/nim-codex:sha-c9a62de"; + } + + public List CreateEnvironmentVariables(OfflineCodexNode node) + { + var formatter = new EnvFormatter(); + formatter.Create(node); + return formatter.Result; + } + + private class EnvFormatter + { + public List Result { get; } = new List(); + + public void Create(OfflineCodexNode node) + { + if (node.BootstrapNode != null) + { + var debugInfo = node.BootstrapNode.GetDebugInfo(); + AddVar("BOOTSTRAP_SPR", debugInfo.spr); + } + if (node.LogLevel != null) + { + AddVar("LOG_LEVEL", node.LogLevel.ToString()!.ToUpperInvariant()); + } + if (node.StorageQuota != null) + { + AddVar("STORAGE_QUOTA", node.StorageQuota.ToString()!); + } + } + + private void AddVar(string key, string value) + { + Result.Add(new V1EnvVar + { + Name = key, + Value = value + }); + } + } + } +} diff --git a/TestCore/DistTest.cs b/TestCore/DistTest.cs index 326a8f1..70d60d7 100644 --- a/TestCore/DistTest.cs +++ b/TestCore/DistTest.cs @@ -17,8 +17,8 @@ namespace CodexDistTests.TestCore [TearDown] public void TearDownDistTest() { - fileManager.DeleteAllTestFiles(); k8sManager.DeleteAllResources(); + fileManager.DeleteAllTestFiles(); } public TestFile GenerateTestFile(int size = 1024) diff --git a/TestCore/FileManager.cs b/TestCore/FileManager.cs index 3144929..8f6e47f 100644 --- a/TestCore/FileManager.cs +++ b/TestCore/FileManager.cs @@ -16,9 +16,15 @@ namespace CodexDistTests.TestCore private readonly Random random = new Random(); private readonly List activeFiles = new List(); + public FileManager() + { + if (!Directory.Exists(Folder)) Directory.CreateDirectory(Folder); + } + public TestFile CreateEmptyTestFile() { var result = new TestFile(Path.Combine(Folder, Guid.NewGuid().ToString() + "_test.bin")); + File.Create(result.Filename).Close(); activeFiles.Add(result); return result; } diff --git a/TestCore/K8sManager.cs b/TestCore/K8sManager.cs index 08b0f0d..44b3957 100644 --- a/TestCore/K8sManager.cs +++ b/TestCore/K8sManager.cs @@ -11,7 +11,7 @@ namespace CodexDistTests.TestCore public class K8sManager : IK8sManager { private const string k8sNamespace = "codex-test-namespace"; - private const string codexDockerImage = "thatbenbierens/nim-codex:sha-c9a62de"; + private readonly CodexDockerImage dockerImage = new CodexDockerImage(); private readonly IFileManager fileManager; private int freePort; private int nodeOrderNumber; @@ -36,7 +36,7 @@ namespace CodexDistTests.TestCore var codexNode = new OnlineCodexNode(node, fileManager, activeNode.Port); activeNodes.Add(codexNode, activeNode); - CreateDeployment(activeNode, client); + CreateDeployment(activeNode, client, node); CreateService(activeNode, client); WaitUntilOnline(activeNode, client); @@ -162,7 +162,7 @@ namespace CodexDistTests.TestCore #region Deployment management - private void CreateDeployment(ActiveNode node, Kubernetes client) + private void CreateDeployment(ActiveNode node, Kubernetes client, OfflineCodexNode codexNode) { var deploymentSpec = new V1Deployment { @@ -188,7 +188,7 @@ namespace CodexDistTests.TestCore new V1Container { Name = node.GetContainerName(), - Image = codexDockerImage, + Image = dockerImage.GetImageTag(), Ports = new List { new V1ContainerPort @@ -197,14 +197,7 @@ namespace CodexDistTests.TestCore Name = node.GetContainerPortName() } }, - Env = new List// todo - { - new V1EnvVar - { - Name = "LOG_LEVEL", - Value = "WARN" - } - } + Env = dockerImage.CreateEnvironmentVariables(codexNode) } } }