Merge pull request #10698 from edx/jeskew/TNL-3795_fix

Protect against divide by zero in DataDog event.
This commit is contained in:
John Eskew
2015-12-15 16:34:28 -05:00
2 changed files with 19 additions and 4 deletions

View File

@@ -1116,10 +1116,11 @@ class CapaMixin(CapaFields):
if dog_stats_api:
dog_stats_api.increment(metric_name('checks'), tags=[u'result:success'])
dog_stats_api.histogram(
metric_name('correct_pct'),
float(published_grade['grade']) / published_grade['max_grade'],
)
if published_grade['max_grade'] != 0:
dog_stats_api.histogram(
metric_name('correct_pct'),
float(published_grade['grade']) / published_grade['max_grade'],
)
dog_stats_api.histogram(
metric_name('attempts'),
self.attempts,

View File

@@ -731,6 +731,20 @@ class CapaModuleTest(unittest.TestCase):
# Expect an AJAX alert message in 'success'
self.assertIn(error_msg, result['success'])
def test_check_problem_zero_max_grade(self):
"""
Test that a capa problem with a max grade of zero doesn't generate an error.
"""
# Create the module
module = CapaFactory.create(attempts=1)
# Override the problem score to have a total of zero.
module.lcp.get_score = lambda: {'score': 0, 'total': 0}
# Check the problem
get_request_dict = {CapaFactory.input_key(): '3.14'}
module.check_problem(get_request_dict)
def test_check_problem_error_nonascii(self):
# Try each exception that capa_module should handle