woj-server/resource/bench/bench.py
Paul Pan 593e8eb92e fix: final
Co-authored-by: cxy004 <cxy004@qq.com>
Co-authored-by: wzt <w.zhongtao@qq.com>
2022-11-14 17:18:34 +08:00

71 lines
2.1 KiB
Python

import random
import string
from locust import HttpUser, task
def randomstring(length):
return ''.join(random.choice(string.ascii_letters) for i in range(length))
class WOJUser(HttpUser):
def on_start(self):
self.username = randomstring(16)
self.nickname = randomstring(16)
self.password = randomstring(16)
with self.client.post("/api/v1/user/create", data={
"username": self.username,
"nickname": self.nickname,
"password": self.password
}) as resp:
j = resp.json()
if j["code"] != 0:
resp.failure("create user failed")
else:
self.token = j["body"]
@task
def view_problem(self):
pid = []
with self.client.post("/api/v1/problem/search") as resp:
j = resp.json()
if j["code"] != 0:
resp.failure("search problem failed")
else:
for p in j["body"]:
pid.append(p["meta"]["ID"])
for p in pid:
with self.client.post("/api/v1/problem/details", data={"pid": pid}) as resp:
if resp.json()["code"] != 0:
resp.failure("view problem failed")
@task
def submit_code(self):
code = """
#include<iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << a + b;
return 0;
}
"""
with self.client.post("/api/v1/submission/create",
headers={"Authorization": "Bearer " + self.token},
data={"pid": 5, "language": "cpp", "code": code}
) as resp:
if resp.json()["code"] != 0:
resp.failure("submit code failed")
@task
def view_submission(self):
with self.client.post("/api/v1/submission/query", data={"pid": 5, "limit": 100}) as resp:
if resp.json()["code"] != 0:
resp.failure("view submission failed")