package throttling import ( "context" "fmt" "testing" "time" ) func TestCallFunction(t *testing.T) { client := &Callable{} // create context for app ctx := context.Background() fmt.Println("Starting") throttle := CreateThrottle(ctx, 2) CallFunction(ctx, client, &Payload{}, throttle) CallFunction(ctx, client, &Payload{}, throttle) CallFunction(ctx, client, &Payload{}, throttle) time.Sleep(2 * time.Second) fmt.Println("Continuing") CallFunction(ctx, client, &Payload{}, throttle) CallFunction(ctx, client, &Payload{}, throttle) CallFunction(ctx, client, &Payload{}, throttle) } type Callable struct { } func (c *Callable) Call(p *Payload) { fmt.Println("Called with payload") }