Note that you need to follow the instructions below ONLY if you want to run the grader (client side) from source for debugging purposes or you are trying to re-package after making changes or package it into a binary for a non-Linux platform.
Typically, you do NOT need to specifically provide even the binary version (or a link to download it) to the students. The main assignment description/handout provided to students already contains the download link and instructions for its usage.
However, note that grader requires some configuration items (port number of the server, etc.) that need to be provided to the students (details below). Such configuration can be distributed to the students through typical course communication channels (piazza, course website, etc.).
You need to follow the steps below only if you want to run the grader from the source. If you are using the binary version, skip to the Configure section.
$ git clone --no-checkout https://github.com/cse4589/cse4589-pa1.git
$ cd cse4589-pa1
$ git config core.sparseCheckout true
$ echo 'Grader/local' >> .git/info/sparse-checkout
$ git checkout master
Before the AutoGrader's client can talk to the server, it needs to be configured. Client's configuration is contained in Grader/local/grader.cfg
. Available configuration options are explained below.
-
[GradingServerList]
- server-1 ... server-5 FQDNs of the five grading host machines.
-
[HTTPLauncher]
- port Port number the AutoGrader server was started on. This is the port number you used at the last step in the server setup process.
-
[GradingServer]
-
[Grader]
- binary Filename of the binary created by the submission Makefile (default=assignment1). This is an internal grader property and does not require any changes to it.
The binary client downloaded by students through the link provided in the assignment handout contains a pre-configured grader.cfg. It comes populated with values assuming the server setup process detailed here was followed.
However, the port value still needs to updated. This NEEDS be provided to the students by the instructor/course staff, after completing server setup through course communication channels (piazza, course website, etc.). This is the ONLY value the students would need to input/edit in the grader.cfg.
This step assumes that the five server instances are already setup and running. If the server component is not setup, please follow the steps listed here.
$ cd Grader/local
$ ./grader_controller.py -c CONFIG -s SUBMISSION -t TEST [-nu] [-nb]
The binary version (created using the steps detailed below) can be run similarly as:
$ ./grader_controller -c CONFIG -s SUBMISSION -t TEST [-nu] [-nb]
We make use of the pyinstaller package to convert AutoGrader's client side python scripts into a single executable binary.
You need to first obtain the source of the grader, using instructions listed above under the Setup section. To convert to binary, execute the following with the Grader/local/
as the root directory.
$ pyinstaller --onefile grader_controller.py
If everything goes well, the executable named grader_controller will be created Grader/local/dist
directory. You can upload this binary and the grader.cfg to somewhere it can be publicly downloaded from.
In all likelihood, there is no need for this conversion as pre-compiled binaries are already available for UB students to be downloaded. The download and setup is taken care by the template scripts which are documented in the assignment handout/description. Remember that students still NEED to be notified of the server's port number before they can use the AutoGrader.