enhancement wait utils.
This commit is contained in:
parent
7d14bfa832
commit
c122f02485
|
@ -15,7 +15,8 @@ func WaitJob(jobService *service.JobService, jobID string, timeout time.Duration
|
|||
input := &service.DescribeJobsInput{Jobs: []*string{&jobID}}
|
||||
output, err := jobService.DescribeJobs(input)
|
||||
if err != nil {
|
||||
return false, err
|
||||
//network or api error, not considered job fail.
|
||||
return false, nil
|
||||
}
|
||||
if len(output.JobSet) == 0 {
|
||||
return false, fmt.Errorf("Can not find job [%s]", jobID)
|
||||
|
|
|
@ -5,6 +5,18 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
// An Error represents a timeout error.
|
||||
type TimeoutError struct {
|
||||
timeout time.Duration
|
||||
}
|
||||
|
||||
func (e *TimeoutError) Error() string { return fmt.Sprintf("Wait timeout [%s] ", e.timeout) }
|
||||
func (e *TimeoutError) Timeout() time.Duration { return e.timeout }
|
||||
|
||||
func NewTimeoutError(timeout time.Duration) *TimeoutError {
|
||||
return &TimeoutError{timeout: timeout}
|
||||
}
|
||||
|
||||
// WaitForSpecificOrError wait a function return true or error.
|
||||
func WaitForSpecificOrError(f func() (bool, error), timeout time.Duration, waitInterval time.Duration) error {
|
||||
ticker := time.NewTicker(waitInterval)
|
||||
|
@ -23,7 +35,7 @@ func WaitForSpecificOrError(f func() (bool, error), timeout time.Duration, waitI
|
|||
return nil
|
||||
}
|
||||
case <-timer.C:
|
||||
return fmt.Errorf("Wait timeout [%s] ", timeout)
|
||||
return NewTimeoutError(timeout)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,5 +42,8 @@ func TestWaitForSpecificOrError(t *testing.T) {
|
|||
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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue