package limit

import (
	"golang.org/x/time/rate"
	"testing"
	"time"
)

func TestRateLimiter(t *testing.T) {
	// 测试限流，连续多次请求 id=10
	//p := &Parameters{
	//	Key:      "key",
	//	Burst:    1,
	//	Interval: time.Second * 5,
	//}
	//n := NewRateLimiter()
	//for i := 0; i < 11; i++ {
	//	err := n.RateLimit(p)
	//	if err != nil {
	//		t.Errorf("请求被限流，处理 id=%d ,错误信息：%v", i, err)
	//	} else {
	//		t.Logf("请求成功，处理 id=%d 的请求\n", i)
	//	}
	//	time.Sleep(1 * time.Second) // 每 1 秒请求一次
	//}

	limiter := rate.NewLimiter(rate.Every(time.Second), 100) // 每秒100个令牌，突发容量100
	if !limiter.Allow() {
		// 拒绝或排队请求（需结合业务逻辑）
		t.Log("限流")
		return
	}
}
