SystemYamlE2ETests.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using Tests.EndToEnd.Infra;
  2. using Xunit.Abstractions;
  3. namespace Tests.EndToEnd;
  4. [Collection("Yaml CLI tests")]
  5. public class SystemYamlE2ETests(TempYamlCliFixture fs, ITestOutputHelper outputHelper) : IClassFixture<TempYamlCliFixture>
  6. {
  7. private async Task<(string, string)> ExecuteAsync(params string[] args)
  8. {
  9. outputHelper.WriteLine($"rpk {string.Join(" ", args)}");
  10. var inputArgs = args.ToArray();
  11. var output = await YamlCliTestHost.RunAsync(
  12. inputArgs,
  13. fs.Root,
  14. outputHelper,
  15. "config.yaml"
  16. );
  17. outputHelper.WriteLine(output);
  18. var yaml = await File.ReadAllTextAsync(Path.Combine(fs.Root, "config.yaml"));
  19. return (output, yaml);
  20. }
  21. [Fact]
  22. public async Task systems_cli_workflow_test()
  23. {
  24. await File.WriteAllTextAsync(Path.Combine(fs.Root, "config.yaml"), "");
  25. // Add system
  26. var (output, yaml) = await ExecuteAsync("systems", "add", "host01");
  27. Assert.Equal("System 'host01' added.\n", output);
  28. Assert.Equal("""
  29. resources:
  30. - kind: System
  31. type:
  32. os:
  33. cores:
  34. ram:
  35. drives:
  36. runsOn:
  37. name: host01
  38. tags:
  39. """, yaml);
  40. // Update system
  41. (output, yaml) = await ExecuteAsync(
  42. "systems", "set", "host01",
  43. "--type", "server",
  44. "--os", "ubuntu-22.04",
  45. "--cores", "4",
  46. "--ram", "8192",
  47. "--runs-on", "hypervisor01"
  48. );
  49. Assert.Equal("System 'host01' updated.\n", output);
  50. Assert.Equal("""
  51. resources:
  52. - kind: System
  53. type: server
  54. os: ubuntu-22.04
  55. cores: 4
  56. ram: 8192
  57. drives:
  58. runsOn: hypervisor01
  59. name: host01
  60. tags:
  61. """, yaml);
  62. // Get system by name
  63. (output, yaml) = await ExecuteAsync("systems", "get", "host01");
  64. Assert.Equal("host01 Type: server, OS: ubuntu-22.04, Cores: 4, RAM: 8192GB, Storage: 0GB, \nRunsOn: hypervisor01\n", output);
  65. // List systems
  66. (output, yaml) = await ExecuteAsync("systems", "list");
  67. Assert.Equal("""
  68. ╭────────┬────────┬─────────────┬───────┬──────────┬─────────────┬─────────────╮
  69. │ Name │ Type │ OS │ Cores │ RAM (GB) │ Storage │ Runs On │
  70. │ │ │ │ │ │ (GB) │ │
  71. ├────────┼────────┼─────────────┼───────┼──────────┼─────────────┼─────────────┤
  72. │ host01 │ server │ ubuntu-22.0 │ 4 │ 8192 │ 0 │ hypervisor0 │
  73. │ │ │ 4 │ │ │ │ 1 │
  74. ╰────────┴────────┴─────────────┴───────┴──────────┴─────────────┴─────────────╯
  75. """, output);
  76. // Report systems
  77. (output, yaml) = await ExecuteAsync("systems", "summary");
  78. Assert.Equal("""
  79. ╭────────┬────────┬─────────────┬───────┬──────────┬─────────────┬─────────────╮
  80. │ Name │ Type │ OS │ Cores │ RAM (GB) │ Storage │ Runs On │
  81. │ │ │ │ │ │ (GB) │ │
  82. ├────────┼────────┼─────────────┼───────┼──────────┼─────────────┼─────────────┤
  83. │ host01 │ server │ ubuntu-22.0 │ 4 │ 8192 │ 0 │ hypervisor0 │
  84. │ │ │ 4 │ │ │ │ 1 │
  85. ╰────────┴────────┴─────────────┴───────┴──────────┴─────────────┴─────────────╯
  86. """, output);
  87. // Delete system
  88. (output, yaml) = await ExecuteAsync("systems", "del", "host01");
  89. Assert.Equal("""
  90. System 'host01' deleted.
  91. """, output);
  92. // Ensure list is empty
  93. (output, yaml) = await ExecuteAsync("systems", "list");
  94. Assert.Equal("""
  95. No systems found.
  96. """, output);
  97. }
  98. }