Custom Response Load Test
Optional Installations
-
memcached: Install this and make sure it is running, or the Capa problem will not cache results.
-
AppArmor: Follow the instructions in
common/lib/codejail/READMEto set up the Python sandbox environment. If you do not set up the sandbox, the tests will still execute code in the CustomResponse, so you can still run the tests. -
matplotlib: Multi-mechanize uses this to create graphs.
Running the Tests
This test simulates student submissions for a custom response problem.
First, clear the cache:
/etc/init.d/memcached restart
Then, run the test:
multimech-run custom_response
You can configure the parameters in customresponse/config.cfg,
and you can change the CustomResponse script and student submissions
in customresponse/test_scripts/v_user.py.
Components Under Test
Components under test:
- Python sandbox (see
common/lib/codejail), which usesAppArmor - Caching (see
common/lib/capa/capa/safe_exec/), which usesmemcachein production
Components NOT under test:
- Django views
XModule- gunicorn
This allows us to avoid creating courses in mongo, logging in, using CSRF tokens, and other inconveniences. Instead, we create a capa problem (from the capa package), pass it Django's memcache backend, and pass the problem student submissions.
Even though the test uses capa.capa_problem.LoncapaProblem directly,
the capa should not depend on Django. For this reason, we put the
test in the courseware Django app.