helper/resource: Add timeout to TimeoutError msg (#8773)
This commit is contained in:
parent
f9db94621b
commit
86acdccaf2
|
@ -3,6 +3,7 @@ package resource
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type NotFoundError struct {
|
type NotFoundError struct {
|
||||||
|
@ -41,6 +42,7 @@ func (e *UnexpectedStateError) Error() string {
|
||||||
type TimeoutError struct {
|
type TimeoutError struct {
|
||||||
LastError error
|
LastError error
|
||||||
LastState string
|
LastState string
|
||||||
|
Timeout time.Duration
|
||||||
ExpectedState []string
|
ExpectedState []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,16 +52,24 @@ func (e *TimeoutError) Error() string {
|
||||||
expectedState = fmt.Sprintf("state to become '%s'", strings.Join(e.ExpectedState, ", "))
|
expectedState = fmt.Sprintf("state to become '%s'", strings.Join(e.ExpectedState, ", "))
|
||||||
}
|
}
|
||||||
|
|
||||||
lastState := ""
|
extraInfo := make([]string, 0)
|
||||||
if e.LastState != "" {
|
if e.LastState != "" {
|
||||||
lastState = fmt.Sprintf(" (last state: '%s')", e.LastState)
|
extraInfo = append(extraInfo, fmt.Sprintf("last state: '%s'", e.LastState))
|
||||||
|
}
|
||||||
|
if e.Timeout > 0 {
|
||||||
|
extraInfo = append(extraInfo, fmt.Sprintf("timeout: %s", e.Timeout.String()))
|
||||||
|
}
|
||||||
|
|
||||||
|
suffix := ""
|
||||||
|
if len(extraInfo) > 0 {
|
||||||
|
suffix = fmt.Sprintf(" (%s)", strings.Join(extraInfo, ", "))
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.LastError != nil {
|
if e.LastError != nil {
|
||||||
return fmt.Sprintf("timeout while waiting for %s%s: %s",
|
return fmt.Sprintf("timeout while waiting for %s%s: %s",
|
||||||
expectedState, lastState, e.LastError)
|
expectedState, suffix, e.LastError)
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("timeout while waiting for %s%s",
|
return fmt.Sprintf("timeout while waiting for %s%s",
|
||||||
expectedState, lastState)
|
expectedState, suffix)
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,6 +183,7 @@ func (conf *StateChangeConf) WaitForState() (interface{}, error) {
|
||||||
return nil, &TimeoutError{
|
return nil, &TimeoutError{
|
||||||
LastError: r.Error,
|
LastError: r.Error,
|
||||||
LastState: r.State,
|
LastState: r.State,
|
||||||
|
Timeout: conf.Timeout,
|
||||||
ExpectedState: conf.Target,
|
ExpectedState: conf.Target,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ func TestWaitForState_inconsistent_negative(t *testing.T) {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Expected timeout error. No error returned.")
|
t.Fatal("Expected timeout error. No error returned.")
|
||||||
}
|
}
|
||||||
expectedErr := "timeout while waiting for state to become 'done' (last state: 'done')"
|
expectedErr := "timeout while waiting for state to become 'done' (last state: 'done', timeout: 90ms)"
|
||||||
if err.Error() != expectedErr {
|
if err.Error() != expectedErr {
|
||||||
t.Fatalf("Errors don't match.\nExpected: %q\nGiven: %q\n", expectedErr, err.Error())
|
t.Fatalf("Errors don't match.\nExpected: %q\nGiven: %q\n", expectedErr, err.Error())
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ func TestWaitForState_timeout(t *testing.T) {
|
||||||
t.Fatal("Expected timeout error. No error returned.")
|
t.Fatal("Expected timeout error. No error returned.")
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedErr := "timeout while waiting for state to become 'running'"
|
expectedErr := "timeout while waiting for state to become 'running' (timeout: 1ms)"
|
||||||
if err.Error() != expectedErr {
|
if err.Error() != expectedErr {
|
||||||
t.Fatalf("Errors don't match.\nExpected: %q\nGiven: %q\n", expectedErr, err.Error())
|
t.Fatalf("Errors don't match.\nExpected: %q\nGiven: %q\n", expectedErr, err.Error())
|
||||||
}
|
}
|
||||||
|
@ -189,7 +189,7 @@ func TestWaitForState_failureEmpty(t *testing.T) {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Expected timeout error. Got none.")
|
t.Fatal("Expected timeout error. Got none.")
|
||||||
}
|
}
|
||||||
expectedErr := "timeout while waiting for resource to be gone (last state: 'pending')"
|
expectedErr := "timeout while waiting for resource to be gone (last state: 'pending', timeout: 100ms)"
|
||||||
if err.Error() != expectedErr {
|
if err.Error() != expectedErr {
|
||||||
t.Fatalf("Errors don't match.\nExpected: %q\nGiven: %q\n", expectedErr, err.Error())
|
t.Fatalf("Errors don't match.\nExpected: %q\nGiven: %q\n", expectedErr, err.Error())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue