[Fullstack] Wait until min QoS and Queue registers are set in DB

Wait until the minimum bandwidth Qos and Queue registers are set in
the OVS DB. In case of error, log the QoS and Queue registers present
at this moment.

Change-Id: Ifb2f731d7d04e237d4e47ba486169348684c8b78
Related-Bug: #1737892
This commit is contained in:
Rodolfo Alonso Hernandez 2020-02-14 16:11:28 +00:00
parent f71b6b361e
commit f5c5755100
1 changed files with 23 additions and 8 deletions

View File

@ -682,15 +682,30 @@ class TestMinBwQoSOvs(_TestMinBwQoS, base.BaseFullStackTestCase):
# NOTE(ralonsoh): the "_min_bw_qos_id" in vm.bridge is not the same as
# the ID in the agent br_int instance. We need first to find the QoS
# register and the Queue assigned to vm.neutron_port['id']
queue = vm.bridge._find_queue(vm.neutron_port['id'])
queue_num = int(queue['external_ids']['queue-num'])
qoses = vm.bridge._list_qos()
for qos in qoses:
qos_queue = qos['queues'].get(queue_num)
if qos_queue and qos_queue.uuid == queue['_uuid']:
return qos, qos_queue
data = {'qos': None, 'qos_queue': None, 'queue_num': None}
self.fail('QoS register not found with queue-num %s' % queue_num)
def check_qos_and_queue():
queue = vm.bridge._find_queue(vm.neutron_port['id'])
data['queue_num'] = int(queue['external_ids']['queue-num'])
qoses = vm.bridge._list_qos()
for qos in qoses:
qos_queue = qos['queues'].get(data['queue_num'])
if qos_queue and qos_queue.uuid == queue['_uuid']:
data['qos'] = qos
data['qos_queue'] = qos_queue
return True
try:
utils.wait_until_true(check_qos_and_queue, timeout=10)
return data['qos'], data['qos_queue']
except utils.WaitTimeout:
qoses = vm.bridge._list_qos()
queues = vm.bridge._list_queues()
queuenum = ('QoS register not found with queue-num %s' %
data['queue_num'])
qoses = '\nList of OVS QoS registers:\n%s' % '\n'.join(qoses)
queues = '\nList of OVS Queue registers:\n%s' % '\n'.join(queues)
self.fail(queuenum + qoses + queues)
def test_min_bw_qos_port_removed(self):
"""Test if min BW limit config is properly removed when port removed.