forked from grafana/k6
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtimeout_error.go
58 lines (49 loc) · 1.4 KB
/
timeout_error.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package js
import (
"fmt"
"time"
"go.k6.io/k6/errext"
"go.k6.io/k6/errext/exitcodes"
"go.k6.io/k6/lib/consts"
)
// timeoutError is used when some operation times out.
type timeoutError struct {
place string
d time.Duration
}
var (
_ errext.HasExitCode = timeoutError{}
_ errext.HasHint = timeoutError{}
)
// newTimeoutError returns a new timeout error, reporting that a timeout has
// happened at the given place and given duration.
func newTimeoutError(place string, d time.Duration) timeoutError {
return timeoutError{place: place, d: d}
}
// String returns the timeout error in human readable format.
func (t timeoutError) Error() string {
return fmt.Sprintf("%s() execution timed out after %.f seconds", t.place, t.d.Seconds())
}
// Hint potentially returns a hint message for fixing the error.
func (t timeoutError) Hint() string {
hint := ""
switch t.place {
case consts.SetupFn:
hint = "You can increase the time limit via the setupTimeout option"
case consts.TeardownFn:
hint = "You can increase the time limit via the teardownTimeout option"
}
return hint
}
// ExitCode returns the coresponding exit code value to the place.
func (t timeoutError) ExitCode() exitcodes.ExitCode {
// TODO: add handleSummary()
switch t.place {
case consts.SetupFn:
return exitcodes.SetupTimeout
case consts.TeardownFn:
return exitcodes.TeardownTimeout
default:
return exitcodes.GenericTimeout
}
}