Merge pull request #244 from slingamn/fix_fakelag

fix fakelag double-rate issue
This commit is contained in:
Daniel Oaks 2018-04-16 19:49:59 +10:00 committed by GitHub
commit 3a00b64830
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 5 deletions

View File

@ -85,9 +85,10 @@ func (fl *Fakelag) Touch() {
} }
// space them out by at least window/messagesperwindow // space them out by at least window/messagesperwindow
sleepDuration := time.Duration((int64(fl.window) / int64(fl.throttleMessagesPerWindow)) - int64(elapsed)) sleepDuration := time.Duration((int64(fl.window) / int64(fl.throttleMessagesPerWindow)) - int64(elapsed))
if sleepDuration < 0 { if sleepDuration > 0 {
sleepDuration = 0
}
fl.sleepFunc(sleepDuration) fl.sleepFunc(sleepDuration)
// the touch time should take into account the time we slept
fl.lastTouch = fl.nowFunc()
}
} }
} }

View File

@ -83,13 +83,15 @@ func TestFakelag(t *testing.T) {
t.Fatalf("incorrect sleep time: %v != %v", expected, duration) t.Fatalf("incorrect sleep time: %v != %v", expected, duration)
} }
// send another message without a pause; we should have to sleep for 500 msec
fl.Touch() fl.Touch()
if fl.state != FakelagThrottled { if fl.state != FakelagThrottled {
t.Fatalf("should be throttled") t.Fatalf("should be throttled")
} }
slept, duration = mt.lastSleep() slept, duration = mt.lastSleep()
if duration != interval { expected, _ = time.ParseDuration("500ms")
t.Fatalf("incorrect sleep time: %v != %v", interval, duration) if duration != expected {
t.Fatalf("incorrect sleep time: %v != %v", duration, expected)
} }
mt.pause(interval * 6) mt.pause(interval * 6)