Skip to content

Commit

Permalink
fixed some unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
caffix committed Jul 24, 2024
1 parent 5f20179 commit 56e946c
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 10 deletions.
16 changes: 10 additions & 6 deletions rate.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@ import (
)

const (
maxQPSPerNameserver = 250
numIntervalSeconds = 2
rateUpdateInterval = numIntervalSeconds * time.Second
maxTimeoutPercentage = 0.5
startQPSPerNameserver = 15
maxQPSPerNameserver = 250
numIntervalSeconds = 2
rateUpdateInterval = numIntervalSeconds * time.Second
maxTimeoutPercentage = 0.5
)

type rateTrack struct {
Expand Down Expand Up @@ -52,8 +53,8 @@ func NewRateTracker() *RateTracker {

func newRateTrack() *rateTrack {
return &rateTrack{
qps: maxQPSPerNameserver,
rate: ratelimit.New(maxQPSPerNameserver),
qps: startQPSPerNameserver,
rate: ratelimit.New(startQPSPerNameserver),
}
}

Expand Down Expand Up @@ -135,6 +136,9 @@ func (rt *rateTrack) update() {
}
} else {
rt.qps += 1
if rt.qps > maxQPSPerNameserver {
rt.qps = maxQPSPerNameserver
}
}
// update the QPS rate limiter and reset counters
rt.rate = ratelimit.New(rt.qps)
Expand Down
6 changes: 4 additions & 2 deletions rate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@ func TestUpdateRateLimiters(t *testing.T) {
tracker.Lock()
qps := tracker.qps
tracker.Unlock()
num := qps / 2
num := qps / 3
// set a large number of timeouts
for i := 0; i < num; i++ {
rt.Success(domain)
}
for i := 0; i < num; i++ {

max := tracker.qps - num
for i := 0; i < max; i++ {
rt.Timeout(domain)
}
time.Sleep(rateUpdateInterval + (rateUpdateInterval / 2))
Expand Down
2 changes: 1 addition & 1 deletion resolvers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func TestInitializeResolver(t *testing.T) {

func TestSetTimeout(t *testing.T) {
r := NewResolvers()
_ = r.AddResolvers(1000, "8.8.8.8")
_ = r.AddResolvers(maxQPSPerNameserver, "8.8.8.8")
defer r.Stop()

timeout := 2 * time.Second
Expand Down
8 changes: 7 additions & 1 deletion selector.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,14 @@ func (r *randomSelector) GetResolver() *resolver {
r.Lock()
defer r.Unlock()

if l := len(r.list); l == 0 {
return nil
} else if l == 1 {
return r.list[0]
}

var chosen *resolver
sel := rand.Intn(len(r.list) + 1)
sel := rand.Intn(len(r.list))
loop:
for _, res := range r.list[sel:] {
select {
Expand Down

0 comments on commit 56e946c

Please sign in to comment.