| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- //go:build unit
- package service
- import (
- "testing"
- "time"
- "github.com/stretchr/testify/require"
- )
- func TestChannelMonitorV2MaxChunkForDepth(t *testing.T) {
- now := time.Date(2026, 8, 8, 12, 0, 0, 0, time.UTC)
- // Within last day → tightest ceiling (2h).
- require.Equal(t, channelMonitorV2MaxChunkNear1d, channelMonitorV2MaxChunkForDepth(now, now.Add(-2*time.Hour)))
- // Between 1d and 7d → 4h.
- require.Equal(t, channelMonitorV2MaxChunkNear7d, channelMonitorV2MaxChunkForDepth(now, now.Add(-2*24*time.Hour)))
- // Older than 7d → 6h (never 24h default).
- require.Equal(t, channelMonitorV2MaxChunkFar, channelMonitorV2MaxChunkForDepth(now, now.Add(-10*24*time.Hour)))
- require.Less(t, channelMonitorV2MaxChunkFar, 24*time.Hour)
- require.Equal(t, time.Hour, channelMonitorV2BackfillChunkInit)
- require.Equal(t, 15*time.Minute, channelMonitorV2MinBackfillChunk)
- }
- func TestChannelMonitorV2AggregatorAdaptiveChunk(t *testing.T) {
- s := NewChannelMonitorV2Aggregator(nil, nil, nil)
- now := time.Date(2026, 8, 8, 12, 0, 0, 0, time.UTC)
- cursor := now.Add(-3 * time.Hour)
- // Failure shrinks chunk and sets backoff floor.
- s.backfillChunk = 2 * time.Hour
- s.recordBackfillFailure(now, cursor)
- require.Equal(t, time.Hour, s.backfillChunk)
- require.Equal(t, time.Minute, s.nextWaitFloor)
- require.Equal(t, 1, s.backfillFailures)
- // Repeated failure halves again and raises floor.
- s.recordBackfillFailure(now, cursor)
- require.Equal(t, 30*time.Minute, s.backfillChunk)
- require.Equal(t, 2*time.Minute, s.nextWaitFloor)
- // Fast success grows within depth ceiling and clears backoff.
- s.recordBackfillSuccess(cursor.Add(-30*time.Minute), 5*time.Second, now)
- require.Equal(t, 0, s.backfillFailures)
- require.Equal(t, time.Duration(0), s.nextWaitFloor)
- require.Greater(t, s.backfillChunk, 30*time.Minute)
- require.LessOrEqual(t, s.backfillChunk, channelMonitorV2MaxChunkForDepth(now, cursor.Add(-30*time.Minute)))
- }
|