SWEN Round-Robin Tournament Mk. 2
Tournament code to be used for SWEN subjects with bug/test suite tournaments.
Takes student submitted test suite(s) and program(s) under test (PUTs). All test suites are run against all PUTs in a round robin style, the results are then scored and ranked.
The tournament is designed to be integrated with a Gitlab Shared Runner so that students can make submissions and receive immediate feedback in an interactive manner.
Andrew Morton [email protected]
The tournament is comprised of three 'threads'; A 'frontend' thread that validates submissions, a 'backend' thread that runs the submissions against each other, and a results thread that publishes results to a simple HTTP server.
See How it works for further details.
Instructions for setting up the VPS, Gitlab runner, and assignment code can be found here
The tournaments only dependency is python 3.8.0 or later. The code is expected to be run on a VPS with no PyPi, apt, or other package managers and so should only depend on libraries from the python prelude.
Commands for the tournament are broken into backend commands that manage the tournament, called via python3.8 backend.py
, and frontend commands that are used to make submissions to the tournament, called via python3.8 frontend.py
.
A typical workflow for the tournament will look like
python3.8 backend.py check_config # check the tournament is correctly configured
python3.8 backend.py start_tournament # submissions can now be made and tournament results can be seen on the 8080 port
# students make submissions to the tournanent via the gitlab runner
python3.8 frontend.py check_eligibility
python3.8 frontend.py validate_tests
python3.8 frontend.py validate_progs
python3.8 frontend.py submit
# the submission deadline and extension deadline are passed
python3.8 backend.py get_diffs # generate diffs to be manually assessed
python3.8 backend.py rescore_invalid_progs # zero-score invalid PUTs
python3.8 backend.py export_results # export the tournament results to a .csv file
python3.8 backend.py shutdown # shutdown the tournament
python3.8 backend.py clean # delete all submissions, config and traces
See common errors
See test/