尝试提交

简单的 A+B Problem

登录完成之后,在首页的快速开始板块中输入题目编号10000, 点击【GO】按钮,跳转到A+B Problem解题页面。

题面已经提供了JAVAPYTHONC++C四种语言的标程,您可以复制代码到代码区中,然后点击提交即可。

模拟多个用户提交

我们使用Python 脚本来模拟多个用户提交。

QAQ~我不会 Python

如果你不会使用 Python,你可以不进行尝试,直接跳到本节末尾查看效果图。

clone 项目

git clone https://github.com/yuzhanglong/YuJudge-JudgeServer --depth=1

打开src/test/python/base目录,查看base.py

# File: base.py
# Description: 请求基本配置
# Created: 2020-9-8 15:20:09
# Author: yuzhanglong
# Email: yuzl1123@163.com
ADMIN_USER_NAME = "admin"
ADMIN_PASSWORD = "yzl"
BASE_URL = "http://47.106.202.255"

修改BASE_URL为你部署 OJ 服务器的地址。

以下内容按需修改,保持默认即可。

  • ADMIN_USER_NAME: 默认管理员用户名
  • ADMIN_PASSWORD: 默认管理员密码

打开src/test/python/base目录,查看contest.py

# File: contest.py
# Description: 模拟一次比赛
# Created: 2020-9-8 14:55:40
# Author: yuzhanglong
# Email: yuzl1123@163.com
# 省略其他代码
.......
# 省略其他代码
if __name__ == '__main__':
runContest(100, 200)

修改runContest的参数,第一个参数为题目集 id,默认为100(一般不需要修改),对应名称为测试题目集,第二个参数为测试提交的次数, 请根据自己的喜好进行修改。

测试内容

问题编号从1000010012的所有问题,如下表所示,绝大部分题目都具有7 -10 个测试点,.

题目 ID问题名称标签
10000A+B Problem入门测试
10001fork 炸弹测试
10002矩阵乘法数学
10003并查集并查集
10004质数判定质数
10005子串查找字符串
10006最长公共子串字符串
10007最小费用流模板
10008高精度除法高精度
10009快速幂快速幂
10010Best Cow FencesUSACO 2003
10011最大连续和DP
10012字符串匹配测试

这些题目的标程位于src/test/python/problems下。

执行脚本

执行前注意
  • 脚本会批量注册几十个用户,而注册功能是受验证码保护的,执行之前请进入后台管理面板的【设置】页面关闭全局验证码功能。
  • 系统默认提交的次数阈值为1000(即允许 1000 发提交“排队”),超过1000的提交会被驳回,并返回消息【服务器正忙】
  • 这个值建议保持默认,由于当前部署模式为单台判题机,测试用题、测试点也都比较多,修改的太大可能要等较长的时间

执行:

python contest.py

将很快获得输出(注意: 这些输出表示【提交已经被添加到判题队列】而不是【判题已完成】):

{'code': '00000', 'message': '提交已经开始处理', 'request': None, 'data': None}
{'code': '00000', 'message': '提交已经开始处理', 'request': None, 'data': None}
..... 省略了198条重复的内容。

你可以通过刷新计分板页面来查看提交情况。

关于判题速度
  • 在 centos7,单核服务器,单个判题节点,运行200 发提交的时间为2 分 50 秒(这个值可能由于脚本提交的随机性而略有不同)。

  • 你可以通过更换多个核心数的服务器或者增加多个判题节点来加快判题速度。

查看结果

进入计分板,可以看到本次提交测试的大体状况,我的测试结果如下图。