Skip to content

Commit 385b99c

Browse files
committed
Randomize testing order
1 parent f4b7b04 commit 385b99c

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

www/tester.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"fmt"
1111
"io"
1212
"log"
13+
"math/rand"
1314
"net"
1415
"net/http"
1516
"net/url"
@@ -68,8 +69,17 @@ func NewTester(db *DB, concurrency int, timeout time.Duration) *Tester {
6869
}
6970

7071
func (t *Tester) TestAll(resolvers []Resolver) {
71-
jobs := make(chan TestJob, len(resolvers)*2)
72-
results := make(chan TestJobResult, len(resolvers)*2)
72+
// Shuffle resolvers to ensure random testing order each interval.
73+
// This guarantees all entries get a fair chance to be tested early,
74+
// regardless of their position in the source files.
75+
shuffled := make([]Resolver, len(resolvers))
76+
copy(shuffled, resolvers)
77+
rand.Shuffle(len(shuffled), func(i, j int) {
78+
shuffled[i], shuffled[j] = shuffled[j], shuffled[i]
79+
})
80+
81+
jobs := make(chan TestJob, len(shuffled)*2)
82+
results := make(chan TestJobResult, len(shuffled)*2)
7383

7484
var wg sync.WaitGroup
7585
for i := 0; i < t.concurrency; i++ {
@@ -84,7 +94,7 @@ func (t *Tester) TestAll(resolvers []Resolver) {
8494
}
8595

8696
go func() {
87-
for _, r := range resolvers {
97+
for _, r := range shuffled {
8898
resolverID, err := t.db.UpsertResolver(r.Name, string(r.Type), r.Description, r.SourceFile)
8999
if err != nil {
90100
log.Printf("Failed to upsert resolver %s: %v", r.Name, err)

0 commit comments

Comments
 (0)