1 个不稳定版本
0.9.3 | 2019年7月24日 |
---|
#8 在 #judge
94KB
2.5K SLoC
Ana 项目
为 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