Skip to content

Latest commit

 

History

History
51 lines (37 loc) · 2.47 KB

README.md

File metadata and controls

51 lines (37 loc) · 2.47 KB

Sueca Judge Server Build Status

The judge system used by ShiftForward to run the ShiftForward Challenge at ENEI 2018.

Quick Start

First of all, you'll need to create a file with a list of entry codes that can be used by participants to register. You can do that by creating an entry_codes.txt file at the root of this project with one entry code per line.

Then, copy or rename src/main/resources/application.conf.template to an application.conf file in the same location. You can tweak the settings there, which override the defaults present in src/main/resources/reference.conf.

You'll need SBT to build and run the server and Docker to run submissions in a safe environment. Once you have both installed in your system, you can run this server by executing:

sbt reStart

A web UI will be available at http://localhost:8090 and the server will start running validations and tournaments periodically.

Launching as a Distributed System

This judge system is prepared to run as a distributed system in which the Web UI, a Runner Master (orchestrating the validations and tournaments to run) and several Runner Workers (running the submissions as directed by the Runner Master) are launched on different physical or virtual servers. Different command-line parameters can be passed to SBT to change the behavior of the process:

# run the Web UI and an internal master-worker system
sbt reStart

# run the Web UI only
sbt reStart --http

# run a Runner Master only
sbt reStart --runner-master

# run a Runner Worker only
sbt reStart --runner-worker

The Web UI exchanges information with the Runner Master through the database only. The Runner Master forms a cluster with all Runner Workers using Akka Cluster, allowing them to exchange messages in real-time. Therefore, in order to get the system working in a distributed manner you need to provide a persistent database and configure Akka Cluster properly in your application.conf (reference.conf already helps with most of that).