/evaluator-slave

[OBSOLETE] Code evaluator for v2

Primary LanguageRuby

No Maintenance Intended

Coursemology 2 now runs code evaluations directly and no longer needs an external evaluator. See this issue.

Coursemology Code Evaluator Build Status

Code Climate Coverage Status Security Inline docs Gem Version

This is the evaluator program which will query Coursemology for pending evaluation jobs.

Setting up the Evaluator Slave

System Requirements

  1. Ruby (>= 2.1.0)
  2. Linux (tested on Ubuntu 14.04)
  3. Docker (the user the evaluator runs as must be able to talk to the Docker Remote API endpoint)

Getting Started

  1. Install the gem

    $ gem install coursemology-evaluator
  2. Modify .env to suit your environment. Point to the host to your Coursemology instance, and specify the API email and API key.

    1. You might need to configure a new user on your Coursemology instance, enable token authentication, and grant the auto_grader system/instance permission.
  3. Start the evaluator using the Procfile. You can use foreman or any similar tool to generate system scripts for boot.

Command Line Options

Compulsory Options

  1. --host: Coursemology host to connect to
  2. --api-user-email: User with autograder flag set
  3. --api-token: Authentication token of the user

Optional Options

Time options are expected to be strings in ISO8601 format.

  1. --interval: Time interval between checks for programming allocations. As this time is expected to be short, specify it with the time components of ISO8601 only. (Hours, minutes, seconds) The time designator T must be left out.

  2. --lifetime: Length of time to cache Docker images. This is expected to be in the order of days. If more granularity is needed, the time designator is required.

E.g. 1DT2H5M10S

  1. --one-shot: Runs once and terminates. Primarily used for testing.

  2. --sleep: Length of time to sleep before the first check for programming allocations. This time is expected to be short and has the same restrictions as those for --interval.

Useful for staggering the start times of multiple processes when managed with systemd.