From d2ecfbfe9887ea67d1b88fa25899de408e4fe27b Mon Sep 17 00:00:00 2001 From: vivek-ng Date: Sun, 22 Nov 2020 23:23:56 -0600 Subject: [PATCH] Cap priority value while dynamically increasing priority of goroutines. (#12) * update priority value only if it's not max * update priority value in test * use constants in test --- priority/priorityRateLimiter.go | 6 ++++-- priority/priorityRateLimiter_test.go | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/priority/priorityRateLimiter.go b/priority/priorityRateLimiter.go index 3f9b18b..e2e5531 100644 --- a/priority/priorityRateLimiter.go +++ b/priority/priorityRateLimiter.go @@ -81,8 +81,10 @@ func (p *PriorityLimiter) Wait(priority constants.PriorityValue) { return case <-ticker.C: p.mu.Lock() - currentPriority := w.Priority - p.waitList.Update(w, currentPriority+1) + if w.Priority < int(constants.High) { + currentPriority := w.Priority + p.waitList.Update(w, currentPriority+1) + } p.mu.Unlock() } } diff --git a/priority/priorityRateLimiter_test.go b/priority/priorityRateLimiter_test.go index 7bb80e5..93703be 100644 --- a/priority/priorityRateLimiter_test.go +++ b/priority/priorityRateLimiter_test.go @@ -55,8 +55,8 @@ func TestDynamicPriority(t *testing.T) { pVal = nl.waitList.Top() pValItem = pVal.(queue.Item) expectedVal2 := pValItem.Priority - assert.GreaterOrEqual(t, expectedVal1, 10) - assert.GreaterOrEqual(t, expectedVal2, 10) + assert.GreaterOrEqual(t, expectedVal1, int(constants.High)) + assert.GreaterOrEqual(t, expectedVal2, int(constants.High)) } func TestPriorityLimiter_Timeout(t *testing.T) {