ServerHardwareReportTests.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using NSubstitute;
  2. using RackPeek.Domain.Resources.Hardware;
  3. using RackPeek.Domain.Resources.Hardware.Servers;
  4. using RackPeek.Domain.Resources.Models;
  5. namespace Tests.HardwareResources;
  6. public class ServerHardwareReportTests
  7. {
  8. [Fact]
  9. public async Task Server_report_calculates_storage_and_cpu_correctly()
  10. {
  11. var repo = Substitute.For<IHardwareRepository>();
  12. repo.GetAllAsync().Returns([
  13. new Server
  14. {
  15. Name = "srv1",
  16. Ipmi = true,
  17. Cpus = new List<Cpu>
  18. {
  19. new() { Model = "Xeon", Cores = 4, Threads = 8 }
  20. },
  21. Ram = new Ram { Size = 32 },
  22. Drives = new List<Drive>
  23. {
  24. new() { Type = "ssd", Size = 256 },
  25. new() { Type = "hdd", Size = 2048 }
  26. },
  27. Nics = new List<Nic>
  28. {
  29. new() { Speed = 10, Ports = 2 }
  30. },
  31. Gpus = new List<Gpu>
  32. {
  33. new() { Model = "NVIDIA Tesla T4", Vram = 16 },
  34. new() { Model = "NVIDIA Tesla T4", Vram = 16 },
  35. new() { Model = "RTX 3080", Vram = 10 }
  36. }
  37. }
  38. ]);
  39. var sut = new ServerHardwareReportUseCase(repo);
  40. var report = await sut.ExecuteAsync();
  41. var server = report.Servers.Single();
  42. Assert.Equal(2304, server.TotalStorageGb);
  43. Assert.Equal(4, server.TotalCores);
  44. Assert.Equal(10, server.MaxNicSpeedGb);
  45. Assert.Equal(3, server.GpuCount);
  46. Assert.Equal(42, server.TotalGpuVramGb);
  47. Assert.Equal("2× NVIDIA Tesla T4, 1× RTX 3080", server.GpuSummary);
  48. }
  49. }