def main(): try: exercise_file = open(util.relative_path("exercise_reports"), 'r+') ex_reports = json.loads(exercise_file.read()) except IOError: exercise_file = open(util.relative_path("exercise_reports"), 'w') ex_reports = {"elapsed_time": 1, # Filler value "max_id": -1, "last_time": 0} new_reports = get_errors(copy.deepcopy(ex_reports)) period_len = new_reports["time_this_period"] for ex in new_reports: if ex in SPECIAL_VALUES: continue if ex in ex_reports and ex_reports[ex]["num_errors"] > 0: errors_this_period = new_reports[ex]["this_period"] mean, probability = util.probability(ex_reports[ex]["num_errors"], ex_reports["elapsed_time"], errors_this_period, period_len) if (probability > 0.997 and errors_this_period > 1): # Too many errors! hipchat_message.send_message( "Elevated exercise bug report rate in exercise %s!" " Reports: %s. We saw %s in the last %s minutes," " while the mean indicates we should see around %s." " Probability that this is abnormally elevated: %.4f." % (ex, generate_links(new_reports[ex]["href"]), util.thousand_commas(errors_this_period), util.thousand_commas(int(period_len / 60)), util.thousand_commas(round(mean, 2)), probability), room_id="Exercises") if "href" in new_reports[ex].keys(): del new_reports[ex]["href"] # don't need to keep the links around del new_reports["time_this_period"] # Overwrite with new contents exercise_file.seek(0) exercise_file.truncate() exercise_file.write(json.dumps(new_reports)) exercise_file.close()
def main(): try: google_code_file = open(util.relative_path("google_code"), 'r+') old_reports = json.loads(google_code_file.read()) except IOError: google_code_file = open(util.relative_path("google_code"), 'w') # elapsed_time is filler value: doesn't matter what it is # since issue_count is 0. old_reports = {"elapsed_time": 1, "last_id": -1, "issue_count": 0, "last_time": 0} new_reports = get_errors(copy.deepcopy(old_reports)) time_this_period = new_reports["time_this_period"] mean, probability = util.probability(old_reports["issue_count"], old_reports["elapsed_time"], new_reports["issues_this_period"], time_this_period) if (mean != 0 and probability > 0.99): # Too many errors! hipchat_message.send_message( "Elevated bug report rate on" " <a href='http://khanacademy.org/r/bugs'>Google" " code!</a>" " We saw %s in the last %s minutes," " while the mean indicates we should see around %s." " Probability that this is abnormally elevated: %.4f." % (util.thousand_commas(new_reports["issues_this_period"]), util.thousand_commas(int(time_this_period / 60)), util.thousand_commas(round(mean, 2)), probability)) # Delete fields we don't need anymore del(new_reports["issues_this_period"]) del(new_reports["time_this_period"]) google_code_file.seek(0) google_code_file.truncate() google_code_file.write(json.dumps(new_reports)) google_code_file.close()