def set_up(self): self.old_requests_post = requests.post self.old_requests_get = requests.get self.old_requests_delete = requests.delete requests.post = requests_post requests.get = requests_get requests.delete = requests_delete self.ec2 = Instance() self.ec2.id = 'i-foobar' self.ec2.private_ip_address = '127.0.0.1' self.ec2.private_dns_name = 'ip-127-0-0-1.eu-west-1.compute.internal' self.ec2.tags = { 'aws:cloudformation:stack-name': 'etc-cluster', 'aws:autoscaling:groupName': 'etc-cluster-postgres' } self.ec2_member = EtcdMember(self.ec2) self.etcd = { 'id': 'deadbeef', 'name': 'i-foobar2', 'clientURLs': [], 'peerURLs': ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)], } self.etcd_member = EtcdMember(self.etcd)
def setUp(self): self.ec2 = MockInstance('i-foobar', '127.0.0.1') self.ec2_member = EtcdMember(self.ec2) self.etcd = { 'id': 'deadbeef', 'name': 'i-foobar2', 'clientURLs': [], 'peerURLs': ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)], } self.etcd_member = EtcdMember(self.etcd)
def setUp(self): self.ec2 = MockInstance('i-foobar', '127.0.0.1') self.ec2_member = EtcdMember(self.ec2) self.etcd = { 'id': 'deadbeef', 'name': 'i-foobar2', 'clientURLs': [], 'peerURLs': [ 'http://ip-127-0-0-2.eu-west-1.compute.internal:{}'.format( EtcdMember.DEFAULT_PEER_PORT) ], } self.etcd_member = EtcdMember(self.etcd)
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))
def test_delete_member(self, res): sg = Mock() sg.tags = [{ 'Key': 'aws:cloudformation:stack-name', 'Value': 'etc-cluster' }, { 'Key': 'aws:autoscaling:groupName', 'Value': 'etc-cluster-postgres' }] sg.revoke_ingress.side_effect = Exception res.return_value.security_groups.all.return_value = [sg] member = EtcdMember({ 'id': 'ifoobari7', 'name': 'i-sadfjhg', 'clientURLs': ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_CLIENT_PORT)], 'peerURLs': [ 'http://ip-127-0-0-2.eu-west-1.compute.internal:{}'.format( EtcdMember.DEFAULT_PEER_PORT) ] }) member.peer_urls[0] = member.peer_urls[0].replace('2', '1') self.assertFalse(self.ec2_member.delete_member(member))
def test_delete_member(self): member = 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.assertEqual(self.ec2_member.delete_member(member), False)
def test_add_member(self): member = EtcdMember({ 'id': '', 'name': '', 'clientURLs': [], 'peerURLs': ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)], }) self.assertEqual(self.ec2_member.add_member(member), True) member.addr = '127.0.0.4' self.assertEqual(self.ec2_member.add_member(member), False)
def test_add_member(self): member = EtcdMember({ 'id': '', 'name': '', 'clientURLs': [], 'peerURLs': [ 'http://ip-127-0-0-2.eu-west-1.compute.internal:{}'.format( EtcdMember.DEFAULT_PEER_PORT) ], }) self.assertTrue(self.ec2_member.add_member(member)) member.peer_urls[0] = member.peer_urls[0].replace('2', '4') self.assertFalse(self.ec2_member.add_member(member))
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))
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))