Merge "Followup to Ic78a3b5d092aa9a6fd8343a856ef188dafe70b49" into mcp/caracal
diff --git a/neutron_tempest_plugin/api/admin/test_quotas.py b/neutron_tempest_plugin/api/admin/test_quotas.py
index eb47fa5..8d96695 100644
--- a/neutron_tempest_plugin/api/admin/test_quotas.py
+++ b/neutron_tempest_plugin/api/admin/test_quotas.py
@@ -12,6 +12,7 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
+import time
from tempest.common import utils
from tempest.lib import decorators
@@ -50,6 +51,8 @@
def _create_network(self, project_id):
network = self.create_network(client=self.admin_client,
tenant_id=project_id)
+ # Give some time to setup internal ports
+ time.sleep(CONF.neutron_plugin_options.internal_port_setup_delay)
self.addCleanup(self.admin_client.delete_network,
network['id'])
return network
diff --git a/neutron_tempest_plugin/api/base.py b/neutron_tempest_plugin/api/base.py
index 77f3f68..0897c35 100644
--- a/neutron_tempest_plugin/api/base.py
+++ b/neutron_tempest_plugin/api/base.py
@@ -1470,6 +1470,10 @@
def _extract_resources(cls, body):
return body[cls.plural_name]
+ @classmethod
+ def _test_resources(cls, resources):
+ return [res for res in resources if res["name"] in cls.resource_names]
+
def _test_list_sorts(self, direction):
sort_args = {
'sort_dir': direction,
@@ -1521,11 +1525,12 @@
'sort_key': self.field
}
body = self.list_method(**sort_args)
- expected_resources = self._extract_resources(body)
+ total_resources = self._extract_resources(body)
+ expected_resources = self._test_resources(total_resources)
self.assertNotEmpty(expected_resources)
resources = lister(
- len(expected_resources), sort_args
+ len(total_resources), sort_args
)
# finally, compare that the list retrieved in one go is identical to
@@ -1543,9 +1548,11 @@
pagination_args['marker'] = resources[-1]['id']
body = self.list_method(**pagination_args)
resources_ = self._extract_resources(body)
- self.assertEqual(1, len(resources_))
+ # Empty resource list can be returned when any concurrent
+ # tests delete them
+ self.assertGreaterEqual(1, len(resources_))
resources.extend(resources_)
- return resources
+ return self._test_resources(resources)
@_require_pagination
@_require_sorting
@@ -1568,8 +1575,10 @@
self.plural_name, uri
)
resources_ = self._extract_resources(body)
- self.assertEqual(1, len(resources_))
- resources.extend(resources_)
+ # Empty resource list can be returned when any concurrent
+ # tests delete them
+ self.assertGreaterEqual(1, len(resources_))
+ resources.extend(self._test_resources(resources_))
# The last element is empty and does not contain 'next' link
uri = self.get_bare_url(prev_links['next'])
@@ -1586,8 +1595,10 @@
self.plural_name, uri
)
resources_ = self._extract_resources(body)
- self.assertEqual(1, len(resources_))
- resources2.extend(resources_)
+ # Empty resource list can be returned when any concurrent
+ # tests delete them
+ self.assertGreaterEqual(1, len(resources_))
+ resources2.extend(self._test_resources(resources_))
self.assertSameOrder(resources, reversed(resources2))
@@ -1607,14 +1618,15 @@
'sort_key': self.field,
}
body = self.list_method(**pagination_args)
- expected_resources = self._extract_resources(body)
+ total_resources = self._extract_resources(body)
+ expected_resources = self._test_resources(total_resources)
page_size = 2
pagination_args['limit'] = page_size
prev_links = {}
resources = []
- num_resources = len(expected_resources)
+ num_resources = len(total_resources)
niterations = int(math.ceil(float(num_resources) / page_size))
for i in range(niterations):
if prev_links:
@@ -1626,7 +1638,7 @@
prev_links, body = self.list_client.get_uri_with_links(
self.plural_name, uri
)
- resources_ = self._extract_resources(body)
+ resources_ = self._test_resources(self._extract_resources(body))
self.assertGreaterEqual(page_size, len(resources_))
resources.extend(reversed(resources_))
diff --git a/neutron_tempest_plugin/config.py b/neutron_tempest_plugin/config.py
index 3f8ccd5..016299b 100644
--- a/neutron_tempest_plugin/config.py
+++ b/neutron_tempest_plugin/config.py
@@ -151,6 +151,10 @@
cfg.BoolOpt('bgp_schedule_speakers_to_agents',
default=False,
help='Schedule BGP speakers to agents explicitly.'),
+ cfg.IntOpt('internal_port_setup_delay',
+ default=5,
+ help='Number of seconds to wait after network create to '
+ 'setup internal ports.'),
]
# TODO(amuller): Redo configuration options registration as part of the planned