Add WaitForPortCreateEvent in BaseOVSTestCase
When a port is created, the test case will wait until the IDL event
is raised and the port is effectively created and the local DB
cache is updated.
Change-Id: I660baccde67a040731538276fc6dff05a10efb68
Related-Bug: #1910717
(cherry picked from commit e0f15c5982
)
This commit is contained in:
parent
d5e12dacc9
commit
286e73d5a9
|
@ -18,6 +18,7 @@ from unittest import mock
|
|||
|
||||
from neutron_lib.services.qos import constants as qos_constants
|
||||
from oslo_utils import uuidutils
|
||||
from ovsdbapp.backend.ovs_idl import event
|
||||
|
||||
from neutron.agent.common import ovs_lib
|
||||
from neutron.agent.linux import ip_lib
|
||||
|
@ -36,6 +37,17 @@ OTHER_CONFIG_DEFAULT = {'max-rate': str(MAX_RATE_DEFAULT),
|
|||
'min-rate': str(MIN_RATE_DEFAULT)}
|
||||
|
||||
|
||||
class WaitForPortCreateEvent(event.WaitEvent):
|
||||
event_name = 'WaitForPortCreateEvent'
|
||||
|
||||
def __init__(self, port_name):
|
||||
table = 'Port'
|
||||
events = (self.ROW_CREATE,)
|
||||
conditions = (('name', '=', port_name),)
|
||||
super(WaitForPortCreateEvent, self).__init__(
|
||||
events, table, conditions, timeout=5)
|
||||
|
||||
|
||||
class BaseOVSTestCase(base.BaseSudoTestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
@ -110,8 +122,11 @@ class BaseOVSTestCase(base.BaseSudoTestCase):
|
|||
self.elements_to_clean['bridges'].append(self.br_name)
|
||||
|
||||
def _create_port(self, port_name):
|
||||
row_event = WaitForPortCreateEvent(port_name)
|
||||
self.ovs.ovsdb.idl.notify_handler.watch_event(row_event)
|
||||
self.ovs.ovsdb.add_port(self.br_name, port_name).execute(
|
||||
check_error=True)
|
||||
self.assertTrue(row_event.wait())
|
||||
|
||||
def _find_port_uuid(self, port_name):
|
||||
return self.ovs.ovsdb.db_get('Port', port_name, '_uuid').execute()
|
||||
|
|
Loading…
Reference in New Issue