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())
Beispiel #2
0
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())
Beispiel #3
0
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())
Beispiel #4
0
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 __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"))
Beispiel #6
0
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"))
Beispiel #7
0
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())
Beispiel #8
0
 def setUp(self):
     self.conn = AWSConnection('test')
Beispiel #9
0
 def test_aws_bizare_response(self):
     conn = AWSConnection('test')
     self.assertFalse(conn.aws_available())
Beispiel #10
0
 def test_non_aws(self):
     conn = AWSConnection('test')
     self.assertFalse(conn.on_role_change("master"))
Beispiel #11
0
 def setUp(self):
     self.conn = AWSConnection('test')
Beispiel #12
0
 def test_aws_bizare_response(self):
     self.set_json_error()
     conn = AWSConnection('test')
     self.assertFalse(conn.aws_available())
 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'))
Beispiel #14
0
 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')
Beispiel #15
0
 def test_aws_bizare_response(self):
     self.set_json_error()
     conn = AWSConnection('test')
     self.assertFalse(conn.aws_available())
Beispiel #16
0
 def test_non_aws(self):
     conn = AWSConnection('test')
     self.assertFalse(conn.on_role_change("master"))
Beispiel #17
0
 def test_aws_bizare_response(self):
     conn = AWSConnection('test')
     self.assertFalse(conn.aws_available())
Beispiel #18
0
 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')