创新实训(5)- 评测端架构

源码分析

代码分析

  • data 是存储测试数据和配置文件的目录,其中包含解压后的文件和压缩包(作为备份)
  • include 是测试相关的工具方法,
  • result 暂存评测结果
  • work 正在评测的题目包含的数据,每当有评测请求时,将所有测试数据拷贝到对应文件目录中

当有评测任务来到时,补全地址,使用系统调用将 data 拷到 work 目录:

也可以添加多台评测机,做到分布式评测。具体修改 config.json


评测使用了 testlib.h 支持

run 目录下的 formatter.cpp 用于将测试数据格式化,防止行末回车等问题产生的影响,run_program.cpp 则是一个简易的沙箱实现,具体内容我单开一节介绍

uoj_judger.h 是一个评测系统(judger)的部分实现

分为多个部分,execute 用于执行代码,

file 用于预览和隐藏文件

parameter 部分,用于修改参数:



配置部分:

执行部分:

该部分逻辑较为复杂,大致思路仍然是设置需要的参数和限制、约束条件,然后使用系统调用来执行用户提交的代码。
特别需要注意,交互题在这部分限制下会麻烦很多




posted @ 2024-05-31 11:15  wh_ZH  阅读(7)  评论(0编辑  收藏  举报