def test_delete(self): pool = fake_objs.FakePool('TCP', 'LEAST_CONNECTIONS') pool.members = [fake_objs.FakeMember()] pool.health_monitors_status = [{'monitor_id': 'hm1', "pools": [pool]}] self.a.pool.neutron.openstack_driver._pool_get_hm.return_value = fake_objs.FakeHM( ) self._test_delete(pool) (self.a.last_client.slb.service_group.delete.assert_called_with( pool['id']))
def test_create(self): admin_states = [True, False] persistences = [None, 'SOURCE_IP', 'HTTP_COOKIE', 'APP_COOKIE'] protocols = ['TCP', 'UDP', 'HTTP', 'HTTPS'] lb = fake_objs.FakeLoadBalancer() for a in admin_states: for pers in persistences: for p in protocols: self.a.reset_mocks() pool = fake_objs.FakePool(p, 'ROUND_ROBIN', pers) m = fake_objs.FakeListener(p, 2222, pool=pool, loadbalancer=lb) pool.listener = m saw_exception = False try: self.a.listener.create(None, m) except a10_ex.UnsupportedFeature as e: if pers == 'APP_COOKIE': saw_exception = True else: raise e self.print_mocks() if not saw_exception: s = str(self.a.last_client.mock_calls) self.assertTrue('vport.create' in s) self.assertTrue('fake-lb-id-001' in s) self.assertTrue('fake-listen-id-001' in s) self.assertTrue('port=2222' in s) test_prot = p if p in ('HTTPS', constants.PROTOCOL_TERMINATED_HTTPS): test_prot = 'TCP' self.assertTrue(test_prot in s) if pers == 'SOURCE_IP': self.assertTrue('s_pers_name=None' not in s) pass elif pers == 'HTTP_COOKIE': self.assertTrue('s_pers=HTTP_COOKIE') self.assertTrue('c_pers_name=None' not in s) pass elif pers == 'APP_COOKIE': self.assertTrue('s_pers=APP_COOKIE') self.assertTrue('c_pers_name=None' not in s) pass else: self.assertTrue('c_pers_name=None' in s) self.assertTrue('s_pers_name=None' in s)
def test_delete_no_db_delete_use_database_false(self): pool = fake_objs.FakePool('TCP', 'ROUND_ROBIN', None) lb = fake_objs.FakeLoadBalancer() m = fake_objs.FakeListener('TCP', 2222, pool=pool, loadbalancer=lb) binding = fake_objs.FakeCertificateBinding(listener_id=m.id) pool.listener = m bindings = [binding] get_bindings_mock = mock.Mock(return_value=bindings) self.a.listener.cert_db.get_bindings_for_listener = get_bindings_mock self.a.listener.delete(None, m) expected = self.a.listener.cert_db.delete_a10_certificate_binding.call_count self.assertEqual(expected, 0)
def test_create_vport_expressions_noname(self): get_expr_mock = mock.MagicMock() get_expr_mock.return_value = {} self.a.config.get_vport_expressions = get_expr_mock p = 'TCP' lb = fake_objs.FakeLoadBalancer() pool = fake_objs.FakePool(p, 'ROUND_ROBIN', None) m = fake_objs.FakeListener(p, 2222, pool=pool, loadbalancer=lb) m.name = None handler = self.a.listener handler.create(None, m)
def test_dissociate_calls_hm_delete(self): fake_pool = fake_objs.FakePool() fake_hm = fake_objs.FakeHM('HTTP') fake_pool.health_monitor_status = [{"monitor_id": fake_hm.id}] fake_hm.id = "id1" fake_hm.pools = [] fake_hm.pools.append(fake_pool) fake_hm.tenant_id = "tenv1" self.a.hm.dissociate(self.a.last_client, None, fake_hm, fake_pool.id) self.a.last_client.hm.service_group.delete.assert_called( self.a.hm._meta_name(fake_hm))
def test_delete(self): expected = fake_objs.FakePool() fakehm = fake_objs.FakeHM('HTTP') fakehm.tenant_id = 'tenv1' fakehm.id = 'fedcba' fakehm.pools.append(expected) self.a.hm.openstack_driver.plugin.get_pool.return_value = expected self.a.hm.openstack_driver._hm_binding_count.return_value = 1 self.a.hm.delete(None, fakehm, 'p01') self.a.last_client.slb.hm.delete.assert_called_with(fakehm.id)
def _test_create_expressions(self, os_name, pattern, expressions=None): self.a.config.get_service_group_expressions = self._get_expressions_mock expressions = expressions or self.a.config.get_service_group_expressions( ) expected = expressions.get(pattern, {}).get("json", None) or "" p = 'TCP' m = fake_objs.FakePool(p, 'ROUND_ROBIN', None) m.name = os_name handler = self.a.pool handler.create(None, m) s = str(self.a.last_client.mock_calls) self.assertIn("service_group.create", s) self.assertIn(str(expected), s)
def test_barbican_client_not_null(self, certmgr): """This tests that the barbican_client dependency is always there.""" handler = self.a.listener pool = fake_objs.FakePool(constants.PROTOCOL_TERMINATED_HTTPS, constants.LB_METHOD_ROUND_ROBIN, None) lb = fake_objs.FakeLoadBalancer() m = fake_objs.FakeListener(constants.PROTOCOL_TERMINATED_HTTPS, 2222, pool=pool, loadbalancer=lb) pool.listener = m handler.create(None, m) self.assertTrue(handler.barbican_client is not None)
def test_create_vport_defaults_global(self): expected = self.a.config.get_vport_defaults() p = 'TCP' lb = fake_objs.FakeLoadBalancer() pool = fake_objs.FakePool(p, 'ROUND_ROBIN', None) m = fake_objs.FakeListener(p, 2222, pool=pool, loadbalancer=lb) handler = self.a.listener handler.create(None, m) self.print_mocks() s = str(self.a.last_client.mock_calls) self.assertIn("vport.create", s) self.assertIn(str(expected), s)
def test_delete(self): pool = fake_objs.FakePool('HTTP', 'ROUND_ROBIN', None) lb = fake_objs.FakeLoadBalancer() m = fake_objs.FakeListener('HTTP', 2222, pool=pool, loadbalancer=lb) pool.listener = m self.a.listener.delete(None, m) self.print_mocks() s = str(self.a.last_client.mock_calls) self.assertTrue('vport.delete' in s) self.assertTrue('fake-lb-id-001' in s) self.assertTrue('fake-listen-id-001' in s) self.assertTrue('port=2222' in s) self.assertTrue('HTTP' in s)
def test_create_empty_name_noexception(self): self.a.config.get_service_group_expressions = self._get_expressions_mock expressions = self.a.config.get_service_group_expressions() expected = expressions["beginning"] p = 'TCP' m = fake_objs.FakePool(p, 'ROUND_ROBIN', None) m.name = None handler = self.a.pool handler.create(None, m) s = str(self.a.last_client.mock_calls) self.assertIn("service_group.create", s) self.assertNotIn(str(expected), s)
def _test_create_expressions(self, os_name, pattern, expressions=None): self.a.config.get_vport_expressions = self._get_expressions_mock expressions = expressions or self.a.config.get_vport_expressions() expected = expressions.get(pattern, {}).get("json", {}) p = 'TCP' lb = fake_objs.FakeLoadBalancer() pool = fake_objs.FakePool(p, 'ROUND_ROBIN', None) m = fake_objs.FakeListener(p, 2222, pool=pool, loadbalancer=lb) m.name = os_name handler = self.a.listener handler.create(None, m) s = str(self.a.last_client.mock_calls) self.assertIn("vport.create", s) self.assertIn(str(expected), s)
def test_create_vport_expressions_nomatch(self): self.a.config.get_vport_expressions = self._get_expressions_mock expressions = self.a.config.get_vport_expressions() expected = expressions[self.EXPR_BEGIN].get("json", {}) p = 'TCP' lb = fake_objs.FakeLoadBalancer() pool = fake_objs.FakePool(p, 'ROUND_ROBIN', None) m = fake_objs.FakeListener(p, 2222, pool=pool, loadbalancer=lb) m.name = "insecurelistener" handler = self.a.listener handler.create(None, m) s = str(self.a.last_client.mock_calls) self.assertIn("vport.create", s) self.assertNotIn(str(expected), s)
def _test_create_ipinip(self, api_ver="3.0", ip_in_ip=False): for k, v in self.a.config.devices.items(): v['ipinip'] = ip_in_ip v['api_version'] = api_ver p = 'TCP' lb = fake_objs.FakeLoadBalancer() pool = fake_objs.FakePool(p, 'ROUND_ROBIN', None) m = fake_objs.FakeListener(p, 2222, pool=pool, loadbalancer=lb) self.a.listener.create(None, m) self.print_mocks() s = str(self.a.last_client.mock_calls) self.assertIn("vport.create", s) self.assertIn("ipinip=%s" % ip_in_ip, s)
def test_create_protocol_terminated_https(self): pool = fake_objs.FakePool(constants.PROTOCOL_TERMINATED_HTTPS, constants.LB_METHOD_ROUND_ROBIN, None) lb = fake_objs.FakeLoadBalancer() m = fake_objs.FakeListener(constants.PROTOCOL_TERMINATED_HTTPS, 2222, pool=pool, loadbalancer=lb) m.default_tls_container_id = "CONTAINERID" pool.listener = m certmgr = FakeCertManager() self.a.barbican_client = certmgr self.a.listener.create(None, m) s = str(self.a.last_client.mock_calls) self.assertTrue('HTTPS' in s)
def _tls_container_shared(self): certmgr = FakeCertManager() certmgr.certificate = "CERTDATA" certmgr.private_key = "PRIVATEKEY" certmgr.private_key_passphrase = "SECRETPASSWORD" self.a.barbican_client = certmgr handler = self.a.listener pool = fake_objs.FakePool(constants.PROTOCOL_TERMINATED_HTTPS, constants.LB_METHOD_ROUND_ROBIN, None) lb = fake_objs.FakeLoadBalancer() m = fake_objs.FakeListener(constants.PROTOCOL_TERMINATED_HTTPS, 2222, pool=pool, loadbalancer=lb) return (certmgr, m, pool, handler)
def test_delete_updates_pool_health_monitor(self): expected = fake_objs.FakePool() fakehm = fake_objs.FakeHM('HTTP') fakehm.tenant_id = 'tenv1' fakehm.id = 'fedcba' fakehm.pools = [] fakehm.pools.append(expected) self.a.hm.openstack_driver._pool_get_hm.return_value = fakehm self.a.hm.openstack_driver.plugin.get_pool.return_value = expected self.a.hm.openstack_driver._hm_binding_count.return_value = 1 pool_name = self.a.hm._pool_name(None, 'p01') self.a.hm.delete(None, fakehm, 'p01') self.a.last_client.slb.service_group.update.assert_called_with( pool_name, health_monitor='', health_check_disable=True)
def test_delete(self): pool = fake_objs.FakePool(constants.PROTOCOL_TERMINATED_HTTPS, constants.LB_METHOD_ROUND_ROBIN, None) lb = fake_objs.FakeLoadBalancer() m = fake_objs.FakeListener(constants.PROTOCOL_TERMINATED_HTTPS, 2222, pool=pool, loadbalancer=lb) pool.listener = m self.a.listener.delete(None, m) self.print_mocks() s = str(self.a.last_client.mock_calls) LOG.debug("DELETE RESULT %s" % s) self.assertTrue('vport.delete' in s) self.assertTrue('fake-lb-id-001' in s) self.assertTrue('fake-listen-id-001' in s) self.assertTrue('port=2222' in s) self.assertTrue('HTTPS' in s)
def _test_create_source_nat_pool(self, source_nat_pool): if source_nat_pool: for k, v in self.a.config.devices.items(): v['source_nat_pool'] = source_nat_pool p = 'TCP' lb = fake_objs.FakeLoadBalancer() pool = fake_objs.FakePool(p, 'ROUND_ROBIN', None) m = fake_objs.FakeListener(p, 2222, pool=pool, loadbalancer=lb) self.a.listener.create(None, m) self.print_mocks() s = str(self.a.last_client.mock_calls) self.assertIn("vport.create", s) if source_nat_pool: expected = "source_nat_pool='{0}'".format(source_nat_pool) self.assertIn(expected, s) else: self.assertIn("source_nat_pool=None", s)
def test_update(self): pool = fake_objs.FakePool(constants.PROTOCOL_TERMINATED_HTTPS, constants.LB_METHOD_ROUND_ROBIN, None) lb = fake_objs.FakeLoadBalancer() m = fake_objs.FakeListener(constants.PROTOCOL_TERMINATED_HTTPS, 2222, pool=pool, loadbalancer=lb) certmgr = FakeCertManager() self.a.barbican_client = certmgr # self.a.listener.set_certmgr(certmgr) pool.listener = m self.a.listener.update(None, m, m) self.print_mocks() s = str(self.a.last_client.mock_calls) self.assertTrue('vport.update' in s) self.assertTrue('fake-lb-id-001' in s) self.assertTrue('fake-listen-id-001' in s) self.assertTrue('port=2222' in s) self.assertTrue('HTTPS' in s)
def _test_stats(self): pool = fake_objs.FakePool('TCP', 'ROUND_ROBIN', None, False) actual = self.a.pool.stats(None, pool) return pool, actual
def test_update(self): old_pool = fake_objs.FakePool('TCP', 'LEAST_CONNECTIONS') pool = fake_objs.FakePool('TCP', 'ROUND_ROBIN') self.a.pool.update(None, old_pool, pool) self.print_mocks() self.a.last_client.slb.service_group.update.assert_called()
def test_delete_removes_monitor(self): pool = fake_objs.FakePool('TCP', 'LEAST_CONNECTIONS') pool.members = [fake_objs.FakeMember()] pool.health_monitors_status = [{'monitor_id': "hm1"}] self.a.pool.delete(None, pool) self.a.last_client.slb.hm.delete.assert_called()