fix: final

Co-authored-by: cxy004 <cxy004@qq.com>
Co-authored-by: wzt <w.zhongtao@qq.com>
This commit is contained in:
Paul Pan 2022-11-14 17:18:34 +08:00
parent 3140a60e67
commit 593e8eb92e
7 changed files with 78 additions and 7 deletions

View File

@ -16,7 +16,7 @@ all: clean build
server: swagger dep
$(GOBUILD) -o server ./cmd/server
runner: dep
runner: swagger dep
$(GOBUILD) -o runner ./cmd/runner
build: runner server

View File

@ -39,6 +39,7 @@ func (h *handler) Details(c *gin.Context) {
pv, status := h.problemService.QueryLatestVersion(req.Pid)
if status != e.Success {
e.Pong(c, status, nil)
return
}
e.Pong(c, e.Success, gin.H{
"problem": p,

View File

@ -19,7 +19,7 @@ type queryByVersionRequest struct {
// @Accept application/x-www-form-urlencoded
// @Produce json
// @Param pvid formData uint true "problem version id"
// @Param offset formData int true "start position"
// @Param offset formData int false "start position"
// @Param limit formData int true "limit number of records"
// @Response 200 {object} e.Response "[]*model.status"
// @Router /v1/status/query/problem_version [post]

View File

@ -23,13 +23,12 @@ type queryResponse struct {
// @Description Query submissions
// @Accept application/x-www-form-urlencoded
// @Produce json
// @Param pid formData uint true "problem id"
// @Param uid formData uint true "user id"
// @Param offset formData int true "start position"
// @Param pid formData uint false "problem id"
// @Param uid formData uint false "user id"
// @Param offset formData int false "start position"
// @Param limit formData int true "limit number of records"
// @Response 200 {object} e.Response "queryResponse"
// @Router /v1/submission/query [post]
func (h *handler) Query(c *gin.Context) {
req := new(queryRequest)

70
resource/bench/bench.py Normal file
View File

@ -0,0 +1,70 @@
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")

0
resource/frontend/.gitignore vendored Normal file
View File

View File

@ -5,7 +5,7 @@
function docker_run() {
local timeout=${TIMEOUT:-10}
local log_file=${LOG_FILE:-"/dev/stderr"}
local log_limit=${LOG_LIMIT:-1K}
local log_limit=${LOG_LIMIT:-4K}
log_info "$DOCKER run with timeout $timeout"
CONTAINER_NAME=$(uuidgen)
(
@ -15,4 +15,5 @@ function docker_run() {
$DOCKER run --rm --name "$CONTAINER_NAME" "$@" 2>&1 | head -c "$log_limit" >"$log_file"
pkill -P $$
$DOCKER kill "$CONTAINER_NAME" >/dev/null 2>&1
return 0
}