Add ExitStatus

This commit is contained in:
criyle 2020-03-08 01:49:11 -05:00
parent bb9c448601
commit a36ff086b2
7 changed files with 33 additions and 15 deletions

View File

@ -162,6 +162,7 @@ Single (Require `apt install g++` inside the container):
[
{
"status": "Accepted",
"exitStatus": 0,
"time": 303225231,
"memory": 32243712,
"files": {
@ -223,6 +224,7 @@ Multiple:
[
{
"status": "Accepted",
"exitStatus": 0,
"time": 1545123,
"memory": 253952,
"files": {
@ -232,6 +234,7 @@ Multiple:
},
{
"status": "Accepted",
"exitStatus": 0,
"time": 1501463,
"memory": 253952,
"files": {

View File

@ -50,6 +50,7 @@ func (s status) MarshalJSON() ([]byte, error) {
type response struct {
Status status `json:"status"`
ExitStatus int `json:"exitStatus"`
Error string `json:"error,omitempty"`
Time uint64 `json:"time"`
Memory uint64 `json:"memory"`

View File

@ -81,6 +81,7 @@ func workDoSingle(rc cmd) (res response) {
return
}
res.Status = status(result.Status)
res.ExitStatus = result.ExitStatus
res.Error = result.Error
res.Time = uint64(result.Time)
res.Memory = uint64(result.Memory)
@ -138,6 +139,7 @@ func workDoGroup(rc []cmd, pm []pipeMap) (rts []response) {
for i, result := range results {
var res response
res.Status = status(result.Status)
res.ExitStatus = result.ExitStatus
res.Error = result.Error
res.Time = uint64(result.Time)
res.Memory = uint64(result.Memory)

View File

@ -50,6 +50,8 @@ type PipeCollector struct {
type Result struct {
Status Status
ExitStatus int
Error string // error
Time time.Duration

View File

@ -59,6 +59,7 @@ func runSingle(m container.Environment, cg Cgroup, c *Cmd, fds []*os.File, ptc [
files, err := copyOutAndCollect(m, c, ptc)
result = Result{
Status: convertStatus(rt.Status),
ExitStatus: rt.ExitStatus,
Error: rt.Error,
Time: rt.Time,
Memory: rt.Memory,

View File

@ -18,9 +18,12 @@ const (
StatusTimeLimitExceeded // TLE
StatusOutputLimitExceeded // OLE
StatusFileError // FE
StatusRuntimeError // RE
StatusNonzeroExitStatus // NZS
StatusSignalled // SIG
StatusDangerousSyscall // DJS
//StatusRuntimeError // RE
// SPJ / interactor error
StatusJudgementFailed
StatusInvalidInteraction // interactor signals error
@ -38,7 +41,9 @@ var statusToString = []string{
"Time Limit Exceeded",
"Output Limit Exceeded",
"File Error",
"Runtime Error",
//"Runtime Error",
"Nonzero Exit Status",
"Signalled",
"Dangerous Syscall",
"Judgement Failed",
"Invalid Interaction",

View File

@ -10,8 +10,12 @@ func convertStatus(s runner.Status) Status {
switch s {
case runner.StatusNormal:
return StatusAccepted
case runner.StatusSignalled, runner.StatusNonzeroExitStatus:
return StatusRuntimeError
// case runner.StatusSignalled, runner.StatusNonzeroExitStatus:
// return StatusRuntimeError
case runner.StatusSignalled:
return StatusSignalled
case runner.StatusNonzeroExitStatus:
return StatusNonzeroExitStatus
case runner.StatusMemoryLimitExceeded:
return StatusMemoryLimitExceeded
case runner.StatusTimeLimitExceeded: