def setUp(self): RackspaceLBDriver.connectionCls.conn_classes = (None, RackspaceLBMockHttp) RackspaceLBMockHttp.type = None self.driver = RackspaceLBDriver('user', 'key')
class RackspaceLBTests(unittest.TestCase): def setUp(self): RackspaceLBDriver.connectionCls.conn_classes = (None, RackspaceLBMockHttp) RackspaceLBMockHttp.type = None self.driver = RackspaceLBDriver('user', 'key') def test_list_protocols(self): protocols = self.driver.list_protocols() self.assertEqual(len(protocols), 10) self.assertTrue('http' in protocols) def test_list_balancers(self): balancers = self.driver.list_balancers() self.assertEquals(len(balancers), 2) self.assertEquals(balancers[0].name, "test0") self.assertEquals(balancers[0].id, "8155") self.assertEquals(balancers[1].name, "test1") self.assertEquals(balancers[1].id, "8156") def test_create_balancer(self): balancer = self.driver.create_balancer( name='test2', port=80, algorithm=Algorithm.ROUND_ROBIN, members=(Member(None, '10.1.0.10', 80), Member(None, '10.1.0.11', 80))) self.assertEquals(balancer.name, 'test2') self.assertEquals(balancer.id, '8290') def test_destroy_balancer(self): balancer = self.driver.list_balancers()[0] ret = self.driver.destroy_balancer(balancer) self.assertTrue(ret) def test_get_balancer(self): balancer = self.driver.get_balancer(balancer_id='8290') self.assertEquals(balancer.name, 'test2') self.assertEquals(balancer.id, '8290') def test_balancer_list_members(self): balancer = self.driver.get_balancer(balancer_id='8290') members = balancer.list_members() self.assertEquals(len(members), 2) self.assertEquals( set(['10.1.0.10:80', '10.1.0.11:80']), set(["%s:%s" % (member.ip, member.port) for member in members])) def test_balancer_attach_member(self): balancer = self.driver.get_balancer(balancer_id='8290') member = balancer.attach_member(Member(None, ip='10.1.0.12', port='80')) self.assertEquals(member.ip, '10.1.0.12') self.assertEquals(member.port, 80) def test_balancer_detach_member(self): balancer = self.driver.get_balancer(balancer_id='8290') member = balancer.list_members()[0] ret = balancer.detach_member(member) self.assertTrue(ret)
class RackspaceLBTests(unittest.TestCase): def setUp(self): RackspaceLBDriver.connectionCls.conn_classes = (None, RackspaceLBMockHttp) RackspaceLBMockHttp.type = None self.driver = RackspaceLBDriver('user', 'key') self.driver.connection.poll_interval = 0.0 def test_list_protocols(self): protocols = self.driver.list_protocols() self.assertEqual(len(protocols), 10) self.assertTrue('http' in protocols) def test_list_supported_algorithms(self): algorithms = self.driver.list_supported_algorithms() self.assertTrue(Algorithm.RANDOM in algorithms) self.assertTrue(Algorithm.ROUND_ROBIN in algorithms) self.assertTrue(Algorithm.LEAST_CONNECTIONS in algorithms) self.assertTrue(Algorithm.WEIGHTED_ROUND_ROBIN in algorithms) self.assertTrue(Algorithm.WEIGHTED_LEAST_CONNECTIONS in algorithms) def test_ex_list_algorithms(self): algorithms = self.driver.ex_list_algorithm_names() self.assertTrue("RANDOM" in algorithms) self.assertTrue("ROUND_ROBIN" in algorithms) self.assertTrue("LEAST_CONNECTIONS" in algorithms) self.assertTrue("WEIGHTED_ROUND_ROBIN" in algorithms) self.assertTrue("WEIGHTED_LEAST_CONNECTIONS" in algorithms) def test_list_balancers(self): balancers = self.driver.list_balancers() self.assertEquals(len(balancers), 2) self.assertEquals(balancers[0].name, "test0") self.assertEquals(balancers[0].id, "8155") self.assertEquals(balancers[0].port, 80) self.assertEquals(balancers[0].ip, "1.1.1.25") self.assertEquals(balancers[1].name, "test1") self.assertEquals(balancers[1].id, "8156") def test_list_balancers_ex_member_address(self): RackspaceLBMockHttp.type = 'EX_MEMBER_ADDRESS' balancers = self.driver.list_balancers(ex_member_address='127.0.0.1') self.assertEquals(len(balancers), 3) self.assertEquals(balancers[0].name, "First Loadbalancer") self.assertEquals(balancers[0].id, "1") self.assertEquals(balancers[1].name, "Second Loadbalancer") self.assertEquals(balancers[1].id, "2") self.assertEquals(balancers[2].name, "Third Loadbalancer") self.assertEquals(balancers[2].id, "8") def test_create_balancer(self): balancer = self.driver.create_balancer( name='test2', port=80, algorithm=Algorithm.ROUND_ROBIN, members=(Member(None, '10.1.0.10', 80), Member(None, '10.1.0.11', 80))) self.assertEquals(balancer.name, 'test2') self.assertEquals(balancer.id, '8290') def test_destroy_balancer(self): balancer = self.driver.list_balancers()[0] ret = self.driver.destroy_balancer(balancer) self.assertTrue(ret) def test_get_balancer(self): balancer = self.driver.get_balancer(balancer_id='8290') self.assertEquals(balancer.name, 'test2') self.assertEquals(balancer.id, '8290') def test_get_balancer_extra_public_vips(self): balancer = self.driver.get_balancer(balancer_id='18940') self.assertEquals(balancer.extra["publicVips"], ['50.56.49.149']) def test_get_balancer_extra_private_vips(self): balancer = self.driver.get_balancer(balancer_id='18941') self.assertEquals(balancer.extra["privateVips"], ['10.183.252.175']) def test_get_balancer_extra_private_vips_empty(self): balancer = self.driver.get_balancer(balancer_id='18945') self.assertEquals(balancer.extra['privateVips'], []) def test_get_balancer_extra_public_source_ipv4(self): balancer = self.driver.get_balancer(balancer_id='18940') self.assertEquals(balancer.extra["ipv4PublicSource"], '184.106.100.25') def test_get_balancer_extra_public_source_ipv6(self): balancer = self.driver.get_balancer(balancer_id='18940') self.assertEquals(balancer.extra["ipv6PublicSource"], '2001:4801:7901::6/64') def test_get_balancer_extra_private_source_ipv4(self): balancer = self.driver.get_balancer(balancer_id='18940') self.assertEquals(balancer.extra["ipv4PrivateSource"], '10.183.252.25') def test_get_balancer_extra_members(self): balancer = self.driver.get_balancer(balancer_id='8290') members = balancer.extra['members'] self.assertEquals(3, len(members)) self.assertEquals('10.1.0.11', members[0].ip) self.assertEquals('10.1.0.10', members[1].ip) self.assertEquals('10.1.0.9', members[2].ip) def test_get_balancer_extra_created(self): balancer = self.driver.get_balancer(balancer_id='8290') created_8290 = datetime.datetime(2011, 4, 7, 16, 27, 50) self.assertEquals(created_8290, balancer.extra['created']) def test_get_balancer_extra_updated(self): balancer = self.driver.get_balancer(balancer_id='8290') updated_8290 = datetime.datetime(2011, 4, 7, 16, 28, 12) self.assertEquals(updated_8290, balancer.extra['updated']) def test_get_balancer_algorithm(self): balancer = self.driver.get_balancer(balancer_id='8290') self.assertEquals(balancer.extra["algorithm"], Algorithm.RANDOM) def test_get_balancer_protocol(self): balancer = self.driver.get_balancer(balancer_id='94695') self.assertEquals(balancer.extra['protocol'], 'HTTP') def test_get_balancer_weighted_round_robin_algorithm(self): balancer = self.driver.get_balancer(balancer_id='94692') self.assertEquals(balancer.extra["algorithm"], Algorithm.WEIGHTED_ROUND_ROBIN) def test_get_balancer_weighted_least_connections_algorithm(self): balancer = self.driver.get_balancer(balancer_id='94693') self.assertEquals(balancer.extra["algorithm"], Algorithm.WEIGHTED_LEAST_CONNECTIONS) def test_get_balancer_unknown_algorithm(self): balancer = self.driver.get_balancer(balancer_id='94694') self.assertFalse('algorithm' in balancer.extra) def test_get_balancer_connect_health_monitor(self): balancer = self.driver.get_balancer(balancer_id='94695') balancer_health_monitor = balancer.extra["healthMonitor"] self.assertEquals(balancer_health_monitor.type, "CONNECT") self.assertEquals(balancer_health_monitor.delay, 10) self.assertEquals(balancer_health_monitor.timeout, 5) self.assertEquals(balancer_health_monitor.attempts_before_deactivation, 2) def test_get_balancer_http_health_monitor(self): balancer = self.driver.get_balancer(balancer_id='94696') balancer_health_monitor = balancer.extra["healthMonitor"] self.assertEquals(balancer_health_monitor.type, "HTTP") self.assertEquals(balancer_health_monitor.delay, 10) self.assertEquals(balancer_health_monitor.timeout, 5) self.assertEquals(balancer_health_monitor.attempts_before_deactivation, 2) self.assertEquals(balancer_health_monitor.path, "/") self.assertEquals(balancer_health_monitor.status_regex, "^[234][0-9][0-9]$") self.assertEquals(balancer_health_monitor.body_regex, "Hello World!") def test_get_balancer_https_health_monitor(self): balancer = self.driver.get_balancer(balancer_id='94697') balancer_health_monitor = balancer.extra["healthMonitor"] self.assertEquals(balancer_health_monitor.type, "HTTPS") self.assertEquals(balancer_health_monitor.delay, 15) self.assertEquals(balancer_health_monitor.timeout, 12) self.assertEquals(balancer_health_monitor.attempts_before_deactivation, 5) self.assertEquals(balancer_health_monitor.path, "/test") self.assertEquals(balancer_health_monitor.status_regex, "^[234][0-9][0-9]$") self.assertEquals(balancer_health_monitor.body_regex, "abcdef") def test_get_balancer_connection_throttle(self): balancer = self.driver.get_balancer(balancer_id='94695') balancer_connection_throttle = balancer.extra["connectionThrottle"] self.assertEquals(balancer_connection_throttle.min_connections, 50) self.assertEquals(balancer_connection_throttle.max_connections, 200) self.assertEquals(balancer_connection_throttle.max_connection_rate, 50) self.assertEquals(balancer_connection_throttle.rate_interval_seconds, 10) def test_get_session_persistence(self): balancer = self.driver.get_balancer(balancer_id='94695') self.assertEquals(balancer.extra["sessionPersistenceType"], "HTTP_COOKIE") def test_get_connection_logging(self): balancer = self.driver.get_balancer(balancer_id='94695') self.assertEquals(balancer.extra["connectionLoggingEnabled"], True) def test_get_error_page(self): balancer = self.driver.get_balancer(balancer_id='18940') error_page = self.driver.ex_get_balancer_error_page(balancer) self.assertTrue("The service is temporarily unavailable" in error_page) def test_get_access_list(self): balancer = self.driver.get_balancer(balancer_id='18940') deny_rule, allow_rule = self.driver.ex_balancer_access_list(balancer) self.assertEquals(deny_rule.id, 2883) self.assertEquals(deny_rule.rule_type, RackspaceAccessRuleType.DENY) self.assertEquals(deny_rule.address, "0.0.0.0/0") self.assertEquals(allow_rule.id, 2884) self.assertEquals(allow_rule.address, "2001:4801:7901::6/64") self.assertEquals(allow_rule.rule_type, RackspaceAccessRuleType.ALLOW) def test_balancer_list_members(self): expected = set(['10.1.0.10:80', '10.1.0.11:80', '10.1.0.9:8080']) balancer = self.driver.get_balancer(balancer_id='8290') members = balancer.list_members() self.assertEquals(len(members), 3) self.assertEquals( expected, set(["%s:%s" % (member.ip, member.port) for member in members])) def test_balancer_members_extra_weight(self): balancer = self.driver.get_balancer(balancer_id='8290') members = balancer.list_members() self.assertEquals(12, members[0].extra['weight']) self.assertEquals(8, members[1].extra['weight']) def test_balancer_members_extra_condition(self): balancer = self.driver.get_balancer(balancer_id='8290') members = balancer.list_members() self.assertEquals(MemberCondition.ENABLED, members[0].extra['condition']) self.assertEquals(MemberCondition.DISABLED, members[1].extra['condition']) self.assertEquals(MemberCondition.DRAINING, members[2].extra['condition']) def test_balancer_members_extra_status(self): balancer = self.driver.get_balancer(balancer_id='8290') members = balancer.list_members() self.assertEquals('ONLINE', members[0].extra['status']) self.assertEquals('OFFLINE', members[1].extra['status']) self.assertEquals('DRAINING', members[2].extra['status']) def test_balancer_attach_member(self): balancer = self.driver.get_balancer(balancer_id='8290') member = balancer.attach_member(Member(None, ip='10.1.0.12', port='80')) self.assertEquals(member.ip, '10.1.0.12') self.assertEquals(member.port, 80) def test_balancer_detach_member(self): balancer = self.driver.get_balancer(balancer_id='8290') member = balancer.list_members()[0] ret = balancer.detach_member(member) self.assertTrue(ret) def test_update_balancer_protocol(self): balancer = LoadBalancer(id='3130', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) updated_balancer = self.driver.update_balancer(balancer, protocol='HTTPS') self.assertEqual('HTTPS', updated_balancer.extra['protocol']) def test_update_balancer_port(self): balancer = LoadBalancer(id='3131', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) updated_balancer = self.driver.update_balancer(balancer, port=1337) self.assertEqual(1337, updated_balancer.port) def test_update_balancer_name(self): balancer = LoadBalancer(id='3132', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) updated_balancer = self.driver.update_balancer(balancer, name='new_lb_name') self.assertEqual('new_lb_name', updated_balancer.name) def test_update_balancer_algorithm(self): balancer = LoadBalancer(id='3133', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) updated_balancer = self.driver.update_balancer( balancer, algorithm=Algorithm.ROUND_ROBIN) self.assertEqual(Algorithm.ROUND_ROBIN, updated_balancer.extra['algorithm']) def test_update_balancer_bad_algorithm_exception(self): balancer = LoadBalancer(id='3134', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) try: self.driver.update_balancer(balancer, algorithm='HAVE_MERCY_ON_OUR_SERVERS') except LibcloudError: pass else: self.fail( 'Should have thrown an exception with bad algorithm value') def test_ex_update_balancer_no_poll_protocol(self): balancer = LoadBalancer(id='3130', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) action_succeeded = self.driver.ex_update_balancer_no_poll( balancer, protocol='HTTPS') self.assertTrue(action_succeeded) def test_ex_update_balancer_no_poll_port(self): balancer = LoadBalancer(id='3131', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) action_succeeded = self.driver.ex_update_balancer_no_poll(balancer, port=1337) self.assertTrue(action_succeeded) def test_ex_update_balancer_no_poll_name(self): balancer = LoadBalancer(id='3132', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) action_succeeded = self.driver.ex_update_balancer_no_poll( balancer, name='new_lb_name') self.assertTrue(action_succeeded) def test_ex_update_balancer_no_poll_algorithm(self): balancer = LoadBalancer(id='3133', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) action_succeeded = self.driver.ex_update_balancer_no_poll( balancer, algorithm=Algorithm.ROUND_ROBIN) self.assertTrue(action_succeeded) def test_ex_update_balancer_no_poll_bad_algorithm_exception(self): balancer = LoadBalancer(id='3134', name='LB_update', state='PENDING_UPDATE', ip='10.34.4.3', port=80, driver=self.driver) try: self.driver.update_balancer(balancer, algorithm='HAVE_MERCY_ON_OUR_SERVERS') except LibcloudError: pass else: self.fail('Should have thrown exception with bad algorithm value')
class RackspaceLBTests(unittest.TestCase): def setUp(self): RackspaceLBDriver.connectionCls.conn_classes = (None, RackspaceLBMockHttp) RackspaceLBMockHttp.type = None self.driver = RackspaceLBDriver('user', 'key') def test_list_protocols(self): protocols = self.driver.list_protocols() self.assertEqual(len(protocols), 10) self.assertTrue('http' in protocols) def test_list_balancers(self): balancers = self.driver.list_balancers() self.assertEquals(len(balancers), 2) self.assertEquals(balancers[0].name, "test0") self.assertEquals(balancers[0].id, "8155") self.assertEquals(balancers[1].name, "test1") self.assertEquals(balancers[1].id, "8156") def test_create_balancer(self): balancer = self.driver.create_balancer(name='test2', port=80, algorithm=Algorithm.ROUND_ROBIN, members=(Member(None, '10.1.0.10', 80), Member(None, '10.1.0.11', 80)) ) self.assertEquals(balancer.name, 'test2') self.assertEquals(balancer.id, '8290') def test_destroy_balancer(self): balancer = self.driver.list_balancers()[0] ret = self.driver.destroy_balancer(balancer) self.assertTrue(ret) def test_get_balancer(self): balancer = self.driver.get_balancer(balancer_id='8290') self.assertEquals(balancer.name, 'test2') self.assertEquals(balancer.id, '8290') def test_balancer_list_members(self): balancer = self.driver.get_balancer(balancer_id='8290') members = balancer.list_members() self.assertEquals(len(members), 2) self.assertEquals(set(['10.1.0.10:80', '10.1.0.11:80']), set(["%s:%s" % (member.ip, member.port) for member in members])) def test_balancer_attach_member(self): balancer = self.driver.get_balancer(balancer_id='8290') member = balancer.attach_member(Member(None, ip='10.1.0.12', port='80')) self.assertEquals(member.ip, '10.1.0.12') self.assertEquals(member.port, 80) def test_balancer_detach_member(self): balancer = self.driver.get_balancer(balancer_id='8290') member = balancer.list_members()[0] ret = balancer.detach_member(member) self.assertTrue(ret)