...

Source file src/github.com/datawire/ambassador/v2/pkg/limiter/limiter_test.go

Documentation: github.com/datawire/ambassador/v2/pkg/limiter

     1  package limiter
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  )
     7  
     8  type MrT testing.T
     9  
    10  func pity(fool *testing.T) *MrT {
    11  	return (*MrT)(fool)
    12  }
    13  
    14  func (t *MrT) expect(expected, actual time.Duration) {
    15  	if expected != actual {
    16  		t.Errorf("expected %s, got %s", expected, actual)
    17  	}
    18  }
    19  
    20  func TestIntervalLimiter(fool *testing.T) {
    21  	t := pity(fool)
    22  	l := NewInterval(1 * time.Second)
    23  	start := time.Now()
    24  	t.expect(0, l.Limit(start))
    25  	t.expect(999*time.Millisecond, l.Limit(start.Add(1*time.Millisecond)))
    26  	t.expect(-1, l.Limit(start.Add(500*time.Millisecond)))
    27  	t.expect(-1, l.Limit(start.Add(999*time.Millisecond)))
    28  	t.expect(0, l.Limit(start.Add(1000*time.Millisecond)))
    29  	t.expect(999*time.Millisecond, l.Limit(start.Add(1001*time.Millisecond)))
    30  	t.expect(-1, l.Limit(start.Add(1500*time.Millisecond)))
    31  	t.expect(-1, l.Limit(start.Add(1999*time.Millisecond)))
    32  	t.expect(0, l.Limit(start.Add(2000*time.Millisecond)))
    33  	t.expect(500*time.Millisecond, l.Limit(start.Add(2500*time.Millisecond)))
    34  	t.expect(-1, l.Limit(start.Add(2999*time.Millisecond)))
    35  	t.expect(0, l.Limit(start.Add(3000*time.Millisecond)))
    36  }
    37  

View as plain text