Merge "negative cases for router interface"
diff --git a/neutron_tempest_plugin/api/test_ports.py b/neutron_tempest_plugin/api/test_ports.py
index 8867eee..c59ee83 100644
--- a/neutron_tempest_plugin/api/test_ports.py
+++ b/neutron_tempest_plugin/api/test_ports.py
@@ -136,28 +136,6 @@
expected = [s['id'], s['id']]
self.assertEqual(expected, subnets)
- @decorators.idempotent_id('9700828d-86eb-4f21-9fa3-da487a2d77f2')
- @utils.requires_ext(extension="uplink-status-propagation",
- service="network")
- def test_create_port_with_propagate_uplink_status(self):
- body = self.create_port(self.network, propagate_uplink_status=True)
- self.assertTrue(body['propagate_uplink_status'])
- body = self.client.list_ports(id=body['id'])['ports'][0]
- self.assertTrue(body['propagate_uplink_status'])
- body = self.client.show_port(body['id'])['port']
- self.assertTrue(body['propagate_uplink_status'])
-
- @decorators.idempotent_id('c396a880-0c7b-409d-a80b-800a3d09bdc4')
- @utils.requires_ext(extension="uplink-status-propagation",
- service="network")
- def test_create_port_without_propagate_uplink_status(self):
- body = self.create_port(self.network)
- self.assertFalse(body['propagate_uplink_status'])
- body = self.client.list_ports(id=body['id'])['ports'][0]
- self.assertFalse(body['propagate_uplink_status'])
- body = self.client.show_port(body['id'])['port']
- self.assertFalse(body['propagate_uplink_status'])
-
class PortsSearchCriteriaTest(base.BaseSearchCriteriaTest):
diff --git a/neutron_tempest_plugin/api/test_security_groups.py b/neutron_tempest_plugin/api/test_security_groups.py
index dd1597c..afce414 100644
--- a/neutron_tempest_plugin/api/test_security_groups.py
+++ b/neutron_tempest_plugin/api/test_security_groups.py
@@ -538,3 +538,32 @@
# make sure the rbac-policy is invisible to the tenant for which it's
# being shared
self.assertFalse(self.client.list_rbac_policies()['rbac_policies'])
+
+
+class SecGroupSearchCriteriaTest(base.BaseSearchCriteriaTest):
+
+ required_extensions = ['security-group']
+ resource = 'security-group'
+
+ @classmethod
+ def resource_setup(cls):
+ super(SecGroupSearchCriteriaTest, cls).resource_setup()
+ cls.security_group = cls.create_security_group()
+ for name in cls.resource_names:
+ cls.create_security_group(name=name)
+
+ @decorators.idempotent_id('0064aa80-8a29-442d-a8de-9101af8210fa')
+ def test_list_sorts_by_name_asc(self):
+ self._test_list_sorts_asc()
+
+ @decorators.idempotent_id('35e86832-53cd-4e63-97ec-31a2413da591')
+ def test_list_sorts_by_name_desc(self):
+ self._test_list_sorts_desc()
+
+ @decorators.idempotent_id('b9654cdc-80bc-43f8-844e-dfe88fd2f125')
+ def test_list_pagination(self):
+ self._test_list_pagination()
+
+ @decorators.idempotent_id('5c78bd57-e6e9-4e71-a05c-9c4082a3f139')
+ def test_list_no_pagination_limit_0(self):
+ self._test_list_no_pagination_limit_0()
diff --git a/neutron_tempest_plugin/neutron_dynamic_routing/api/test_bgp_speaker_extensions.py b/neutron_tempest_plugin/neutron_dynamic_routing/api/test_bgp_speaker_extensions.py
index 6720c22..5cdd524 100644
--- a/neutron_tempest_plugin/neutron_dynamic_routing/api/test_bgp_speaker_extensions.py
+++ b/neutron_tempest_plugin/neutron_dynamic_routing/api/test_bgp_speaker_extensions.py
@@ -26,29 +26,8 @@
CONF = config.CONF
-def _setup_client_args(auth_provider):
- """Set up ServiceClient arguments using config settings. """
- service = CONF.network.catalog_type or 'network'
- region = CONF.network.region or 'regionOne'
- endpoint_type = CONF.network.endpoint_type
- build_interval = CONF.network.build_interval
- build_timeout = CONF.network.build_timeout
-
- # The disable_ssl appears in identity
- disable_ssl_certificate_validation = (
- CONF.identity.disable_ssl_certificate_validation)
- ca_certs = CONF.identity.ca_certificates_file
-
- # Trace in debug section
- trace_requests = CONF.debug.trace_requests
-
- return [auth_provider, service, region, endpoint_type,
- build_interval, build_timeout,
- disable_ssl_certificate_validation, ca_certs,
- trace_requests]
-
-
class BgpSpeakerTestJSONBase(base.BaseAdminNetworkTest):
+ credentials = ['primary', 'admin']
default_bgp_speaker_args = {'local_as': '1234',
'ip_version': 4,
@@ -65,18 +44,20 @@
super(BgpSpeakerTestJSONBase, self).setUp()
@classmethod
- def _setup_bgp_admin_client(cls):
- mgr = cls.get_client_manager(credential_type='admin')
- auth_provider = mgr.auth_provider
- client_args = _setup_client_args(auth_provider)
- cls.bgp_adm_client = bgp_client.BgpSpeakerClientJSON(*client_args)
+ def setup_clients(cls):
+ super(BgpSpeakerTestJSONBase, cls).setup_clients()
+ cls.bgp_client = cls.os_primary.bgp_client
+ cls.bgp_adm_client = cls.os_admin.bgp_client
@classmethod
- def _setup_bgp_non_admin_client(cls):
- mgr = cls.get_client_manager()
- auth_provider = mgr.auth_provider
- client_args = _setup_client_args(auth_provider)
- cls.bgp_client = bgp_client.BgpSpeakerClientJSON(*client_args)
+ def get_client_manager(cls, credential_type=None, roles=None,
+ force_new=None):
+ manager = super(BgpSpeakerTestJSONBase, cls).get_client_manager(
+ credential_type=credential_type,
+ roles=roles,
+ force_new=force_new
+ )
+ return bgp_client.Manager(manager.credentials)
@classmethod
def resource_setup(cls):
@@ -89,8 +70,6 @@
cls.admin_floatingips = []
cls.admin_routers = []
cls.ext_net_id = CONF.network.public_network_id
- cls._setup_bgp_admin_client()
- cls._setup_bgp_non_admin_client()
@classmethod
def resource_cleanup(cls):
diff --git a/neutron_tempest_plugin/scenario/base.py b/neutron_tempest_plugin/scenario/base.py
index 9223893..78b766b 100644
--- a/neutron_tempest_plugin/scenario/base.py
+++ b/neutron_tempest_plugin/scenario/base.py
@@ -302,7 +302,8 @@
def _check_remote_connectivity(self, source, dest, count,
should_succeed=True,
nic=None, mtu=None, fragmentation=True,
- timeout=None, pattern=None):
+ timeout=None, pattern=None,
+ forbid_packet_loss=False):
"""check ping server via source ssh connection
:param source: RemoteClient: an ssh connection from which to ping
@@ -314,6 +315,7 @@
:param fragmentation: Flag for packet fragmentation
:param timeout: Timeout for all ping packet(s) to succeed
:param pattern: hex digits included in ICMP messages
+ :param forbid_packet_loss: forbid or allow some lost packets
:returns: boolean -- should_succeed == ping
:returns: ping is false if ping failed
"""
@@ -352,6 +354,10 @@
return not should_succeed
LOG.debug('ping result: %s', result)
+ if forbid_packet_loss and ' 0% packet loss' not in result:
+ LOG.debug('Packet loss detected')
+ return not should_succeed
+
if validators.validate_ip_address(dest) is None:
# Assert that the return traffic was from the correct
# source address.
@@ -366,12 +372,13 @@
nic=None, mtu=None, fragmentation=True,
servers=None, timeout=None,
ping_count=CONF.validation.ping_count,
- pattern=None):
+ pattern=None, forbid_packet_loss=False):
try:
self.assertTrue(self._check_remote_connectivity(
source, dest, ping_count, should_succeed, nic, mtu,
fragmentation,
- timeout=timeout, pattern=pattern))
+ timeout=timeout, pattern=pattern,
+ forbid_packet_loss=forbid_packet_loss))
except lib_exc.SSHTimeout as ssh_e:
LOG.debug(ssh_e)
self._log_console_output(servers)
diff --git a/neutron_tempest_plugin/services/bgp/bgp_client.py b/neutron_tempest_plugin/services/bgp/bgp_client.py
index ae51427..7d46e29 100644
--- a/neutron_tempest_plugin/services/bgp/bgp_client.py
+++ b/neutron_tempest_plugin/services/bgp/bgp_client.py
@@ -15,6 +15,25 @@
from oslo_serialization import jsonutils
from tempest.lib.common import rest_client
+from neutron_tempest_plugin.api import clients as manager
+from neutron_tempest_plugin import config
+
+
+CONF = config.CONF
+
+
+class Manager(manager.Manager):
+ def __init__(self, credentials=None, service=None):
+ super(Manager, self).__init__(credentials, service)
+ self.bgp_client = BgpSpeakerClientJSON(
+ self.auth_provider,
+ CONF.network.catalog_type,
+ CONF.network.region or CONF.identity.region,
+ endpoint_type=CONF.network.endpoint_type,
+ build_interval=CONF.network.build_interval,
+ build_timeout=CONF.network.build_timeout,
+ **self.default_params)
+
class BgpSpeakerClientJSON(rest_client.RestClient):
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index 3086d6c..db4d6e1 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -27,7 +27,6 @@
check:
jobs:
- neutron-tempest-plugin-api-queens
- - neutron-tempest-plugin-dvr-multinode-scenario-queens
- neutron-tempest-plugin-scenario-linuxbridge-queens
- neutron-tempest-plugin-scenario-openvswitch-queens
gate: