Skip to content

Developer Overview (DEPRECATED)

daviddob edited this page Aug 3, 2017 · 1 revision

The Autolab service runs on a front end host and a cluster of 10 back end autograding hosts. Each host runs Linux and is part of the ics.cs.cmu.edu domain. The front end host is

greatwhite. The backend hosts are megamouth, nurseshark, pygmyshark, rivershark, roughshark, milkshark, reefshark, sandshark, sawshark, and tigershark.

The Autolab service consists of a front end and a back end. The front end consists of an Apache Web server, a Ruby on Rails application framework, and a MySQL database. The front end provides the gradebook service and can request autograding services from the backend.

The front end code runs on greatwhite out of AFS in /afs/cs/academic/autolab/autolab2.

Each time a student submits their work, Autolab provides the option to autograde that submission and record the score in the gradebook. Because student submissions are untrusted code, Autolab performs the autograding on virtual machines in a private network. Each autograding job runs in its own unique virtual machine instance, which is then discarded.

The back end provides the actual autograding service. It consists of the Tango and Tashi services. Tango is an autograding job scheduling service written in Python. Tashi is a virtual machine management system, also written in Python. The Tango service autogrades student submissions on virtual machines running on the back end hosts. It accepts autograding job requests from the front end in the form of Thrift RPC calls. The Tashi service provides functions for creating, destroying, and listing virtual machines. It accepts calls from Tango in the form of Python RPyC calls.

Tango runs on greatwhite. Tashi runs on both greatwhite and the backend hosts.

Currently, production autograding is handled by megamouth, nurseshark, pygmyshark, rivershark, and roughshark. The other backend machines are used for testing and development.