尝试提交
简单的 A+B Problem
登录完成之后,在首页的快速开始板块中输入题目编号10000, 点击【GO】按钮,跳转到A+B Problem解题页面。
题面已经提供了JAVA
、PYTHON
、C++
、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(一般不需要修改),对应名称为测试题目集,第二个参数为测试提交的次数, 请根据自己的喜好进行修改。
测试内容
问题编号从10000
到10012
的所有问题,如下表所示,绝大部分题目都具有7 -10 个测试点,.
题目 ID | 问题名称 | 标签 |
---|---|---|
10000 | A+B Problem | 入门测试 |
10001 | fork 炸弹 | 测试 |
10002 | 矩阵乘法 | 数学 |
10003 | 并查集 | 并查集 |
10004 | 质数判定 | 质数 |
10005 | 子串查找 | 字符串 |
10006 | 最长公共子串 | 字符串 |
10007 | 最小费用流 | 模板 |
10008 | 高精度除法 | 高精度 |
10009 | 快速幂 | 快速幂 |
10010 | Best Cow Fences | USACO 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 秒(这个值可能由于脚本提交的随机性而略有不同)。
你可以通过更换多个核心数的服务器或者增加多个判题节点来加快判题速度。
查看结果
进入计分板,可以看到本次提交测试的大体状况,我的测试结果如下图。