def test_failure(self): """Tests that an exception is raised if the function doesn't succeed""" with self.assertRaises(RuntimeError): reliable_executor.reliably_execute( functools.partial(self.intermittent_function, self.intermittent_result(self.number_of_fails)), retry=(self.number_of_fails - 1), wait=0, )
def test_success_without_failures(self): """Tests that the correct result is returned if the function doesn't fail""" result = reliable_executor.reliably_execute( functools.partial(self.intermittent_function, self.intermittent_result()), retry=0, wait=0 ) self.assertEqual(result, 0)
def test_success_with_failures(self): """Tests that the correct result is returned if the function fails""" result = reliable_executor.reliably_execute( functools.partial(self.intermittent_function, self.intermittent_result(self.number_of_fails)), retry=self.number_of_fails, wait=0, ) self.assertEqual(result, 0)
def reliably_upload( image, settings, log=logging.getLogger(__name__), ): """Reliably uploads an image""" log.debug('Attempting to upload "%s"', image.id) try: log.info( 'Uploaded "%s" as "%s" successfully', image.filename, reliable_executor.reliably_execute( upload, image, settings, log=log, ), ) except RuntimeError as runtime_error: log.error( 'Uploading "%s" failed because of "%s"', image.id, runtime_error, )