Use "OVNMechDriver" instance in "TestOvn[Nb|Sb]IdlNotifyHandler"

The test classes "TestOvn[Nb|Sb]IdlNotifyHandler" now use the
"OVNMechDriver" instance to create the "OvnNbIdl" instance, that
is stored in "self.mech_driver", instead of "self.driver".

Closes-Bug: #1990374
Change-Id: Ieef6c8a02ca0cf85bc72b9f7d09b46dbd0e073be
This commit is contained in:
Rodolfo Alonso Hernandez 2022-09-21 12:08:13 +02:00
parent cd2c5be839
commit e9b5a27001
1 changed files with 46 additions and 34 deletions

View File

@ -378,11 +378,14 @@ class TestOvnNbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
super(TestOvnNbIdlNotifyHandler, self).setUp()
helper = ovs_idl.SchemaHelper(schema_json=OVN_NB_SCHEMA)
helper.register_all()
self.idl = ovsdb_monitor.OvnNbIdl(self.driver, "remote", helper)
self.idl = ovsdb_monitor.OvnNbIdl(self.mech_driver, "remote", helper)
self.lp_table = self.idl.tables.get('Logical_Switch_Port')
self.driver.set_port_status_up = mock.Mock()
self.driver.set_port_status_down = mock.Mock()
self.mech_driver.set_port_status_up = mock.Mock()
self.mech_driver.set_port_status_down = mock.Mock()
mock.patch.object(self.idl, 'handle_db_schema_changes').start()
self._mock_hash_ring = mock.patch.object(
self.idl._hash_ring, 'get_node', return_value=self.idl._node_uuid)
self._mock_hash_ring.start()
def _test_lsp_helper(self, event, new_row_json, old_row_json=None,
table=None):
@ -405,32 +408,33 @@ class TestOvnNbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
def test_lsp_up_create_event(self):
row_data = {"up": True, "name": "foo-name"}
self._test_lsp_helper('create', row_data)
self.driver.set_port_status_up.assert_called_once_with("foo-name")
self.assertFalse(self.driver.set_port_status_down.called)
self.mech_driver.set_port_status_up.assert_called_once_with("foo-name")
self.assertFalse(self.mech_driver.set_port_status_down.called)
def test_lsp_down_create_event(self):
row_data = {"up": False, "name": "foo-name"}
self._test_lsp_helper('create', row_data)
self.driver.set_port_status_down.assert_called_once_with("foo-name")
self.assertFalse(self.driver.set_port_status_up.called)
self.mech_driver.set_port_status_down.assert_called_once_with(
"foo-name")
self.assertFalse(self.mech_driver.set_port_status_up.called)
def test_lsp_up_not_set_event(self):
row_data = {"up": ['set', []], "name": "foo-name"}
self._test_lsp_helper('create', row_data)
self.assertFalse(self.driver.set_port_status_up.called)
self.assertFalse(self.driver.set_port_status_down.called)
self.assertFalse(self.mech_driver.set_port_status_up.called)
self.assertFalse(self.mech_driver.set_port_status_down.called)
def test_unwatch_logical_switch_port_create_events(self):
self.idl.unwatch_logical_switch_port_create_events()
row_data = {"up": True, "name": "foo-name"}
self._test_lsp_helper('create', row_data)
self.assertFalse(self.driver.set_port_status_up.called)
self.assertFalse(self.driver.set_port_status_down.called)
self.assertFalse(self.mech_driver.set_port_status_up.called)
self.assertFalse(self.mech_driver.set_port_status_down.called)
row_data["up"] = False
self._test_lsp_helper('create', row_data)
self.assertFalse(self.driver.set_port_status_up.called)
self.assertFalse(self.driver.set_port_status_down.called)
self.assertFalse(self.mech_driver.set_port_status_up.called)
self.assertFalse(self.mech_driver.set_port_status_down.called)
def test_post_connect(self):
self.idl.post_connect()
@ -442,30 +446,31 @@ class TestOvnNbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
old_row_json = {"up": False}
self._test_lsp_helper('update', new_row_json,
old_row_json=old_row_json)
self.driver.set_port_status_up.assert_called_once_with("foo-name")
self.assertFalse(self.driver.set_port_status_down.called)
self.mech_driver.set_port_status_up.assert_called_once_with("foo-name")
self.assertFalse(self.mech_driver.set_port_status_down.called)
def test_lsp_down_update_event(self):
new_row_json = {"up": False, "name": "foo-name"}
old_row_json = {"up": True}
self._test_lsp_helper('update', new_row_json,
old_row_json=old_row_json)
self.driver.set_port_status_down.assert_called_once_with("foo-name")
self.assertFalse(self.driver.set_port_status_up.called)
self.mech_driver.set_port_status_down.assert_called_once_with(
"foo-name")
self.assertFalse(self.mech_driver.set_port_status_up.called)
def test_lsp_up_update_event_no_old_data(self):
new_row_json = {"up": True, "name": "foo-name"}
self._test_lsp_helper('update', new_row_json,
old_row_json=None)
self.assertFalse(self.driver.set_port_status_up.called)
self.assertFalse(self.driver.set_port_status_down.called)
self.assertFalse(self.mech_driver.set_port_status_up.called)
self.assertFalse(self.mech_driver.set_port_status_down.called)
def test_lsp_down_update_event_no_old_data(self):
new_row_json = {"up": False, "name": "foo-name"}
self._test_lsp_helper('update', new_row_json,
old_row_json=None)
self.assertFalse(self.driver.set_port_status_up.called)
self.assertFalse(self.driver.set_port_status_down.called)
self.assertFalse(self.mech_driver.set_port_status_up.called)
self.assertFalse(self.mech_driver.set_port_status_down.called)
def test_lsp_other_column_update_event(self):
new_row_json = {"up": False, "name": "foo-name",
@ -473,20 +478,22 @@ class TestOvnNbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
old_row_json = {"addresses": ["10.0.0.3"]}
self._test_lsp_helper('update', new_row_json,
old_row_json=old_row_json)
self.assertFalse(self.driver.set_port_status_up.called)
self.assertFalse(self.driver.set_port_status_down.called)
self.assertFalse(self.mech_driver.set_port_status_up.called)
self.assertFalse(self.mech_driver.set_port_status_down.called)
def test_notify_other_table(self):
new_row_json = {"name": "foo-name"}
self._test_lsp_helper('create', new_row_json,
table=self.idl.tables.get("Logical_Switch"))
self.assertFalse(self.driver.set_port_status_up.called)
self.assertFalse(self.driver.set_port_status_down.called)
self.assertFalse(self.mech_driver.set_port_status_up.called)
self.assertFalse(self.mech_driver.set_port_status_down.called)
@mock.patch.object(hash_ring_manager.HashRingManager, 'get_node')
def test_notify_different_target_node(self, mock_get_node):
self._mock_hash_ring.stop()
mock_get_node.return_value = 'this-is-a-different-node'
row = fakes.FakeOvsdbRow.create_one_ovsdb_row()
row._table = mock.Mock(name='table-name')
self.idl.notify_handler.notify = mock.Mock()
self.idl.notify("create", row)
# Assert that if the target_node returned by the ring is different
@ -504,10 +511,11 @@ class TestOvnSbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
sb_helper = ovs_idl.SchemaHelper(schema_json=OVN_SB_SCHEMA)
sb_helper.register_table('Chassis')
self.driver.agent_chassis_table = 'Chassis'
self.sb_idl = ovsdb_monitor.OvnSbIdl(self.driver, "remote", sb_helper)
self.sb_idl = ovsdb_monitor.OvnSbIdl(self.mech_driver, "remote",
sb_helper)
self.sb_idl.post_connect()
self.chassis_table = self.sb_idl.tables.get('Chassis')
self.driver.update_segment_host_mapping = mock.Mock()
self.mech_driver.update_segment_host_mapping = mock.Mock()
self.l3_plugin = directory.get_plugin(n_const.L3)
self.l3_plugin.schedule_unhosted_gateways = mock.Mock()
@ -517,6 +525,10 @@ class TestOvnSbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
"external_ids": ['map', [["ovn-bridge-mappings",
"fake-phynet1:fake-br1"]]]
}
self._mock_hash_ring = mock.patch.object(
self.sb_idl._hash_ring, 'get_node',
return_value=self.sb_idl._node_uuid)
self._mock_hash_ring.start()
def _test_chassis_helper(self, event, new_row_json, old_row_json=None):
row_uuid = uuidutils.generate_uuid()
@ -535,14 +547,14 @@ class TestOvnSbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
def test_chassis_create_event(self):
self._test_chassis_helper('create', self.row_json)
self.driver.update_segment_host_mapping.assert_called_once_with(
self.mech_driver.update_segment_host_mapping.assert_called_once_with(
'fake-hostname', ['fake-phynet1'])
self.l3_plugin.schedule_unhosted_gateways.assert_called_once_with(
event_from_chassis=None)
def test_chassis_delete_event(self):
self._test_chassis_helper('delete', self.row_json)
self.driver.update_segment_host_mapping.assert_called_once_with(
self.mech_driver.update_segment_host_mapping.assert_called_once_with(
'fake-hostname', [])
self.l3_plugin.schedule_unhosted_gateways.assert_called_once_with(
event_from_chassis='fake-name')
@ -552,7 +564,7 @@ class TestOvnSbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
old_row_json['external_ids'][1][0][1] = (
"fake-phynet2:fake-br2")
self._test_chassis_helper('update', self.row_json, old_row_json)
self.driver.update_segment_host_mapping.assert_called_once_with(
self.mech_driver.update_segment_host_mapping.assert_called_once_with(
'fake-hostname', ['fake-phynet1'])
self.l3_plugin.schedule_unhosted_gateways.assert_called_once_with(
event_from_chassis=None)
@ -563,7 +575,7 @@ class TestOvnSbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
old_row_json['external_ids'][1][1][1] = (
"foo_value")
self._test_chassis_helper('update', self.row_json, old_row_json)
self.driver.update_segment_host_mapping.assert_not_called()
self.mech_driver.update_segment_host_mapping.assert_not_called()
self.l3_plugin.schedule_unhosted_gateways.assert_not_called()
def test_chassis_update_event_reschedule_lost_physnet(self):
@ -577,7 +589,7 @@ class TestOvnSbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
old_row_json = copy.deepcopy(self.row_json)
self.row_json['external_ids'][1][0][1] += ',foo_physnet:foo_br'
self._test_chassis_helper('update', self.row_json, old_row_json)
self.driver.update_segment_host_mapping.assert_called_once_with(
self.mech_driver.update_segment_host_mapping.assert_called_once_with(
'fake-hostname', ['fake-phynet1', 'foo_physnet'])
self.l3_plugin.schedule_unhosted_gateways.assert_called_once_with(
event_from_chassis=None)
@ -586,7 +598,7 @@ class TestOvnSbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
old_row_json = copy.deepcopy(self.row_json)
self.row_json['external_ids'][1][0][1] = 'foo_physnet:foo_br'
self._test_chassis_helper('update', self.row_json, old_row_json)
self.driver.update_segment_host_mapping.assert_called_once_with(
self.mech_driver.update_segment_host_mapping.assert_called_once_with(
'fake-hostname', ['foo_physnet'])
self.l3_plugin.schedule_unhosted_gateways.assert_called_once_with(
event_from_chassis=None)
@ -599,7 +611,7 @@ class TestOvnSbIdlNotifyHandler(test_mech_driver.OVNMechanismDriverTestCase):
'ovsdb_monitor.ChassisEvent.'
'handle_ha_chassis_group_changes') as mock_ha:
self._test_chassis_helper('update', self.row_json, old_row_json)
self.driver.update_segment_host_mapping.assert_not_called()
self.mech_driver.update_segment_host_mapping.assert_not_called()
self.l3_plugin.schedule_unhosted_gateways.assert_not_called()
mock_ha.assert_not_called()