Wideband autonomous SDR analysis engine forked from sdr-visual-suite
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.7KB

  1. package pipeline
  2. import (
  3. "testing"
  4. "sdr-wideband-suite/internal/config"
  5. )
  6. func TestApplyNamedProfile(t *testing.T) {
  7. cfg := config.Default()
  8. ApplyNamedProfile(&cfg, "wideband-balanced")
  9. if cfg.Pipeline.Mode != "wideband-balanced" {
  10. t.Fatalf("mode not applied: %s", cfg.Pipeline.Mode)
  11. }
  12. if cfg.Pipeline.Goals.Intent != "wideband-surveillance" {
  13. t.Fatalf("intent not applied: %s", cfg.Pipeline.Goals.Intent)
  14. }
  15. if cfg.Surveillance.AnalysisFFTSize < 4096 {
  16. t.Fatalf("analysis fft too small: %d", cfg.Surveillance.AnalysisFFTSize)
  17. }
  18. if !cfg.Refinement.Enabled {
  19. t.Fatalf("refinement should stay enabled")
  20. }
  21. if cfg.Resources.MaxRefinementJobs < 16 {
  22. t.Fatalf("refinement jobs too small: %d", cfg.Resources.MaxRefinementJobs)
  23. }
  24. }
  25. func TestPolicyFromConfig(t *testing.T) {
  26. cfg := config.Default()
  27. cfg.Pipeline.Mode = "archive"
  28. cfg.Pipeline.Goals.Intent = "archive-and-triage"
  29. cfg.Pipeline.Goals.MonitorStartHz = 88e6
  30. cfg.Pipeline.Goals.MonitorEndHz = 108e6
  31. cfg.Pipeline.Goals.MonitorSpanHz = 20e6
  32. cfg.Pipeline.Goals.SignalPriorities = []string{"broadcast-fm", "rds"}
  33. cfg.Surveillance.AnalysisFFTSize = 8192
  34. cfg.Surveillance.FrameRate = 9
  35. cfg.Refinement.Enabled = true
  36. cfg.Resources.MaxRefinementJobs = 5
  37. cfg.Refinement.MinCandidateSNRDb = 2.5
  38. cfg.Resources.PreferGPU = true
  39. p := PolicyFromConfig(cfg)
  40. if p.Mode != "archive" || p.Intent != "archive-and-triage" || p.SurveillanceFFTSize != 8192 || p.SurveillanceFPS != 9 {
  41. t.Fatalf("unexpected policy: %+v", p)
  42. }
  43. if p.MonitorSpanHz != 20e6 || len(p.SignalPriorities) != 2 {
  44. t.Fatalf("unexpected policy goals: %+v", p)
  45. }
  46. if !p.RefinementEnabled || p.MaxRefinementJobs != 5 || p.MinCandidateSNRDb != 2.5 || !p.PreferGPU {
  47. t.Fatalf("unexpected policy details: %+v", p)
  48. }
  49. }