Fix corner case in rated resizer

This commit is contained in:
alitto
2020-06-06 20:54:16 -03:00
parent d7520f2075
commit dfbb355ab5
3 changed files with 28 additions and 3 deletions
+23
View File
@@ -190,6 +190,29 @@ func TestTrySubmit(t *testing.T) {
assertEqual(t, int32(1), atomic.LoadInt32(&doneCount))
}
func TestSubmitToIdle(t *testing.T) {
pool := pond.New(1, 5)
// Submit a task and wait for it to complete
pool.SubmitAndWait(func() {
time.Sleep(1 * time.Millisecond)
})
assertEqual(t, int(1), pool.Running())
assertEqual(t, int(1), pool.Idle())
// Submit another task (this one should go to the idle worker)
pool.SubmitAndWait(func() {
time.Sleep(1 * time.Millisecond)
})
pool.StopAndWait()
assertEqual(t, int(0), pool.Running())
assertEqual(t, int(0), pool.Idle())
}
func TestRunning(t *testing.T) {
workerCount := 5
+1 -1
View File
@@ -46,7 +46,7 @@ func RatedResizer(rate int) ResizingStrategy {
func (r *ratedResizer) Resize(runningWorkers, minWorkers, maxWorkers int) bool {
if r.rate == 1 {
if r.rate == 1 || runningWorkers == 0 {
return true
}
+4 -2
View File
@@ -9,9 +9,11 @@ func TestRatedResizer(t *testing.T) {
resizer := RatedResizer(3)
assertEqual(t, true, resizer.Resize(0, 0, 10))
assertEqual(t, false, resizer.Resize(1, 0, 10))
assertEqual(t, true, resizer.Resize(0, 0, 10))
assertEqual(t, true, resizer.Resize(1, 0, 10))
assertEqual(t, false, resizer.Resize(2, 0, 10))
assertEqual(t, true, resizer.Resize(3, 0, 10))
assertEqual(t, false, resizer.Resize(3, 0, 10))
assertEqual(t, true, resizer.Resize(4, 0, 10))
}
func TestRatedResizerWithRate1(t *testing.T) {