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.