def delete_ses_dns_records_and_bucket(domain, hosted_zone): LOGGER.info("Deleting DNS records that configure e-mail for your domain") domain = normalize_domain(domain) hosted_zone = normalize_hosted_zone(hosted_zone) stack_handler = get_stack_action_handler(domain, hosted_zone) stacks_dict = stack_handler.cfn.get_stacks_outputs() bucket_stack_outputs = stacks_dict[get_bucket_stack_name(domain)] bucket_name = bucket_stack_outputs['bucketName'] LOGGER.info("Deleting all items in S3 bucket %r to prepare stack deletion", bucket_name) delete_items_in_bucket(bucket_name) retry(delay=10)(stack_handler.delete_stacks)() LOGGER.info("Deletion of DNS records and mail bucket complete")
def test_retry_actually_retries(self): helper = mock.Mock() helper.side_effect = [Exception, 42] helper.__name__ = "workaround for mock failure" retry_helper = retry(helper) self.assertEqual(retry_helper(), 42)
def test_retry_passes_exceptions(self): @retry def helper(): raise TypeError("some exception") self.assertRaises(TypeError, helper) helper2 = retry(lambda: 1 / 0) self.assertRaises(ZeroDivisionError, helper2)
def test_retry_passes_return_value(self): my_function = retry(lambda: 42) self.assertEqual(my_function(), 42) @retry def my_function2(): return 43 self.assertEqual(my_function2(), 43)
def test_explicit_retry_uses_the_attempts_parameter(self): for num_attempts in 1, 2: helper = mock.Mock() helper.side_effect = [Exception, 42] helper.__name__ = "workaround for mock failure" retry_helper = retry(helper, attempts=num_attempts) if num_attempts == 1: self.assertRaises(Exception, retry_helper) else: self.assertEqual(retry_helper(), 42)
def test_excplicit_retry_uses_delay_parameter(self): helper = mock.Mock() helper.side_effect = [Exception, 42] helper.__name__ = "workaround for mock failure" retry_helper = retry(helper, delay=0.5) start = time.time() self.assertEqual(retry_helper(), 42) stop = time.time() delta = stop - start self.assertGreater(delta, 0.5)