Exemple #1
0
def update_exp_id_to_ds_bug_task(user_id, experiment_id):
    metrics.incr("update_add_experiment_id_to_ds_bug.started")

    experiment = Experiment.objects.get(id=experiment_id)
    ds_bug_url = experiment.data_science_bugzilla_url
    ds_bug_id = bugzilla.get_bugzilla_id(ds_bug_url)
    request_body = {"blocks": {"add": [experiment.bugzilla_id]}}
    url = settings.BUGZILLA_UPDATE_URL.format(id=ds_bug_id)
    try:
        logger.info("adding block experiment id to ds bug id")
        bugzilla.make_bugzilla_call(url, requests.put, data=request_body)
        Notification.objects.create(
            user_id=user_id,
            message=NOTIFICATION_MESSAGE_DS_UPDATE.format(
                bug_url=experiment.data_science_bugzilla_url
            ),
        )
        metrics.incr("update_exp_id_to_ds_bug.completed")
        logger.info("Data Science Bug status comment sent")
    except bugzilla.BugzillaError:
        metrics.incr("update_exp_id_to_ds_bug.failed")
        logger.info("Failed to add a status comment to db bugzilla ticket")
        Notification.objects.create(
            user_id=user_id,
            message=NOTIFICATION_MESSAGE_DS_UPDATE_ERROR.format(
                bug_url=experiment.data_science_bugzilla_url
            ),
        )
    def test_api_error_logs_message(self):
        mock_response_data = {"message": "Error: Something went wrong"}
        mock_response = mock.Mock()
        mock_response.json = mock.Mock()
        mock_response.json.return_value = mock_response_data
        mock_response.status_code = 400
        self.mock_bugzilla_requests_put.return_value = mock_response

        response_data = make_bugzilla_call("/url/", requests.put, data={})
        self.assertEqual(response_data, mock_response_data)
Exemple #3
0
    def test_api_error_logs_message(self):
        mock_response_data = {
            "message": "Error creating Bugzilla Bug because of reasons"
        }
        mock_response = mock.Mock()
        mock_response.content = json.dumps(mock_response_data)
        mock_response.status_code = 400
        self.mock_bugzilla_requests_post.return_value = mock_response

        response_data = make_bugzilla_call("/url/", {})
        self.assertEqual(response_data, mock_response_data)
Exemple #4
0
    def test_api_error_logs_message(self, mock_logging):
        mock_response_data = {
            "message": "Error creating Bugzilla Bug because of reasons"
        }
        mock_response = mock.Mock()
        mock_response.content = json.dumps(mock_response_data)
        mock_response.status_code = 400
        self.mock_bugzilla_requests_post.return_value = mock_response

        bugzilla_id = make_bugzilla_call("/url/", {})
        self.assertIsNone(bugzilla_id)

        mock_logging.info.assert_called_with(
            ("Error creating Bugzilla Ticket: "
             "Error creating Bugzilla Bug because of reasons"))
 def test_json_parse_error_raises_bugzilla_error(self):
     self.mock_bugzilla_requests_put.side_effect = ValueError()
     with self.assertRaises(BugzillaError):
         make_bugzilla_call("/url/", requests.put, data={})
Exemple #6
0
 def test_json_parse_error_passes_silently(self):
     mock_response = mock.Mock()
     mock_response.content = "{invalid json"
     self.mock_bugzilla_requests_post.return_value = mock_response
     with self.assertRaises(BugzillaError):
         make_bugzilla_call("/url/", {})
Exemple #7
0
    def test_request_error_passes_silently(self):
        self.mock_bugzilla_requests_post.side_effect = RequestException()

        with self.assertRaises(BugzillaError):
            make_bugzilla_call("/url/", {})
Exemple #8
0
 def test_json_parse_error_passes_silently(self):
     mock_response = mock.Mock()
     mock_response.content = "{invalid json"
     self.mock_bugzilla_requests_post.return_value = mock_response
     bugzilla_id = make_bugzilla_call("/url/", {})
     self.assertIsNone(bugzilla_id)
Exemple #9
0
 def test_request_error_passes_silently(self):
     self.mock_bugzilla_requests_post.side_effect = RequestException()
     bugzilla_id = make_bugzilla_call("/url/", {})
     self.assertIsNone(bugzilla_id)