评测机
Go to file
2019-09-15 15:15:47 -07:00
client fixed typo 2019-09-07 18:03:19 -07:00
data update documentation 2019-08-28 23:51:07 -07:00
file add local / memory file 2019-09-01 20:40:34 -07:00
judger fixed typo 2019-09-07 18:03:19 -07:00
language fixed typo 2019-09-07 18:03:19 -07:00
pkg/diff fixed typo 2019-09-07 18:03:19 -07:00
problem fixed typo 2019-09-07 18:03:19 -07:00
runner fix potential race condition 2019-09-15 15:15:47 -07:00
taskqueue fixed typo 2019-09-07 18:03:19 -07:00
types fixed typo 2019-09-07 18:03:19 -07:00
.gitignore update documentation 2019-08-28 23:51:07 -07:00
go.mod fix potential race condition 2019-09-15 15:15:47 -07:00
go.sum fix potential race condition 2019-09-15 15:15:47 -07:00
LICENSE Initial commit 2019-08-24 15:32:38 -07:00
README.md add local / memory file 2019-09-01 20:40:34 -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 by id
  • taskqueue: send to and receive from a queue to run task (GO channel / (RabbitMQ, Redis)) and also including upload / download executable files from compile task
  • file: general file interface (local / memory)
  • 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 (compile / standard / interactive / answer submit)

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