class TestEtcdCluster(unittest.TestCase):

    @patch('requests.get', requests_get)
    @patch('boto3.resource')
    def setUp(self, res):
        res.return_value.instances.filter.return_value = instances()
        self.manager = EtcdManager()
        self.manager.instance_id = 'i-deadbeef3'
        self.manager.region = 'eu-west-1'
        self.cluster = EtcdCluster(self.manager)
        self.cluster.load_members()

    @patch('boto3.resource')
    def test_load_members(self, res):
        res.return_value.instances.filter.return_value = instances()
        self.assertEqual(len(self.cluster.members), 4)
        with patch('requests.get', Mock(side_effect=Exception)):
            self.cluster.load_members()

    def test_is_healthy(self):
        me = EtcdMember({
            'id': 'ifoobari7',
            'name': 'i-sadfjhg',
            'clientURLs': ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_CLIENT_PORT)],
            'peerURLs': ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)],
        })
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].instance_id = 'foo'
        self.cluster.members[-1].name = ''
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].peer_urls = ['http://127.0.0.2:2380']
        self.assertTrue(self.cluster.is_healthy(me))
        self.cluster.members.pop()
        self.assertTrue(self.cluster.is_healthy(me))
class TestEtcdCluster(unittest.TestCase):

    def __init__(self, method_name='runTest'):
        self.setUp = self.set_up
        super(TestEtcdCluster, self).__init__(method_name)

    def set_up(self):
        requests.get = requests_get
        boto.ec2.connect_to_region = boto_ec2_connect_to_region
        self.manager = EtcdManager()
        self.manager.instance_id = 'i-deadbeef3'
        self.manager.region = 'eu-west-1'
        self.cluster = EtcdCluster(self.manager)
        self.cluster.load_members()

    def test_load_members(self):
        self.assertEqual(len(self.cluster.members), 4)
        requests.get = requests_get_fail
        self.cluster.load_members()

    def test_is_healthy(self):
        me = EtcdMember({
            'id': 'ifoobari7',
            'name': 'i-sadfjhg',
            'clientURLs': ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_CLIENT_PORT)],
            'peerURLs': ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)],
        })
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].instance_id = 'foo'
        self.cluster.members[-1].name = ''
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].peer_urls = ['http://127.0.0.2:2380']
        self.assertTrue(self.cluster.is_healthy(me))
        self.cluster.members.pop()
        self.assertTrue(self.cluster.is_healthy(me))
class TestEtcdCluster(unittest.TestCase):
    @patch('requests.get', requests_get)
    @patch('boto3.resource')
    def setUp(self, res):
        res.return_value.instances.filter.return_value = instances()
        self.manager = EtcdManager()
        self.manager.instance_id = 'i-deadbeef3'
        self.manager.region = 'eu-west-1'
        EtcdCluster.REGIONS = ['eu-west-1']
        self.cluster = EtcdCluster(self.manager)
        self.cluster.load_members()
        self.assertFalse(EtcdCluster.is_multiregion())

    @patch('boto3.resource')
    def test_load_members(self, res):
        res.return_value.instances.filter.return_value = instances()
        self.assertEqual(len(self.cluster.members), 4)
        with patch('requests.get', Mock(side_effect=Exception)):
            self.cluster.load_members()

    def test_is_healthy(self):
        private_ip_address = '127.0.0.22'
        private_dns_name = 'ip-{}.eu-west-1.compute.internal'.format(
            private_ip_address.replace('.', '-'))
        url = 'http://' + private_ip_address
        peer_urls = ['{}:{}'.format(url, EtcdMember.DEFAULT_PEER_PORT)]
        me = EtcdMember({
            'id':
            'ifoobari7',
            'name':
            'i-sadfjhg',
            'clientURLs': [
                '{}:{}'.format(private_ip_address,
                               EtcdMember.DEFAULT_CLIENT_PORT)
            ],
            'peerURLs':
            peer_urls
        })
        me.private_ip_address = private_ip_address
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].instance_id = 'foo'
        self.cluster.members[-1].name = ''
        self.assertFalse(self.cluster.is_healthy(me))

        self.cluster.members[-1].peer_urls = peer_urls
        self.assertTrue(self.cluster.is_healthy(me))
        self.cluster.members.pop()
        self.assertTrue(self.cluster.is_healthy(me))
Beispiel #4
0
class TestEtcdMultiRegionCluster(unittest.TestCase):
    @patch('requests.get', requests_get_multiregion)
    @patch('boto3.resource')
    def setUp(self, res):
        res.return_value.instances.filter.return_value = public_instances()
        self.manager = EtcdManager()
        self.manager.instance_id = 'i-deadbeef3'
        self.manager.region = 'eu-west-1'
        EtcdCluster.REGIONS = ['eu-west-1', 'eu-central-1']
        self.cluster = EtcdCluster(self.manager)
        self.cluster.load_members()
        self.assertTrue(EtcdCluster.is_multiregion())

    @patch('boto3.resource')
    def test_load_members(self, res):
        res.return_value.instances.filter.return_value = public_instances()
        self.assertEqual(len(self.cluster.members), 7)
        with patch('requests.get', Mock(side_effect=Exception)):
            self.cluster.load_members()

    def test_is_healthy(self):
        public_dns_name = 'ec2-52-0-0-128.eu-west-1.compute.amazonaws.com'
        url = 'http://' + public_dns_name
        peer_urls = ['{}:{}'.format(url, EtcdMember.DEFAULT_PEER_PORT)]
        me = EtcdMember({
            'id':
            'ifoobari0815',
            'name':
            'i-sadfjhg',
            'clientURLs':
            ['{}:{}'.format(url, EtcdMember.DEFAULT_CLIENT_PORT)],
            'peerURLs':
            peer_urls
        })
        me.public_dns_name = public_dns_name
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].instance_id = 'foo'
        self.cluster.members[-1].name = ''
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].peer_urls = peer_urls
        self.assertTrue(self.cluster.is_healthy(me))
        self.cluster.members.pop()
        self.assertTrue(self.cluster.is_healthy(me))
