评测机
Go to file
2019-08-28 23:51:07 -07:00
client update documentation 2019-08-28 23:51:07 -07:00
data update documentation 2019-08-28 23:51:07 -07:00
file update documentation 2019-08-28 23:51:07 -07:00
judger update documentation 2019-08-28 23:51:07 -07:00
language update documentation 2019-08-28 23:51:07 -07:00
runner update documentation 2019-08-28 23:51:07 -07:00
taskqueue update documentation 2019-08-28 23:51:07 -07:00
types update documentation 2019-08-28 23:51:07 -07:00
.gitignore update documentation 2019-08-28 23:51:07 -07:00
go.mod update documentation 2019-08-28 23:51:07 -07:00
go.sum update documentation 2019-08-28 23:51:07 -07:00
LICENSE Initial commit 2019-08-24 15:32:38 -07:00
README.md update documentation 2019-08-28 23:51:07 -07:00

go-judge

Under designing.

The goal to to reimplement syzoj/judge-v3 in GO language using go-sandbox.

Planned Design

Brokers and interfaces:

  • client: receive pushed judge tasks from website (web-socket / socket.io / RabbitMQ)
  • data: interface to download, cache and access test files from website
  • taskqueue: send to and receive from a queue to run task (GO channel / RabbitMQ)
  • file: general file interface including upload / download executable files from compile task (local / Redis)
  • language: language configuration for runner

Workers:

  • judger: execute judge tasks and distribute as run task to queue
  • runner: receive run task and execute in sandbox

Models:

  • JudgeTask: judge task pushed from website (type, data)
  • JudgeSetting: problem setting (from yaml) and JudgeCase
  • RunTask: run task parameters send to run_queue
  • RunResult: run task result sent back from queue

Utilities:

  • Config: read client config from TOML file