def test_backoff_on_connection_error(self): with patch('corehq.motech.repeaters.models.simple_post') as simple_post: simple_post.side_effect = ConnectionError() payload = self.repeater.get_payload(self.repeat_record) send_request(self.repeater, self.repeat_record, payload) self.assertEqual(self.repeat_record.attempts.last().state, RECORD_FAILURE_STATE) repeater_stub = self.reget_repeater_stub() self.assertIsNotNone(repeater_stub.next_attempt_at)
def test_success_on_200(self): resp = ResponseMock(status_code=200, reason='OK') with patch('corehq.motech.repeaters.models.simple_post') as simple_post: simple_post.return_value = resp payload = self.repeater.get_payload(self.repeat_record) send_request(self.repeater, self.repeat_record, payload) self.assertEqual(self.repeat_record.attempts.last().state, RECORD_SUCCESS_STATE) repeater_stub = self.reget_repeater_stub() self.assertIsNone(repeater_stub.next_attempt_at)
def test_backoff_on_503(self): resp = ResponseMock(status_code=503, reason='Service Unavailable') with patch('corehq.motech.repeaters.models.simple_post') as simple_post: simple_post.return_value = resp payload = self.repeater.get_payload(self.repeat_record) send_request(self.repeater, self.repeat_record, payload) self.assertEqual(self.repeat_record.attempts.last().state, RECORD_FAILURE_STATE) repeater_stub = self.reget_repeater_stub() self.assertIsNotNone(repeater_stub.next_attempt_at)
def test_no_backoff_on_409(self): resp = ResponseMock(status_code=409, reason='Conflict') with patch('corehq.motech.repeaters.models.simple_post') as simple_post: simple_post.return_value = resp payload = self.repeater.get_payload(self.repeat_record) send_request(self.repeater, self.repeat_record, payload) self.assertEqual(self.repeat_record.attempts.last().state, RECORD_FAILURE_STATE) repeater_stub = self.reget_repeater_stub() # Trying tomorrow is just as likely to work as in 5 minutes self.assertIsNone(repeater_stub.next_attempt_at)
def test_no_backoff_on_500(self): resp = ResponseMock(status_code=500, reason='Internal Server Error') with patch('corehq.motech.repeaters.models.simple_request' ) as simple_request: simple_request.return_value = resp payload = self.repeater.get_payload(self.repeat_record) send_request(self.repeater, self.repeat_record, payload) self.assertEqual(self.repeat_record.attempts.last().state, RECORD_FAILURE_STATE) sql_repeater = self.reget_sql_repeater() self.assertIsNone(sql_repeater.next_attempt_at)