channel_monitor_probe_retirement_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //go:build unit
  2. package service
  3. import (
  4. "context"
  5. "testing"
  6. "github.com/stretchr/testify/require"
  7. )
  8. type channelMonitorRuntimeStub struct {
  9. rt ChannelMonitorRuntime
  10. }
  11. func (s channelMonitorRuntimeStub) GetChannelMonitorRuntime(context.Context) ChannelMonitorRuntime {
  12. return s.rt
  13. }
  14. func TestRunCheck_ModeV2NeverProbes(t *testing.T) {
  15. svc := NewChannelMonitorService(nil, nil)
  16. svc.SetRuntimeReader(channelMonitorRuntimeStub{rt: ChannelMonitorRuntime{
  17. Enabled: true,
  18. Mode: ChannelMonitorModeV2,
  19. }})
  20. results, err := svc.RunCheck(context.Background(), 1)
  21. require.ErrorIs(t, err, ErrChannelMonitorActiveProbesRetired)
  22. require.Nil(t, results)
  23. }
  24. func TestRunCheck_DisabledReturnsDisabled(t *testing.T) {
  25. svc := NewChannelMonitorService(nil, nil)
  26. svc.SetRuntimeReader(channelMonitorRuntimeStub{rt: ChannelMonitorRuntime{
  27. Enabled: false,
  28. Mode: ChannelMonitorModeV1,
  29. }})
  30. _, err := svc.RunCheck(context.Background(), 1)
  31. require.ErrorIs(t, err, ErrChannelMonitorDisabled)
  32. }
  33. func TestRunCheck_NilRuntimeReaderFailsClosedAsV2(t *testing.T) {
  34. svc := NewChannelMonitorService(nil, nil)
  35. // No SetRuntimeReader → probeRuntime defaults to mode=v2 (retired).
  36. _, err := svc.RunCheck(context.Background(), 1)
  37. require.ErrorIs(t, err, ErrChannelMonitorActiveProbesRetired)
  38. }
  39. func TestNormalizeChannelMonitorMode(t *testing.T) {
  40. require.Equal(t, ChannelMonitorModeV1, normalizeChannelMonitorMode(""))
  41. require.Equal(t, ChannelMonitorModeV1, normalizeChannelMonitorMode("v1"))
  42. require.Equal(t, ChannelMonitorModeV2, normalizeChannelMonitorMode("v2"))
  43. require.Equal(t, ChannelMonitorModeV1, normalizeChannelMonitorMode("invalid"))
  44. require.Equal(t, ChannelMonitorModeV1, normalizeChannelMonitorMode(" V1 "))
  45. }
  46. func TestChannelMonitorRuntimeActiveProbesAllowed(t *testing.T) {
  47. require.False(t, (ChannelMonitorRuntime{Enabled: false, Mode: ChannelMonitorModeV1}).ActiveProbesAllowed())
  48. require.True(t, (ChannelMonitorRuntime{Enabled: true, Mode: ChannelMonitorModeV1}).ActiveProbesAllowed())
  49. require.False(t, (ChannelMonitorRuntime{Enabled: true, Mode: ChannelMonitorModeV2}).ActiveProbesAllowed())
  50. require.True(t, (ChannelMonitorRuntime{Enabled: true, Mode: ChannelMonitorModeV2}).PassiveAggregationAllowed())
  51. }