/
Marmoset - Engineering

Marmoset - Engineering

What is Marmoset?

Marmoset is an open-source (Apache 2.0 license) web service that facilitates running student submissions through custom test scripts. It consists of a front-end SubmitServer and back-end BuildServers.

The following PDF shows an example of test results:

Perceived Benefits

Marmoset provides the ability to run highly customizable testings. Part of its values is that it facilitates dropboxes and administrative tasks so that the instructor can spend more time on test design. It starts by providing an authentication framework that is integrated with the University of Waterloo’s authentication services (Duo/ADFS). The build servers run in a Linux environment. This allows any test script to run as long as it can be driven from a Linux command line. Some use cases include:

  • testing of Python scripts within a controlled environment

  • custom compilation of C/C++ code

  • testing using software engines such as Matlab, SolidWorks, COMSOL, etc.

  • running student code on custom hardware environments (embedded testing, FPGA testing, etc.)

  • calling Generative AI APIs to evaluate submissions

Build servers can be hardened to prevent malicious code execution from causing damage.

Hardware

There are four physical servers:

  • eng-eugo-mms0.private.uwaterloo.ca

  • eng-eugo-mms1.private.uwaterloo.ca

  • eng-eugo-mms2.private.uwaterloo.ca

  • eng-eugo-mms3.private.uwaterloo.ca

They all run Ubuntu Server.

https://marmoset.eng.uwaterloo.ca is hosted on mms0.

https://marmoset2.eng.uwaterloo.ca is hosted on mms1.

The SubmitServer runs on Apache httpd/Apache Tomcat/MySQL.