class TestAWSConnection(unittest.TestCase): @patch('patroni.scripts.aws.requests_get', Mock(return_value=urllib3.HTTPResponse( status=200, body=b'{"instanceId": "012345", "region": "eu-west-1"}'))) def setUp(self): self.conn = AWSConnection('test') def test_on_role_change(self): self.assertTrue(self.conn.on_role_change('master')) with patch.object(MockVolumes, 'filter', Mock(return_value=[])): self.conn._retry.max_tries = 1 self.assertFalse(self.conn.on_role_change('master')) @patch('patroni.scripts.aws.requests_get', Mock(side_effect=Exception('foo'))) def test_non_aws(self): conn = AWSConnection('test') self.assertFalse(conn.on_role_change("master")) @patch('patroni.scripts.aws.requests_get', Mock(return_value=urllib3.HTTPResponse(status=200, body=b'foo'))) def test_aws_bizare_response(self): conn = AWSConnection('test') self.assertFalse(conn.aws_available()) @patch('patroni.scripts.aws.requests_get', Mock(return_value=urllib3.HTTPResponse(status=503, body=b'Error'))) @patch('sys.exit', Mock()) def test_main(self): self.assertIsNone(_main()) sys.argv = ['aws.py', 'on_start', 'replica', 'foo'] self.assertIsNone(_main())
class TestAWSConnection(unittest.TestCase): @patch('requests.get', requests_get) def setUp(self): self.conn = AWSConnection('test') def test_on_role_change(self): self.assertTrue(self.conn.on_role_change('master')) with patch.object(MockEc2Connection, 'get_all_volumes', Mock(return_value=[])): self.conn._retry.max_tries = 1 self.assertFalse(self.conn.on_role_change('master')) @patch('requests.get', Mock(side_effect=RequestException('foo'))) def test_non_aws(self): conn = AWSConnection('test') self.assertFalse(conn.on_role_change("master")) @patch('requests.get', Mock(return_value=MockResponse('foo'))) def test_aws_bizare_response(self): conn = AWSConnection('test') self.assertFalse(conn.aws_available()) @patch('requests.get', requests_get) @patch('sys.exit', Mock()) def test_main(self): self.assertIsNone(_main()) sys.argv = ['aws.py', 'on_start', 'replica', 'foo'] self.assertIsNone(_main())
class TestAWSConnection(unittest.TestCase): def __init__(self, method_name='runTest'): super(TestAWSConnection, self).__init__(method_name) def set_error(self): self.error = True def set_json_error(self): self.json_error = True def boto_ec2_connect_to_region(self, region): return MockEc2Connection(self.error) def requests_get(self, url, **kwargs): if self.error: raise RequestException("foo") result = namedtuple('Request', 'ok content') result.ok = True if url.split('/')[-1] == 'document' and not self.json_error: result = {"instanceId": "012345", "region": "eu-west-1"} else: result = 'foo' return MockResponse(result) def setUp(self): self.error = False self.json_error = False requests.get = self.requests_get boto.ec2.connect_to_region = self.boto_ec2_connect_to_region self.conn = AWSConnection('test') def test_aws_available(self): self.assertTrue(self.conn.aws_available()) def test_on_role_change(self): self.assertTrue(self.conn._tag_ebs('master')) self.assertTrue(self.conn._tag_ec2('master')) self.assertTrue(self.conn.on_role_change('master')) def test_non_aws(self): self.set_error() conn = AWSConnection('test') self.assertFalse(conn.aws_available()) self.assertFalse(conn._tag_ebs('master')) self.assertFalse(conn._tag_ec2('master')) def test_aws_bizare_response(self): self.set_json_error() conn = AWSConnection('test') self.assertFalse(conn.aws_available()) def test_aws_tag_ebs_error(self): self.set_error() self.assertFalse(self.conn._tag_ebs("master")) def test_aws_tag_ec2_error(self): self.set_error() self.assertFalse(self.conn._tag_ec2("master"))
class TestAWSConnection(unittest.TestCase): def boto_ec2_connect_to_region(self, region): return MockEc2Connection(self.error) def requests_get(self, url, **kwargs): if self.error: raise RequestException("foo") result = namedtuple('Request', 'ok content') result.ok = True if url.split('/')[-1] == 'document' and not self.json_error: result = {"instanceId": "012345", "region": "eu-west-1"} else: result = 'foo' return MockResponse(result) def setUp(self): self.error = False self.json_error = False requests.get = self.requests_get boto.ec2.connect_to_region = self.boto_ec2_connect_to_region self.conn = AWSConnection('test') def test_aws_available(self): self.assertTrue(self.conn.aws_available()) def test_on_role_change(self): self.assertTrue(self.conn.on_role_change('master')) self.conn.retry = Mock(side_effect=RetryFailedError("retry failed")) self.assertFalse(self.conn.on_role_change('master')) def test_non_aws(self): self.error = True conn = AWSConnection('test') self.assertFalse(conn.on_role_change("master")) def test_aws_bizare_response(self): self.json_error = True conn = AWSConnection('test') self.assertFalse(conn.aws_available()) @patch('sys.exit', Mock()) def test_main(self): self.assertIsNone(_main()) sys.argv = ['aws.py', 'on_start', 'replica', 'foo'] self.assertIsNone(_main())
class TestAWSConnection(unittest.TestCase): def boto_ec2_connect_to_region(self, region): return MockEc2Connection(self.error) def requests_get(self, url, **kwargs): if self.error: raise RequestException("foo") result = namedtuple('Request', 'ok content') result.ok = True if url.split('/')[-1] == 'document' and not self.json_error: result = {"instanceId": "012345", "region": "eu-west-1"} else: result = 'foo' return MockResponse(result) def setUp(self): self.error = False self.json_error = False requests.get = self.requests_get boto.ec2.connect_to_region = self.boto_ec2_connect_to_region self.conn = AWSConnection('test') def test_aws_available(self): self.assertTrue(self.conn.aws_available()) def test_on_role_change(self): self.assertTrue(self.conn._tag_ebs('master')) self.assertTrue(self.conn._tag_ec2('master')) self.assertTrue(self.conn.on_role_change('master')) def test_non_aws(self): self.error = True conn = AWSConnection('test') self.assertFalse(conn.aws_available()) self.assertFalse(conn._tag_ebs('master')) self.assertFalse(conn._tag_ec2('master')) def test_aws_bizare_response(self): self.json_error = True conn = AWSConnection('test') self.assertFalse(conn.aws_available()) def test_aws_tag_ebs_error(self): self.error = True self.assertFalse(self.conn._tag_ebs("master")) def test_aws_tag_ec2_error(self): self.error = True self.assertFalse(self.conn._tag_ec2("master")) @patch('sys.exit', Mock()) def test_main(self): self.assertIsNone(_main()) sys.argv = ['aws.py', 'on_start', 'replica', 'foo'] self.assertIsNone(_main())
def test_non_aws(self): conn = AWSConnection('test') self.assertFalse(conn.on_role_change("master"))