split testing support in the LMS.
Adds a split_test_module XModule, that can choose one of its children to display, based on a get_condition_for_user API added to the runtime. To test, add something like this to an xml course, or make equivalent tweaks in mongo. <vertical url_name="split_test_vert"> <split_test url_name="split1" experiment_id="0" condition_id_to_child='{"0": "i4x://MITx/6.00x/html/split_test_cond0", "1": "i4x://MITx/6.00x/html/split_test_cond1"}'> <html url_name="split_test_cond0">condition 0</html> <html url_name="split_test_cond1">condition 1</html> </split_test> </vertical> Also needs an experiment configured in the course policy json: e.g. "user_partitions": [{"id": 0, "name": "Experiment 0", "description": "Unicorns?", "version": 1, "groups": [{"id": 0, "name": "group 0", "version": 1}, {"id": 1, "name": "group 1", "version": 1}]}] (This particular snippet will work inside a course with org MITx and course name 6.00x) Co-Author: Sarina Canelake <sarina@edx.org> Co-Author: Julia Hansbrough <julia@edx.org> Co-Author: Diana Huang <diana@edx.org> Co-Author: Calen Pennington <cale@edx.org> [LMS-2095]
Showing
- common/djangoapps/user_api/migrations/0002_auto__add_usercoursetags__add_unique_usercoursetags_user_course_id_key.py 87 additions, 0 deletions...ursetags__add_unique_usercoursetags_user_course_id_key.py
- common/djangoapps/user_api/migrations/0003_rename_usercoursetags.py 72 additions, 0 deletions...ngoapps/user_api/migrations/0003_rename_usercoursetags.py
- common/djangoapps/user_api/models.py 14 additions, 0 deletionscommon/djangoapps/user_api/models.py
- common/djangoapps/user_api/tests/test_user_service.py 34 additions, 0 deletionscommon/djangoapps/user_api/tests/test_user_service.py
- common/djangoapps/user_api/user_service.py 61 additions, 0 deletionscommon/djangoapps/user_api/user_service.py
- common/lib/xmodule/setup.py 1 addition, 0 deletionscommon/lib/xmodule/setup.py
- common/lib/xmodule/xmodule/course_module.py 19 additions, 1 deletioncommon/lib/xmodule/xmodule/course_module.py
- common/lib/xmodule/xmodule/modulestore/mongo/base.py 3 additions, 3 deletionscommon/lib/xmodule/xmodule/modulestore/mongo/base.py
- common/lib/xmodule/xmodule/partitions/__init__.py 0 additions, 0 deletionscommon/lib/xmodule/xmodule/partitions/__init__.py
- common/lib/xmodule/xmodule/partitions/partitions.py 116 additions, 0 deletionscommon/lib/xmodule/xmodule/partitions/partitions.py
- common/lib/xmodule/xmodule/partitions/partitions_service.py 138 additions, 0 deletionscommon/lib/xmodule/xmodule/partitions/partitions_service.py
- common/lib/xmodule/xmodule/partitions/test_partitions.py 155 additions, 0 deletionscommon/lib/xmodule/xmodule/partitions/test_partitions.py
- common/lib/xmodule/xmodule/public/js/split_test_staff.js 43 additions, 0 deletionscommon/lib/xmodule/xmodule/public/js/split_test_staff.js
- common/lib/xmodule/xmodule/split_test_module.py 185 additions, 0 deletionscommon/lib/xmodule/xmodule/split_test_module.py
- common/lib/xmodule/xmodule/tests/test_split_module.py 74 additions, 0 deletionscommon/lib/xmodule/xmodule/tests/test_split_module.py
- common/lib/xmodule/xmodule/tests/xml/factories.py 22 additions, 0 deletionscommon/lib/xmodule/xmodule/tests/xml/factories.py
- docs/developers/source/experiments.rst 76 additions, 0 deletionsdocs/developers/source/experiments.rst
- docs/en_us/developers/source/index.rst 1 addition, 0 deletionsdocs/en_us/developers/source/index.rst
- lms/lib/xblock/runtime.py 73 additions, 1 deletionlms/lib/xblock/runtime.py
- lms/lib/xblock/test/test_runtime.py 41 additions, 0 deletionslms/lib/xblock/test/test_runtime.py
Please register or sign in to comment