qingcloud-sdk-go/utils/wait_test.go

50 lines
1019 B
Go

package utils
import (
"errors"
"github.com/stretchr/testify/assert"
"testing"
"time"
)
func TestWaitForSpecificOrError(t *testing.T) {
waitInterval := 100 * time.Millisecond
timeout := 10*waitInterval + waitInterval/2
times := 0
err := WaitForSpecificOrError(func() (bool, error) {
times++
println("times", times)
if times == 3 {
return true, nil
}
return false, nil
}, timeout, waitInterval)
assert.NoError(t, err)
assert.Equal(t, 3, times)
times = 0
err = WaitForSpecificOrError(func() (bool, error) {
times++
println("times", times)
if times == 3 {
return false, errors.New("error")
}
return false, nil
}, timeout, waitInterval)
assert.Error(t, err)
assert.Equal(t, 3, times)
times = 0
err = WaitForSpecificOrError(func() (bool, error) {
times++
println("times", times)
return false, nil
}, timeout, waitInterval)
assert.Error(t, err)
tErr, ok := err.(*TimeoutError)
assert.True(t, ok)
assert.Equal(t, timeout, tErr.timeout)
assert.Equal(t, 10, times)
}