ServerHardwareReportTests.cs 1.8 KB

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