traffic-repository-review.go.txt 1.4 KB

123456789101112131415161718192021222324
  1. package repository
  2. import (
  3. "context"
  4. "testing"
  5. "time"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestLatestReviewLoweredRPMReturnsEarliestActualAdmission(t *testing.T) {
  9. server,cache,plan:=trafficFixture(t);ctx:=context.Background()
  10. start:=time.Date(2026,9,14,12,0,0,0,time.UTC)
  11. for i:=0;i<3;i++ { server.SetTime(start.Add(time.Duration(i)*10*time.Second));a,err:=cache.Acquire(ctx,plan,string(rune('a'+i)));require.NoError(t,err);require.True(t,a.Allowed) }
  12. server.SetTime(start.Add(30*time.Second));plan.Revision=2;plan.Signature="lowered";plan.Policy.RPM=1;plan.Policy.Burst=1
  13. require.NoError(t,cache.Sync(ctx,plan));denied,err:=cache.Acquire(ctx,plan,"blocked");require.NoError(t,err);require.False(t,denied.Allowed)
  14. require.Equal(t,50*time.Second,denied.RetryAfter,"all three old requests must age out before the new cap of 1 permits another request")
  15. }
  16. func TestLatestReviewObserveStalePlanRejectionIsReal(t *testing.T) {
  17. _,cache,old:=trafficFixture(t);ctx:=context.Background();old.Policy.StrictRPMEnabled=false;old.Policy.AdaptiveEnabled=true
  18. next:=old;next.Revision=2;next.Signature="new-observe-threshold";next.Policy.FailureThreshold=5
  19. require.NoError(t,cache.Sync(ctx,next));result,err:=cache.Acquire(ctx,old,"old-ws-turn");require.NoError(t,err)
  20. require.True(t,result.Allowed,"editing an observation threshold should not stop an existing observation-only session")
  21. }