Skip to content

Commit a7db4f4

Browse files
authored
Merge pull request #895 from JoaoBraveCoding/flake-unit
fix: try to reduce flaky unit test by ordering results
2 parents 3032029 + 9e7b393 commit a7db4f4

1 file changed

Lines changed: 16 additions & 23 deletions

File tree

ratelimit/http_test.go

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -439,54 +439,47 @@ func launchTestRequests(t *testing.T, baseURL string, pathTest pathTestParams, r
439439
headers http.Header
440440
}
441441

442-
results := make(chan result)
443-
errCh := make(chan error)
444-
442+
ordered := make([]result, reqNum)
445443
var wg sync.WaitGroup
444+
var errOnce sync.Once
445+
var requestErr error
446446

447447
for i := 0; i < reqNum; i++ {
448448
wg.Add(1)
449449
time.Sleep(pathTest.waitBetween)
450450

451-
go func() {
451+
go func(i int) {
452452
defer wg.Done()
453453

454454
res, err := http.Get(baseURL + pathTest.path + "/" + testTenant)
455455
if err != nil {
456-
errCh <- err
456+
errOnce.Do(func() {
457+
requestErr = err
458+
})
457459
return
458460
}
459-
460461
defer res.Body.Close()
461462

462-
results <- result{
463-
res.StatusCode,
464-
res.Header,
463+
ordered[i] = result{
464+
statusCode: res.StatusCode,
465+
headers: res.Header.Clone(),
465466
}
466-
}()
467+
}(i)
467468
}
468469

469-
go func() {
470-
wg.Wait()
471-
close(errCh)
472-
close(results)
473-
}()
470+
wg.Wait()
474471

475-
select {
476-
case err := <-errCh:
477-
if err != nil {
478-
t.Fatal(err)
479-
}
480-
default:
472+
if requestErr != nil {
473+
t.Fatal(requestErr)
481474
}
482475

483476
var (
484477
gotOKs int
485478
gotTooManyRequests int
486-
gotHeaders = make([]http.Header, 0, len(results))
479+
gotHeaders = make([]http.Header, 0, reqNum)
487480
)
488481

489-
for r := range results {
482+
for _, r := range ordered {
490483
switch r.statusCode {
491484
case http.StatusOK:
492485
gotOKs++

0 commit comments

Comments
 (0)