mirror of
https://github.com/criyle/go-sandbox.git
synced 2025-09-26 23:19:11 +08:00
38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
package runner
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// Result is the program runner result
|
|
type Result struct {
|
|
Status // result status
|
|
ExitStatus int // exit status (signal number if signalled)
|
|
Error string // potential detailed error message (for program runner error)
|
|
|
|
Time time.Duration // used user CPU time (underlying type int64 in ns)
|
|
Memory Size // used user memory (underlying type uint64 in bytes)
|
|
ProcPeak uint64 // maximum processes
|
|
|
|
// metrics for the program runner
|
|
SetUpTime time.Duration
|
|
RunningTime time.Duration
|
|
}
|
|
|
|
func (r Result) String() string {
|
|
switch r.Status {
|
|
case StatusNormal:
|
|
return fmt.Sprintf("Result[%v %v][%v %v]", r.Time, r.Memory, r.SetUpTime, r.RunningTime)
|
|
|
|
case StatusSignalled:
|
|
return fmt.Sprintf("Result[Signalled(%d)][%v %v][%v %v]", r.ExitStatus, r.Time, r.Memory, r.SetUpTime, r.RunningTime)
|
|
|
|
case StatusRunnerError:
|
|
return fmt.Sprintf("Result[RunnerFailed(%s)][%v %v][%v %v]", r.Error, r.Time, r.Memory, r.SetUpTime, r.RunningTime)
|
|
|
|
default:
|
|
return fmt.Sprintf("Result[%v(%s %d)][%v %v][%v %v]", r.Status, r.Error, r.ExitStatus, r.Time, r.Memory, r.SetUpTime, r.RunningTime)
|
|
}
|
|
}
|