serve_tests.rs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //! Tests for `report::serve` (split at the 500-line cap).
  2. use crate::report::ReportRow;
  3. use crate::report::quality::Medals;
  4. use crate::report::stale::ledger_differs;
  5. fn row(name: &str, up: Option<i64>) -> ReportRow {
  6. ReportRow {
  7. name: name.to_string(),
  8. title: name.to_string(),
  9. model: "m".to_string(),
  10. parent: "m".to_string(),
  11. quant: "nvfp4".to_string(),
  12. engine: "vllm".to_string(),
  13. image: "img".to_string(),
  14. nodes: None,
  15. tp: 1,
  16. deploy: "docker".to_string(),
  17. port: 30000,
  18. incomplete: false,
  19. up,
  20. up_cluster: None,
  21. runs: 0,
  22. fleet_up: false,
  23. fleet_since: None,
  24. medals: Medals::default(),
  25. stale: false,
  26. reports: Vec::new(),
  27. }
  28. }
  29. /// A `stop` that closed a ledger (or a `serve` that opened one) must force a
  30. /// full re-collect — that is how the panel learns a lane is gone.
  31. #[test]
  32. fn ledger_diff_detects_stopped_and_started_lanes() {
  33. use std::collections::HashSet;
  34. let rows = vec![row("a", Some(1000)), row("b", None), row("c", Some(2000))];
  35. let led = HashSet::from(["a".to_string()]);
  36. assert!(
  37. ledger_differs(&rows, &led),
  38. "a closed run must force a re-collect"
  39. );
  40. let led = HashSet::from(["a".to_string(), "c".to_string()]);
  41. assert!(!ledger_differs(&rows, &led), "ledger matches the rows");
  42. let led = HashSet::from(["a".to_string(), "b".to_string(), "c".to_string()]);
  43. assert!(
  44. ledger_differs(&rows, &led),
  45. "a newly opened run must force a re-collect"
  46. );
  47. }