From c2818bb348f7ecf9490bde12dd7e6d87ceddf393 Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Tue, 12 Nov 2024 21:24:43 -0500 Subject: [PATCH] feat(parser/diff): log parser summary --- internal/parser/diff/parser.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/internal/parser/diff/parser.go b/internal/parser/diff/parser.go index 14230c4..898cc38 100644 --- a/internal/parser/diff/parser.go +++ b/internal/parser/diff/parser.go @@ -7,6 +7,7 @@ import ( "strings" "unicode" + "github.com/criyle/go-judge/envexec" "github.com/joint-online-judge/JOJ3/internal/stage" ) @@ -35,6 +36,13 @@ type Conf struct { } } +type DiffParserSummary struct { + Status stage.Status + Time uint64 + Memory uint64 + RunTime uint64 +} + type Diff struct{} func (*Diff) Run(results []stage.ExecutorResult, confAny any) ( @@ -50,10 +58,19 @@ func (*Diff) Run(results []stage.ExecutorResult, confAny any) ( var res []stage.ParserResult forceQuit := false + var summary DiffParserSummary + summary.Status = stage.Status(envexec.StatusAccepted) for i, caseConf := range conf.Cases { result := results[i] score := 0 comment := "" + if result.Status != stage.Status(envexec.StatusAccepted) && + summary.Status == stage.Status(envexec.StatusAccepted) { + summary.Status = result.Status + } + summary.Time += result.Time + summary.Memory += result.Memory + summary.RunTime += result.RunTime for _, output := range caseConf.Outputs { answer, err := os.ReadFile(output.AnswerPath) if err != nil { @@ -104,6 +121,7 @@ func (*Diff) Run(results []stage.ExecutorResult, confAny any) ( Comment: comment, }) } + slog.Info("diff parser run done", "diffParserSummary", summary) return res, forceQuit, nil }