Ver Fonte

Test case for retry

V2Ray há 10 anos atrás
pai
commit
60b116fbde
1 ficheiros alterados com 59 adições e 0 exclusões
  1. 59 0
      common/retry/retry_test.go

+ 59 - 0
common/retry/retry_test.go

@@ -0,0 +1,59 @@
+package retry
+
+import (
+	"errors"
+	"testing"
+	"time"
+
+	"github.com/v2ray/v2ray-core/testing/unit"
+)
+
+var (
+	TestError = errors.New("This is a fake error.")
+)
+
+func TestNoRetry(t *testing.T) {
+	assert := unit.Assert(t)
+
+	startTime := time.Now().Unix()
+	Timed(10, 100000).On(func() error {
+		return nil
+	})
+	endTime := time.Now().Unix()
+
+	assert.Int64(endTime - startTime).AtLeast(0)
+}
+
+func TestRetryOnce(t *testing.T) {
+	assert := unit.Assert(t)
+
+	startTime := time.Now()
+	called := 0
+	Timed(10, 1000).On(func() error {
+		if called == 0 {
+			called++
+			return TestError
+		}
+		return nil
+	})
+	duration := time.Since(startTime)
+
+	assert.Int64(int64(duration / time.Millisecond)).AtLeast(900)
+}
+
+func TestRetryMultiple(t *testing.T) {
+	assert := unit.Assert(t)
+
+	startTime := time.Now()
+	called := 0
+	Timed(10, 1000).On(func() error {
+		if called < 5 {
+			called++
+			return TestError
+		}
+		return nil
+	})
+	duration := time.Since(startTime)
+
+	assert.Int64(int64(duration / time.Millisecond)).AtLeast(4900)
+}