class TestEtcdCluster(unittest.TestCase):
    @patch("requests.get", requests_get)
    @patch("boto3.resource")
    def setUp(self, res):
        res.return_value.instances.filter.return_value = instances()
        self.manager = EtcdManager()
        self.manager.instance_id = "i-deadbeef3"
        self.manager.region = "eu-west-1"
        EtcdCluster.REGIONS = ["eu-west-1"]
        self.cluster = EtcdCluster(self.manager)
        self.cluster.load_members()
        self.assertFalse(EtcdCluster.is_multiregion())

    @patch("boto3.resource")
    def test_load_members(self, res):
        res.return_value.instances.filter.return_value = instances()
        self.assertEqual(len(self.cluster.members), 4)
        with patch("requests.get", Mock(side_effect=Exception)):
            self.cluster.load_members()

    def test_is_healthy(self):
        private_ip_address = "127.0.0.22"
        private_dns_name = "ip-{}.eu-west-1.compute.internal".format(private_ip_address.replace(".", "-"))
        url = "http://" + private_ip_address
        peer_urls = ["{}:{}".format(url, EtcdMember.DEFAULT_PEER_PORT)]
        me = EtcdMember(
            {
                "id": "ifoobari7",
                "name": "i-sadfjhg",
                "clientURLs": ["{}:{}".format(private_ip_address, EtcdMember.DEFAULT_CLIENT_PORT)],
                "peerURLs": peer_urls,
            }
        )
        me.private_ip_address = private_ip_address
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].instance_id = "foo"
        self.cluster.members[-1].name = ""
        self.assertFalse(self.cluster.is_healthy(me))

        self.cluster.members[-1].peer_urls = peer_urls
        self.assertTrue(self.cluster.is_healthy(me))
        self.cluster.members.pop()
        self.assertTrue(self.cluster.is_healthy(me))
class TestEtcdMultiRegionCluster(unittest.TestCase):

    @patch('requests.get', requests_get_multiregion)
    @patch('boto3.resource')
    def setUp(self, res):
        res.return_value.instances.filter.return_value = public_instances()
        self.manager = EtcdManager()
        self.manager.instance_id = 'i-deadbeef3'
        self.manager.region = 'eu-west-1'
        EtcdCluster.REGIONS = ['eu-west-1', 'eu-central-1']
        self.cluster = EtcdCluster(self.manager)
        self.cluster.load_members()
        self.assertTrue(EtcdCluster.is_multiregion())

    @patch('boto3.resource')
    def test_load_members(self, res):
        res.return_value.instances.filter.return_value = public_instances()
        self.assertEqual(len(self.cluster.members), 7)
        with patch('requests.get', Mock(side_effect=Exception)):
            self.cluster.load_members()

    def test_is_healthy(self):
        public_dns_name = 'ec2-52-0-0-128.eu-west-1.compute.amazonaws.com'
        url = 'http://' + public_dns_name
        peer_urls = ['{}:{}'.format(url, EtcdMember.DEFAULT_PEER_PORT)]
        me = EtcdMember({
            'id': 'ifoobari0815',
            'name': 'i-sadfjhg',
            'clientURLs': ['{}:{}'.format(url, EtcdMember.DEFAULT_CLIENT_PORT)],
            'peerURLs': peer_urls
        })
        me.public_dns_name = public_dns_name
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].instance_id = 'foo'
        self.cluster.members[-1].name = ''
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].peer_urls = peer_urls
        self.assertTrue(self.cluster.is_healthy(me))
        self.cluster.members.pop()
        self.assertTrue(self.cluster.is_healthy(me))
class TestEtcdCluster(unittest.TestCase):
    @patch('requests.get', requests_get)
    @patch('boto3.resource')
    def setUp(self, res):
        res.return_value.instances.filter.return_value = instances()
        self.manager = EtcdManager()
        self.manager.instance_id = 'i-deadbeef3'
        self.manager.region = 'eu-west-1'
        self.cluster = EtcdCluster(self.manager)
        self.cluster.load_members()

    @patch('boto3.resource')
    def test_load_members(self, res):
        res.return_value.instances.filter.return_value = instances()
        self.assertEqual(len(self.cluster.members), 4)
        with patch('requests.get', Mock(side_effect=Exception)):
            self.cluster.load_members()

    def test_is_healthy(self):
        me = EtcdMember({
            'id':
            'ifoobari7',
            'name':
            'i-sadfjhg',
            'clientURLs':
            ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_CLIENT_PORT)],
            'peerURLs':
            ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)],
        })
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].instance_id = 'foo'
        self.cluster.members[-1].name = ''
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].peer_urls = ['http://127.0.0.2:2380']
        self.assertTrue(self.cluster.is_healthy(me))
        self.cluster.members.pop()
        self.assertTrue(self.cluster.is_healthy(me))