Kevin Wan 1 жил өмнө
parent
commit
28314326e7

+ 40 - 21
core/syncx/timeoutlimit_test.go

@@ -9,25 +9,44 @@ import (
 )
 
 func TestTimeoutLimit(t *testing.T) {
-	limit := NewTimeoutLimit(2)
-	assert.Nil(t, limit.Borrow(time.Millisecond*200))
-	assert.Nil(t, limit.Borrow(time.Millisecond*200))
-	var wait1, wait2, wait3 sync.WaitGroup
-	wait1.Add(1)
-	wait2.Add(1)
-	wait3.Add(1)
-	go func() {
-		wait1.Wait()
-		wait2.Done()
-		assert.Nil(t, limit.Return())
-		wait3.Done()
-	}()
-	wait1.Done()
-	wait2.Wait()
-	assert.Nil(t, limit.Borrow(time.Second))
-	wait3.Wait()
-	assert.Equal(t, ErrTimeout, limit.Borrow(time.Millisecond*100))
-	assert.Nil(t, limit.Return())
-	assert.Nil(t, limit.Return())
-	assert.Equal(t, ErrLimitReturn, limit.Return())
+	tests := []struct {
+		name     string
+		interval time.Duration
+	}{
+		{
+			name: "no wait",
+		},
+		{
+			name:     "wait",
+			interval: time.Millisecond * 100,
+		},
+	}
+
+	for _, test := range tests {
+		test := test
+		t.Run(test.name, func(t *testing.T) {
+			limit := NewTimeoutLimit(2)
+			assert.Nil(t, limit.Borrow(time.Millisecond*200))
+			assert.Nil(t, limit.Borrow(time.Millisecond*200))
+			var wait1, wait2, wait3 sync.WaitGroup
+			wait1.Add(1)
+			wait2.Add(1)
+			wait3.Add(1)
+			go func() {
+				wait1.Wait()
+				wait2.Done()
+				time.Sleep(test.interval)
+				assert.Nil(t, limit.Return())
+				wait3.Done()
+			}()
+			wait1.Done()
+			wait2.Wait()
+			assert.Nil(t, limit.Borrow(time.Second))
+			wait3.Wait()
+			assert.Equal(t, ErrTimeout, limit.Borrow(time.Millisecond*100))
+			assert.Nil(t, limit.Return())
+			assert.Nil(t, limit.Return())
+			assert.Equal(t, ErrLimitReturn, limit.Return())
+		})
+	}
 }