2024-05-17 18:30:33 +08:00
|
|
|
// Copyright 2021 GoEdge goedge.cdn@gmail.com. All rights reserved.
|
2021-12-09 17:34:05 +08:00
|
|
|
|
2024-01-11 15:25:47 +08:00
|
|
|
package ratelimit_test
|
2021-12-09 17:34:05 +08:00
|
|
|
|
|
|
|
|
import (
|
2024-01-11 15:25:47 +08:00
|
|
|
"github.com/TeaOSLab/EdgeNode/internal/utils/ratelimit"
|
|
|
|
|
"github.com/TeaOSLab/EdgeNode/internal/utils/testutils"
|
2021-12-09 17:34:05 +08:00
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestCounter_ACK(t *testing.T) {
|
2024-01-11 15:25:47 +08:00
|
|
|
if !testutils.IsSingleTesting() {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var counter = ratelimit.NewCounter(10)
|
2021-12-09 17:34:05 +08:00
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
|
for i := 0; i < 10; i++ {
|
|
|
|
|
counter.Ack()
|
|
|
|
|
}
|
|
|
|
|
//counter.Release()
|
|
|
|
|
t.Log("waiting", time.Now().Unix())
|
|
|
|
|
counter.Ack()
|
|
|
|
|
t.Log("done", time.Now().Unix())
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
time.Sleep(1 * time.Second)
|
|
|
|
|
counter.Close()
|
|
|
|
|
time.Sleep(1 * time.Second)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestCounter_Release(t *testing.T) {
|
2024-01-11 15:25:47 +08:00
|
|
|
var counter = ratelimit.NewCounter(10)
|
2021-12-09 17:34:05 +08:00
|
|
|
|
|
|
|
|
for i := 0; i < 10; i++ {
|
|
|
|
|
counter.Ack()
|
|
|
|
|
}
|
|
|
|
|
for i := 0; i < 10; i++ {
|
|
|
|
|
counter.Release()
|
|
|
|
|
}
|
2024-01-11 15:25:47 +08:00
|
|
|
t.Log(counter.Len())
|
2021-12-09 17:34:05 +08:00
|
|
|
}
|