From 8fa75679c5b99d15b83e35a139beb2b34beef2a7 Mon Sep 17 00:00:00 2001 From: johnwong <124032292+justinwongcn@users.noreply.github.com> Date: Sat, 25 Jan 2025 22:36:59 +0800 Subject: [PATCH] =?UTF-8?q?test(retry):=20=E7=A7=BB=E9=99=A4=E5=B9=B6?= =?UTF-8?q?=E5=8F=91=E6=B5=8B=E8=AF=95=E5=B9=B6=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=BB=93=E6=9E=84=20(#273)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- retry/adaptive_test.go | 56 ------------------------------------------ 1 file changed, 56 deletions(-) diff --git a/retry/adaptive_test.go b/retry/adaptive_test.go index 3d8396b..1a14020 100644 --- a/retry/adaptive_test.go +++ b/retry/adaptive_test.go @@ -15,10 +15,7 @@ package retry import ( - "errors" "fmt" - "sync" - "sync/atomic" "testing" "time" @@ -82,59 +79,6 @@ func TestAdaptiveTimeoutRetryStrategy_Next(t *testing.T) { } } -// 测试场景 -// 阈值是50 -// 2000个请求 有1500个成功的 有500个失败的 最后统计500个失败的有50个可以执行 有450个不能执行 1500成功的都能执行 -func TestAdaptiveTimeoutRetryStrategy_Next_Concurrent(t *testing.T) { - // 创建一个基础策略 - baseStrategy := &MockStrategy{} - - // 创建升级版自适应策略,设置阈值为50 - strategy := NewAdaptiveTimeoutRetryStrategy(baseStrategy, 16, 50) - - var wg sync.WaitGroup - var successCount, errCount int64 - mockErr := errors.New("mock error") - - // 并发执行2000个请求 - for i := 0; i < 2000; i++ { - wg.Add(1) - go func(index int) { - defer wg.Done() - // 前1500个请求成功,后500个失败 - var err error - if index >= 1500 { - err = mockErr - } - strategy.Report(err) - _, allowed := strategy.Next() - if err != nil { - // 失败请求的统计 - if allowed { - atomic.AddInt64(&successCount, 1) - } else { - atomic.AddInt64(&errCount, 1) - } - } - }(i) - } - - // 等待所有goroutine完成 - wg.Wait() - - // 验证结果:期望大约50个失败请求可以执行,450个被拒绝 - // 由于是环形缓冲区和并发执行,可能会有一些误差,这里使用一个合理的范围进行判断 - finalSuccessCount := int(atomic.LoadInt64(&successCount)) - finalErrCount := int(atomic.LoadInt64(&errCount)) - if finalSuccessCount < 45 || finalSuccessCount > 55 { - t.Errorf("期望大约50个失败请求被允许执行,实际允许执行的失败请求数量为: %d", finalSuccessCount) - } - - if finalErrCount < 445 || finalErrCount > 455 { - t.Errorf("期望大约450个失败请求被拒绝执行,实际被拒绝的失败请求数量为: %d", finalErrCount) - } -} - func ExampleAdaptiveTimeoutRetryStrategy_Next() { baseStrategy, err := NewExponentialBackoffRetryStrategy(time.Second, time.Second*5, 10) if err != nil {