ServerWorkflowTests.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. using Tests.EndToEnd.Infra;
  2. using Xunit.Abstractions;
  3. namespace Tests.EndToEnd.ServerTests;
  4. [Collection("Yaml CLI tests")]
  5. public class ServerWorkflowTests(TempYamlCliFixture fs, ITestOutputHelper outputHelper)
  6. : IClassFixture<TempYamlCliFixture> {
  7. private async Task<(string output, string yaml)> ExecuteAsync(params string[] args) {
  8. outputHelper.WriteLine($"rpk {string.Join(" ", args)}");
  9. var output = await YamlCliTestHost.RunAsync(
  10. args,
  11. fs.Root,
  12. outputHelper,
  13. "config.yaml");
  14. outputHelper.WriteLine(output);
  15. var yaml = await File.ReadAllTextAsync(Path.Combine(fs.Root, "config.yaml"));
  16. return (output, yaml);
  17. }
  18. [Fact]
  19. public async Task servers_cli_workflow_test() {
  20. await File.WriteAllTextAsync(Path.Combine(fs.Root, "config.yaml"), "");
  21. // Add server
  22. (var output, var yaml) = await ExecuteAsync("servers", "add", "srv01");
  23. Assert.Equal("Server 'srv01' added.\n", output);
  24. Assert.Contains("name: srv01", yaml);
  25. // Update server
  26. (output, yaml) = await ExecuteAsync(
  27. "servers", "set", "srv01",
  28. "--ram", "128",
  29. "--ram_mts", "3200",
  30. "--ipmi", "True"
  31. );
  32. Assert.Equal("Server 'srv01' updated.\n", output);
  33. Assert.Equal("""
  34. version: 3
  35. resources:
  36. - kind: Server
  37. ram:
  38. size: 128
  39. mts: 3200
  40. ipmi: true
  41. name: srv01
  42. connections: []
  43. """, yaml);
  44. // Add CPU
  45. (output, yaml) = await ExecuteAsync(
  46. "servers", "cpu", "add", "srv01",
  47. "--model", "Intel Xeon Silver 4310",
  48. "--cores", "12",
  49. "--threads", "24"
  50. );
  51. Assert.Equal("CPU added to 'srv01'.\n", output);
  52. // Add Drive
  53. (output, yaml) = await ExecuteAsync(
  54. "servers", "drive", "add", "srv01",
  55. "--type", "ssd",
  56. "--size", "1024"
  57. );
  58. Assert.Equal("Drive added to 'srv01'.\n", output);
  59. // Add GPU
  60. (output, yaml) = await ExecuteAsync(
  61. "servers", "gpu", "add", "srv01",
  62. "--model", "NVIDIA A2000",
  63. "--vram", "6"
  64. );
  65. Assert.Equal("GPU added to 'srv01'.\n", output);
  66. // Add NIC
  67. (output, yaml) = await ExecuteAsync(
  68. "servers", "nic", "add", "srv01",
  69. "--type", "RJ45",
  70. "--speed", "10",
  71. "--ports", "2"
  72. );
  73. Assert.Equal("NIC added to 'srv01'.\n", output);
  74. (output, yaml) = await ExecuteAsync(
  75. "servers", "nic", "add", "srv01",
  76. "--type", "RJ45",
  77. "--speed", "2.5",
  78. "--ports", "2"
  79. );
  80. Assert.Equal("NIC added to 'srv01'.\n", output);
  81. // Get server
  82. (output, yaml) = await ExecuteAsync("servers", "get", "srv01");
  83. Assert.Equal(
  84. "srv01 RAM: 128 GB, IPMI: yes\n",
  85. output
  86. );
  87. // Summary (flexible table check)
  88. (output, yaml) = await ExecuteAsync("servers", "summary");
  89. Assert.Contains("srv01", output);
  90. Assert.Contains("128 GB", output);
  91. Assert.Contains("1024 GB", output);
  92. Assert.Contains("Intel", output);
  93. Assert.Contains("Xeon", output);
  94. Assert.Contains("C/T", output);
  95. Assert.Contains("RAM", output);
  96. Assert.Contains("Storage", output);
  97. Assert.Contains("NICs", output);
  98. Assert.Contains("GPUs", output);
  99. Assert.Contains("IPMI", output);
  100. // Describe (flexible)
  101. (output, yaml) = await ExecuteAsync("servers", "describe", "srv01");
  102. Assert.Contains("srv01", output);
  103. Assert.Contains("yes", output);
  104. Assert.Contains("128 GB", output);
  105. Assert.Contains("Intel Xeon", output);
  106. Assert.Contains("12/24", output);
  107. // Tree (loose)
  108. (output, yaml) = await ExecuteAsync("servers", "tree", "srv01");
  109. Assert.Contains("srv01", output);
  110. // Delete server
  111. (output, yaml) = await ExecuteAsync("servers", "del", "srv01");
  112. Assert.Equal("""
  113. Server 'srv01' deleted.
  114. """, output);
  115. }
  116. }