Compare commits

..

2 Commits

Author SHA1 Message Date
b587d2c63a fix: merge master
Some checks failed
build / build (push) Has been cancelled
build / build (pull_request) Failing after 2m22s
2025-03-01 20:46:24 +08:00
f5b7563869
feat: union type cmd files
All checks were successful
build / build (push) Successful in 2m32s
2025-02-28 08:13:08 -05:00
8 changed files with 565 additions and 239 deletions

View File

@ -1,33 +1,50 @@
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional, Union
import humanfriendly import humanfriendly
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from pytimeparse.timeparse import timeparse from pytimeparse.timeparse import timeparse
class CmdFile(BaseModel): class LocalFile(BaseModel):
src: Optional[str] = None src: str
content: Optional[str] = None
file_id: Optional[str] = Field(None, serialization_alias="fileId")
name: Optional[str] = None class MemoryFile(BaseModel):
max: Optional[int] = humanfriendly.parse_size("128m") content: str
symlink: Optional[str] = None
stream_in: Optional[bool] = Field(None, serialization_alias="streamIn")
stream_out: Optional[bool] = Field(None, serialization_alias="streamOut") class PreparedFile(BaseModel):
pipe: Optional[bool] = None file_id: str = Field(..., alias="fileId")
class Collector(BaseModel):
name: str
max: int
pipe: bool = True
class Symlink(BaseModel):
symlink: str
class StreamIn(BaseModel):
stream_in: bool = Field(..., alias="streamIn")
class StreamOut(BaseModel):
stream_out: bool = Field(..., alias="streamOut")
InputFile = Union[LocalFile | MemoryFile | PreparedFile | Symlink]
class Cmd(BaseModel): class Cmd(BaseModel):
args: Optional[List[str]] = None args: Optional[List[str]] = None
env: Optional[List[str]] = ["PATH=/usr/bin:/bin:/usr/local/bin"] env: List[str] = []
stdin: Optional[CmdFile] = CmdFile(content="") stdin: Optional[Union[InputFile | StreamIn]] = None
stdout: Optional[CmdFile] = CmdFile( stdout: Optional[Union[Collector | StreamOut]] = None
name="stdout", max=humanfriendly.parse_size("128m") stderr: Optional[Union[Collector | StreamOut]] = None
) cpu_limit: int = Field(0, serialization_alias="cpuLimit")
stderr: Optional[CmdFile] = CmdFile(
name="stderr", max=humanfriendly.parse_size("128m")
)
cpu_limit: int = Field(timeparse("1s"), serialization_alias="cpuLimit")
real_cpu_limit: int = Field(0, serialization_alias="realCpuLimit") real_cpu_limit: int = Field(0, serialization_alias="realCpuLimit")
clock_limit: int = Field(2 * timeparse("1s"), serialization_alias="clockLimit") clock_limit: int = Field(2 * timeparse("1s"), serialization_alias="clockLimit")
memory_limit: int = Field( memory_limit: int = Field(
@ -37,7 +54,7 @@ class Cmd(BaseModel):
proc_limit: int = Field(50, serialization_alias="procLimit") proc_limit: int = Field(50, serialization_alias="procLimit")
cpu_rate_limit: int = Field(0, serialization_alias="cpuRateLimit") cpu_rate_limit: int = Field(0, serialization_alias="cpuRateLimit")
cpu_set_limit: str = Field("", serialization_alias="cpuSetLimit") cpu_set_limit: str = Field("", serialization_alias="cpuSetLimit")
copy_in: Dict[str, CmdFile] = Field({}, serialization_alias="copyIn") copy_in: Dict[str, InputFile] = Field({}, serialization_alias="copyIn")
copy_in_cached: Dict[str, str] = Field({}, serialization_alias="copyInCached") copy_in_cached: Dict[str, str] = Field({}, serialization_alias="copyInCached")
copy_in_dir: str = Field(".", serialization_alias="copyInDir") copy_in_dir: str = Field(".", serialization_alias="copyInDir")
# reconsider this default situation # reconsider this default situation
@ -52,12 +69,12 @@ class Cmd(BaseModel):
class OptionalCmd(BaseModel): class OptionalCmd(BaseModel):
args: Optional[list[str]] = None args: Optional[List[str]] = None
env: Optional[list[str]] = ["PATH=/usr/bin:/bin:/usr/local/bin"] env: Optional[List[str]] = None
stdin: Optional[CmdFile] = None stdin: Optional[Union[InputFile | StreamIn]] = None
stdout: Optional[CmdFile] = None stdout: Optional[Union[Collector | StreamOut]] = None
stderr: Optional[CmdFile] = None stderr: Optional[Union[Collector | StreamOut]] = None
cpu_limit: Optional[int] = Field(timeparse("1s"), serialization_alias="cpuLimit") cpu_limit: Optional[int] = Field(None, serialization_alias="cpuLimit")
real_cpu_limit: Optional[int] = Field(None, serialization_alias="realCpuLimit") real_cpu_limit: Optional[int] = Field(None, serialization_alias="realCpuLimit")
clock_limit: Optional[int] = Field( clock_limit: Optional[int] = Field(
2 * timeparse("1s"), serialization_alias="clockLimit" 2 * timeparse("1s"), serialization_alias="clockLimit"
@ -69,7 +86,7 @@ class OptionalCmd(BaseModel):
proc_limit: Optional[int] = Field(50, serialization_alias="procLimit") proc_limit: Optional[int] = Field(50, serialization_alias="procLimit")
cpu_rate_limit: Optional[int] = Field(None, serialization_alias="cpuRateLimit") cpu_rate_limit: Optional[int] = Field(None, serialization_alias="cpuRateLimit")
cpu_set_limit: Optional[str] = Field(None, serialization_alias="cpuSetLimit") cpu_set_limit: Optional[str] = Field(None, serialization_alias="cpuSetLimit")
copy_in: Optional[Dict[str, CmdFile]] = Field(None, serialization_alias="copyIn") copy_in: Optional[Dict[str, InputFile]] = Field(None, serialization_alias="copyIn")
copy_in_cached: Optional[Dict[str, str]] = Field( copy_in_cached: Optional[Dict[str, str]] = Field(
None, serialization_alias="copyInCached" None, serialization_alias="copyInCached"
) )

View File

@ -61,13 +61,13 @@ def get_executor_with_config(
else [] else []
), ),
copy_in={ copy_in={
file: result.CmdFile(src=f"/home/tt/.config/joj/{file}") file: result.LocalFile(src=f"/home/tt/.config/joj/{file}")
# all copyin files store in this tools folder # all copyin files store in this tools folder
# are there any corner cases # are there any corner cases
for file in copy_in_files for file in copy_in_files
}, },
stdin=( stdin=(
result.CmdFile(content="") result.MemoryFile(content="")
if ( if (
(task_stage.parsers is not None) (task_stage.parsers is not None)
and ("diff" not in task_stage.parsers) and ("diff" not in task_stage.parsers)
@ -92,7 +92,7 @@ def get_executor_with_config(
if task_stage.limit is not None and task_stage.limit.mem is not None if task_stage.limit is not None and task_stage.limit.mem is not None
else 800 * 1_024 * 1_024 else 800 * 1_024 * 1_024
), ),
stderr=result.CmdFile( stderr=result.Collector(
name="stderr", name="stderr",
max=( max=(
task_stage.limit.stderr * 1_000_000_000_000 task_stage.limit.stderr * 1_000_000_000_000
@ -100,8 +100,9 @@ def get_executor_with_config(
and task_stage.limit.stderr is not None and task_stage.limit.stderr is not None
else 800 * 1_024 * 1_024 else 800 * 1_024 * 1_024
), ),
pipe=True,
), ),
stdout=result.CmdFile( stdout=result.Collector(
name="stdout", name="stdout",
max=( max=(
task_stage.limit.stdout * 1_000_000_000_000 task_stage.limit.stdout * 1_000_000_000_000
@ -109,6 +110,7 @@ def get_executor_with_config(
and task_stage.limit.stdout is not None and task_stage.limit.stdout is not None
else 800 * 1_024 * 1_024 else 800 * 1_024 * 1_024
), ),
pipe=True,
), ),
), ),
cases=[], cases=[],
@ -275,7 +277,7 @@ def fix_diff(
stage_cases.append( stage_cases.append(
result.OptionalCmd( result.OptionalCmd(
stdin=result.CmdFile( stdin=result.LocalFile(
src=f"/home/tt/.config/joj/{task_conf.task.type_}/{stdin}", src=f"/home/tt/.config/joj/{task_conf.task.type_}/{stdin}",
), ),
args=(shlex.split(command) if command is not None else None), args=(shlex.split(command) if command is not None else None),

View File

@ -17,22 +17,8 @@
"name": "local", "name": "local",
"with": { "with": {
"default": { "default": {
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin" "cpuLimit": 0,
],
"stdin": {
"content": "",
"max": 128000000
},
"stdout": {
"name": "stdout",
"max": 128000000
},
"stderr": {
"name": "stderr",
"max": 128000000
},
"cpuLimit": 1,
"realCpuLimit": 0, "realCpuLimit": 0,
"clockLimit": 2, "clockLimit": 2,
"memoryLimit": 128000000, "memoryLimit": 128000000,
@ -66,10 +52,6 @@
"-checkFileSumList=a5b63323a692d3d8b952442969649b4f823d58dae26429494f613df160710dfc,b1bbad25b830db0a77b15a033f9ca1b7ab44c1d2d05056412bd3e4421645f0bf,f6740081487ca34963a005209e2e9adfdf6f3561719af082d40fe80145e0cceb,bbeca1491c2f8364821a328a6677c0c5d59ccd60250abac3cec0887eeb9bde3e", "-checkFileSumList=a5b63323a692d3d8b952442969649b4f823d58dae26429494f613df160710dfc,b1bbad25b830db0a77b15a033f9ca1b7ab44c1d2d05056412bd3e4421645f0bf,f6740081487ca34963a005209e2e9adfdf6f3561719af082d40fe80145e0cceb,bbeca1491c2f8364821a328a6677c0c5d59ccd60250abac3cec0887eeb9bde3e",
"-checkFileNameList=.gitignore,.gitattributes,.gitea/workflows/push.yaml,.gitea/workflows/release.yaml" "-checkFileNameList=.gitignore,.gitattributes,.gitea/workflows/push.yaml,.gitea/workflows/release.yaml"
], ],
"env": [
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"cpuLimit": 1,
"clockLimit": 2, "clockLimit": 2,
"memoryLimit": 128000000, "memoryLimit": 128000000,
"procLimit": 50, "procLimit": 50,
@ -91,7 +73,6 @@
"env": [ "env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log" "LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
], ],
"cpuLimit": 1,
"clockLimit": 2, "clockLimit": 2,
"memoryLimit": 128000000, "memoryLimit": 128000000,
"procLimit": 50, "procLimit": 50,
@ -128,20 +109,19 @@
"args": [ "args": [
"./tools/compile" "./tools/compile"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"content": "", "content": ""
"max": 128000000
}, },
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -153,8 +133,7 @@
"cpuSetLimit": "", "cpuSetLimit": "",
"copyIn": { "copyIn": {
"tools/compile": { "tools/compile": {
"src": "/home/tt/.config/joj/tools/compile", "src": "/home/tt/.config/joj/tools/compile"
"max": 128000000
} }
}, },
"copyInCached": {}, "copyInCached": {},
@ -218,20 +197,19 @@
"*.cpp", "*.cpp",
"*.h" "*.h"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"content": "", "content": ""
"max": 128000000
}, },
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -243,8 +221,7 @@
"cpuSetLimit": "", "cpuSetLimit": "",
"copyIn": { "copyIn": {
"tools/filelength": { "tools/filelength": {
"src": "/home/tt/.config/joj/tools/filelength", "src": "/home/tt/.config/joj/tools/filelength"
"max": 128000000
} }
}, },
"copyInCached": { "copyInCached": {
@ -327,20 +304,19 @@
"h7/build", "h7/build",
"h7/ex2.cpp" "h7/ex2.cpp"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"content": "", "content": ""
"max": 128000000
}, },
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 65000000000000 "max": 65000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -352,8 +328,7 @@
"cpuSetLimit": "", "cpuSetLimit": "",
"copyIn": { "copyIn": {
"tests/homework/h7/.clang-tidy": { "tests/homework/h7/.clang-tidy": {
"src": "/home/tt/.config/joj/tests/homework/h7/.clang-tidy", "src": "/home/tt/.config/joj/tests/homework/h7/.clang-tidy"
"max": 128000000
} }
}, },
"copyInCached": { "copyInCached": {
@ -462,20 +437,19 @@
"--quiet", "--quiet",
"h7/ex2.cpp" "h7/ex2.cpp"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"content": "", "content": ""
"max": 128000000
}, },
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 65000000000000 "max": 65000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -568,20 +542,19 @@
"--exclude=build", "--exclude=build",
"h7/ex2.cpp" "h7/ex2.cpp"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"content": "", "content": ""
"max": 128000000
}, },
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 65000000000000 "max": 65000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -673,16 +646,16 @@
"./h7/build/ex2-asan", "./h7/build/ex2-asan",
"-a" "-a"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -715,12 +688,8 @@
}, },
"cases": [ "cases": [
{ {
"env": [
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"src": "/home/tt/.config/joj/homework/h7/e2/case0.in", "src": "/home/tt/.config/joj/homework/h7/e2/case0.in"
"max": 128000000
}, },
"cpuLimit": 1000000000, "cpuLimit": 1000000000,
"clockLimit": 2000000000, "clockLimit": 2000000000,
@ -732,12 +701,8 @@
] ]
}, },
{ {
"env": [
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"src": "/home/tt/.config/joj/homework/h7/e2/case1.in", "src": "/home/tt/.config/joj/homework/h7/e2/case1.in"
"max": 128000000
}, },
"cpuLimit": 1000000000, "cpuLimit": 1000000000,
"clockLimit": 2000000000, "clockLimit": 2000000000,
@ -820,19 +785,7 @@
"env": [ "env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log" "LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
], ],
"stdin": { "cpuLimit": 0,
"content": "",
"max": 128000000
},
"stdout": {
"name": "stdout",
"max": 128000000
},
"stderr": {
"name": "stderr",
"max": 128000000
},
"cpuLimit": 1,
"realCpuLimit": 0, "realCpuLimit": 0,
"clockLimit": 2, "clockLimit": 2,
"memoryLimit": 128000000, "memoryLimit": 128000000,

View File

@ -10,6 +10,92 @@
"sandboxToken": "", "sandboxToken": "",
"outputPath": "/tmp/joj3_result.json", "outputPath": "/tmp/joj3_result.json",
"stages": [ "stages": [
{
"name": "healthcheck",
"group": "",
"executor": {
"name": "local",
"with": {
"default": {
"env": [],
"cpuLimit": 0,
"realCpuLimit": 0,
"clockLimit": 2,
"memoryLimit": 128000000,
"stackLimit": 0,
"procLimit": 50,
"cpuRateLimit": 0,
"cpuSetLimit": "",
"copyIn": {},
"copyInCached": {},
"copyInDir": ".",
"copyOut": [
"stdout",
"stderr"
],
"copyOutCached": [],
"copyOutMax": 0,
"copyOutDir": "",
"tty": false,
"strictMemoryLimit": false,
"dataSegmentLimit": false,
"addressSpaceLimit": false
},
"cases": [
{
"args": [
"/usr/local/bin/repo-health-checker",
"-root=.",
"-repoSize=10",
"-checkFileSumList=-checkFileNameList="
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
},
{
"args": [
"/usr/local/bin/joint-teapot",
"joj3-check-env",
"/home/tt/.config/teapot/teapot.env",
"--grading-repo-name",
"ece280-joj",
"--group-config",
"=100:24"
],
"env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
}
]
}
},
"parsers": [
{
"name": "healthcheck",
"with": {
"score": 1
}
},
{
"name": "debug",
"with": {
"score": 0
}
}
]
},
{ {
"name": "[cq] Clang-tidy", "name": "[cq] Clang-tidy",
"group": "cq", "group": "cq",
@ -26,20 +112,19 @@
"h7/build", "h7/build",
"h7/ex2.cpp" "h7/ex2.cpp"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"content": "", "content": ""
"max": 128000000
}, },
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 65000000000000 "max": 65000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -51,12 +136,10 @@
"cpuSetLimit": "", "cpuSetLimit": "",
"copyIn": { "copyIn": {
"tests/homework/h7/.clang-tidy": { "tests/homework/h7/.clang-tidy": {
"src": "/home/tt/.config/joj/tests/homework/h7/.clang-tidy", "src": "/home/tt/.config/joj/tests/homework/h7/.clang-tidy"
"max": 128000000
}, },
"h7/build/compile_commands.json": { "h7/build/compile_commands.json": {
"src": "/home/tt/.config/joj/h7/build/compile_commands.json", "src": "/home/tt/.config/joj/h7/build/compile_commands.json"
"max": 128000000
} }
}, },
"copyInCached": {}, "copyInCached": {},
@ -164,19 +247,7 @@
"env": [ "env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log" "LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
], ],
"stdin": { "cpuLimit": 0,
"content": "",
"max": 128000000
},
"stdout": {
"name": "stdout",
"max": 128000000
},
"stderr": {
"name": "stderr",
"max": 128000000
},
"cpuLimit": 1,
"realCpuLimit": 0, "realCpuLimit": 0,
"clockLimit": 2, "clockLimit": 2,
"memoryLimit": 128000000, "memoryLimit": 128000000,

View File

@ -10,6 +10,92 @@
"sandboxToken": "", "sandboxToken": "",
"outputPath": "/tmp/joj3_result.json", "outputPath": "/tmp/joj3_result.json",
"stages": [ "stages": [
{
"name": "healthcheck",
"group": "",
"executor": {
"name": "local",
"with": {
"default": {
"env": [],
"cpuLimit": 0,
"realCpuLimit": 0,
"clockLimit": 2,
"memoryLimit": 128000000,
"stackLimit": 0,
"procLimit": 50,
"cpuRateLimit": 0,
"cpuSetLimit": "",
"copyIn": {},
"copyInCached": {},
"copyInDir": ".",
"copyOut": [
"stdout",
"stderr"
],
"copyOutCached": [],
"copyOutMax": 0,
"copyOutDir": "",
"tty": false,
"strictMemoryLimit": false,
"dataSegmentLimit": false,
"addressSpaceLimit": false
},
"cases": [
{
"args": [
"/usr/local/bin/repo-health-checker",
"-root=.",
"-repoSize=10",
"-checkFileSumList=-checkFileNameList="
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
},
{
"args": [
"/usr/local/bin/joint-teapot",
"joj3-check-env",
"/home/tt/.config/teapot/teapot.env",
"--grading-repo-name",
"ece280-joj",
"--group-config",
"=100:24"
],
"env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
}
]
}
},
"parsers": [
{
"name": "healthcheck",
"with": {
"score": 1
}
},
{
"name": "debug",
"with": {
"score": 0
}
}
]
},
{ {
"name": "[cq] Cppcheck", "name": "[cq] Cppcheck",
"group": "cq", "group": "cq",
@ -26,20 +112,19 @@
"--quiet", "--quiet",
"h7/ex2.cpp" "h7/ex2.cpp"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"content": "", "content": ""
"max": 128000000
}, },
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 65000000000000 "max": 65000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -132,19 +217,7 @@
"env": [ "env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log" "LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
], ],
"stdin": { "cpuLimit": 0,
"content": "",
"max": 128000000
},
"stdout": {
"name": "stdout",
"max": 128000000
},
"stderr": {
"name": "stderr",
"max": 128000000
},
"cpuLimit": 1,
"realCpuLimit": 0, "realCpuLimit": 0,
"clockLimit": 2, "clockLimit": 2,
"memoryLimit": 128000000, "memoryLimit": 128000000,

View File

@ -10,6 +10,92 @@
"sandboxToken": "", "sandboxToken": "",
"outputPath": "/tmp/joj3_result.json", "outputPath": "/tmp/joj3_result.json",
"stages": [ "stages": [
{
"name": "healthcheck",
"group": "",
"executor": {
"name": "local",
"with": {
"default": {
"env": [],
"cpuLimit": 0,
"realCpuLimit": 0,
"clockLimit": 2,
"memoryLimit": 128000000,
"stackLimit": 0,
"procLimit": 50,
"cpuRateLimit": 0,
"cpuSetLimit": "",
"copyIn": {},
"copyInCached": {},
"copyInDir": ".",
"copyOut": [
"stdout",
"stderr"
],
"copyOutCached": [],
"copyOutMax": 0,
"copyOutDir": "",
"tty": false,
"strictMemoryLimit": false,
"dataSegmentLimit": false,
"addressSpaceLimit": false
},
"cases": [
{
"args": [
"/usr/local/bin/repo-health-checker",
"-root=.",
"-repoSize=10",
"-checkFileSumList=-checkFileNameList="
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
},
{
"args": [
"/usr/local/bin/joint-teapot",
"joj3-check-env",
"/home/tt/.config/teapot/teapot.env",
"--grading-repo-name",
"ece280-joj",
"--group-config",
"=100:24"
],
"env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
}
]
}
},
"parsers": [
{
"name": "healthcheck",
"with": {
"score": 1
}
},
{
"name": "debug",
"with": {
"score": 0
}
}
]
},
{ {
"name": "[cq] Cpplint", "name": "[cq] Cpplint",
"group": "cq", "group": "cq",
@ -25,20 +111,19 @@
"--exclude=build", "--exclude=build",
"h7/ex2.cpp" "h7/ex2.cpp"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"content": "", "content": ""
"max": 128000000
}, },
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 65000000000000 "max": 65000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -134,19 +219,7 @@
"env": [ "env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log" "LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
], ],
"stdin": { "cpuLimit": 0,
"content": "",
"max": 128000000
},
"stdout": {
"name": "stdout",
"max": 128000000
},
"stderr": {
"name": "stderr",
"max": 128000000
},
"cpuLimit": 1,
"realCpuLimit": 0, "realCpuLimit": 0,
"clockLimit": 2, "clockLimit": 2,
"memoryLimit": 128000000, "memoryLimit": 128000000,

View File

@ -10,6 +10,92 @@
"sandboxToken": "", "sandboxToken": "",
"outputPath": "/tmp/joj3_result.json", "outputPath": "/tmp/joj3_result.json",
"stages": [ "stages": [
{
"name": "healthcheck",
"group": "",
"executor": {
"name": "local",
"with": {
"default": {
"env": [],
"cpuLimit": 0,
"realCpuLimit": 0,
"clockLimit": 2,
"memoryLimit": 128000000,
"stackLimit": 0,
"procLimit": 50,
"cpuRateLimit": 0,
"cpuSetLimit": "",
"copyIn": {},
"copyInCached": {},
"copyInDir": ".",
"copyOut": [
"stdout",
"stderr"
],
"copyOutCached": [],
"copyOutMax": 0,
"copyOutDir": "",
"tty": false,
"strictMemoryLimit": false,
"dataSegmentLimit": false,
"addressSpaceLimit": false
},
"cases": [
{
"args": [
"/usr/local/bin/repo-health-checker",
"-root=.",
"-repoSize=10",
"-checkFileSumList=-checkFileNameList="
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
},
{
"args": [
"/usr/local/bin/joint-teapot",
"joj3-check-env",
"/home/tt/.config/teapot/teapot.env",
"--grading-repo-name",
"ece280-joj",
"--group-config",
"=100:24"
],
"env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
}
]
}
},
"parsers": [
{
"name": "healthcheck",
"with": {
"score": 1
}
},
{
"name": "debug",
"with": {
"score": 0
}
}
]
},
{ {
"name": "[joj] ex2-asan", "name": "[joj] ex2-asan",
"group": "joj", "group": "joj",
@ -21,16 +107,16 @@
"./h7/build/ex2-asan", "./h7/build/ex2-asan",
"-a" "-a"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -42,8 +128,7 @@
"cpuSetLimit": "", "cpuSetLimit": "",
"copyIn": { "copyIn": {
"h7/build/ex2-asan": { "h7/build/ex2-asan": {
"src": "/home/tt/.config/joj/h7/build/ex2-asan", "src": "/home/tt/.config/joj/h7/build/ex2-asan"
"max": 128000000
} }
}, },
"copyInCached": {}, "copyInCached": {},
@ -62,12 +147,8 @@
}, },
"cases": [ "cases": [
{ {
"env": [
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"src": "/home/tt/.config/joj/homework/h7/e2/case0.in", "src": "/home/tt/.config/joj/homework/h7/e2/case0.in"
"max": 128000000
}, },
"cpuLimit": 1000000000, "cpuLimit": 1000000000,
"clockLimit": 2000000000, "clockLimit": 2000000000,
@ -79,12 +160,8 @@
] ]
}, },
{ {
"env": [
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"src": "/home/tt/.config/joj/homework/h7/e2/case1.in", "src": "/home/tt/.config/joj/homework/h7/e2/case1.in"
"max": 128000000
}, },
"cpuLimit": 1000000000, "cpuLimit": 1000000000,
"clockLimit": 2000000000, "clockLimit": 2000000000,
@ -167,19 +244,7 @@
"env": [ "env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log" "LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
], ],
"stdin": { "cpuLimit": 0,
"content": "",
"max": 128000000
},
"stdout": {
"name": "stdout",
"max": 128000000
},
"stderr": {
"name": "stderr",
"max": 128000000
},
"cpuLimit": 1,
"realCpuLimit": 0, "realCpuLimit": 0,
"clockLimit": 2, "clockLimit": 2,
"memoryLimit": 128000000, "memoryLimit": 128000000,

View File

@ -10,6 +10,92 @@
"sandboxToken": "", "sandboxToken": "",
"outputPath": "/tmp/joj3_result.json", "outputPath": "/tmp/joj3_result.json",
"stages": [ "stages": [
{
"name": "healthcheck",
"group": "",
"executor": {
"name": "local",
"with": {
"default": {
"env": [],
"cpuLimit": 0,
"realCpuLimit": 0,
"clockLimit": 2,
"memoryLimit": 128000000,
"stackLimit": 0,
"procLimit": 50,
"cpuRateLimit": 0,
"cpuSetLimit": "",
"copyIn": {},
"copyInCached": {},
"copyInDir": ".",
"copyOut": [
"stdout",
"stderr"
],
"copyOutCached": [],
"copyOutMax": 0,
"copyOutDir": "",
"tty": false,
"strictMemoryLimit": false,
"dataSegmentLimit": false,
"addressSpaceLimit": false
},
"cases": [
{
"args": [
"/usr/local/bin/repo-health-checker",
"-root=.",
"-repoSize=10",
"-checkFileSumList=-checkFileNameList="
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
},
{
"args": [
"/usr/local/bin/joint-teapot",
"joj3-check-env",
"/home/tt/.config/teapot/teapot.env",
"--grading-repo-name",
"ece280-joj",
"--group-config",
"=100:24"
],
"env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
],
"clockLimit": 2,
"memoryLimit": 128000000,
"procLimit": 50,
"copyOut": [
"stdout",
"stderr"
]
}
]
}
},
"parsers": [
{
"name": "healthcheck",
"with": {
"score": 1
}
},
{
"name": "debug",
"with": {
"score": 0
}
}
]
},
{ {
"name": "[cq] Filelength", "name": "[cq] Filelength",
"group": "cq", "group": "cq",
@ -24,20 +110,19 @@
"*.cpp", "*.cpp",
"*.h" "*.h"
], ],
"env": [ "env": [],
"PATH=/usr/bin:/bin:/usr/local/bin"
],
"stdin": { "stdin": {
"content": "", "content": ""
"max": 128000000
}, },
"stdout": { "stdout": {
"name": "stdout", "name": "stdout",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"stderr": { "stderr": {
"name": "stderr", "name": "stderr",
"max": 800000000000000 "max": 800000000000000,
"pipe": true
}, },
"cpuLimit": 1000000000000000, "cpuLimit": 1000000000000000,
"realCpuLimit": 0, "realCpuLimit": 0,
@ -49,8 +134,7 @@
"cpuSetLimit": "", "cpuSetLimit": "",
"copyIn": { "copyIn": {
"tools/filelength": { "tools/filelength": {
"src": "/home/tt/.config/joj/tools/filelength", "src": "/home/tt/.config/joj/tools/filelength"
"max": 128000000
} }
}, },
"copyInCached": {}, "copyInCached": {},
@ -132,19 +216,7 @@
"env": [ "env": [
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log" "LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
], ],
"stdin": { "cpuLimit": 0,
"content": "",
"max": 128000000
},
"stdout": {
"name": "stdout",
"max": 128000000
},
"stderr": {
"name": "stderr",
"max": 128000000
},
"cpuLimit": 1,
"realCpuLimit": 0, "realCpuLimit": 0,
"clockLimit": 2, "clockLimit": 2,
"memoryLimit": 128000000, "memoryLimit": 128000000,