Judge - HypeX documentation¶
Judge - HypeX is a judge system which focuses on performance and security.
It requires root permission to run. The host must have the full Linux namespaces support and the memory cgroup, also the access control lists(acl) needs to be enabled on the file system.
Requirements¶
python3 >= 3.6
python3-pip
gcc >= 7.4
g++ >= 7.4
clang >= 6.0
cmake >= 2.8
libcgroup-dev >= 0.41
acl
Installation¶
build-container.sh is used to copy files from the host to create the container. Currently, it is designed for Ubuntu 18.04 x86_64. You may need to modify it to fit your host’s file system. Or you can install it in the docker (see Use Docker).
git clone https://github.com/pzread/judge.git
cd judge
pip3 install -r requirements.txt
mkdir lib
cd lib
cmake ..
make
cd ..
./setup.sh
Usage¶
cd judge
sudo python3 Server.py
Warning
Before delete the container directory, always remember to umount the udev file systems under it.
Run Tests¶
cd judge
sudo python3 -m tornado.test.runtests tests.TestDiff
Use Docker¶
Warning
Make sure your docker supports access control lists(acl). For more information, see How to use setfacl within a Docker container?.
There is a problem that acl isn’t persistent on the docker’s file system, so ./setup.sh have to be run after starting a container.
For docker run, you may need to expose ports to the host.
git clone https://github.com/pzread/judge.git
cd judge
docker build -t judge .
docker run -p ${HOSTPORT}:2501 --privileged=true judge /bin/sh -c 'cd judge && ./setup.sh && python3 Server.py'