#judge #protobuf #workspace #client #run

bin+lib ana

一个 Rust 编写的裁判系统

1 个不稳定版本

0.9.3 2019年7月24日

#8#judge

MIT 许可证

94KB
2.5K SLoC

Ana 项目

pipeline status

为 ACM 竞赛选手提供的 Rust 开源裁判系统。

要求

  • Rust 工具链(2018 版本或更高)
  • libseccomp

构建依赖

  • Protobuf (protobuf-compiler)
  • Clang
  • CMake

用法

运行

cargorun

在本地主机上以默认配置运行 Ana。

需要 root 权限。

运行 cargo run -- --help 获取更多信息。

测试

cargotest ----test-threads=1

测试 Ana 需要根权限来读写 cgroups 并实现一些其他功能。

如果你发现使用时间少于时间限制,但状态为 TLE,请尝试使用更少的 judge_threads 重新运行。

Docker

强烈建议在 Docker 容器中运行 Ana。以下命令可以在后台启动 Ana 服务器
docker run--privileged-p8800:8800 -d hr567/ana

更多信息及查看所有支持选项
docker run--privileged hr567/ana--help

客户端

Ana 使用 gRPC 框架与客户端通信。定义数据结构和服务的 protobuf 文件位于 src/rpc/rpc.proto

tests/common 中有一个简单的客户端实现。

工作空间

workspace
├── problem
│   ├── 0
│   │   ├── answer    // file contains answer
│   │   ├── input     // file contains input
│   │   └── output    // file contains input
│   ├── 1
│   │   └── ..        // same as 0
│   ├── 2
│   │   └── ..        // same as 0
│   ├── ..            // more test cases
│   └── spj
│       ├── spj       // spj executable file
│       └── source    // source code
├── runtime           // chroot directory (empty)
|   └── main          // executable file
└── source            // source code

待办事项

  • 从错误中恢复
  • 添加文档
  • 使用 Fuse 减少内存使用

许可证

Ana 采用 MIT 许可证发布,更多信息请参阅 "LICENSE"。

依赖项

~33–45MB
~800K SLoC