[WiP] Add negative tests for VIF attach/detach operations

Add tests:
  test_vif_already_attached_on_internal_info
  test_vif_already_attached_with_portgroups
  test_vif_attach_no_free_port

Change-Id: I657fbecd37ceec424da6182507f324b653288857
This commit is contained in:
Kyrylo Romanenko 2024-01-19 05:24:44 +04:00
parent 227a519fc9
commit 81c1182b95
1 changed files with 82 additions and 0 deletions

View File

@ -413,6 +413,88 @@ class TestNodesVif(base.BaseBaremetalTest):
self.client.vif_detach(self.node['uuid'], self.nport_id)
@decorators.attr(type='negative')
@decorators.idempotent_id('628350f8-4498-4204-b546-f3c01b93c7e3')
def test_vif_already_attached_on_internal_info(self):
"""Negative test for duplicated attachment/detachment of VIFs.
Test steps:
1) Create chassis and node in setUp.
2) Create port for the node.
3) Attach VIF to the node.
4) Try to attach the same VIF to the node.
5) Detach VIF from the node.
6) Try to detach the same VIF from the node.
"""
self.useFixture(
api_microversion_fixture.APIMicroversionFixture('1.28'))
_, self.port = self.create_port(self.node['uuid'],
data_utils.rand_mac_address())
self.client.vif_attach(self.node['uuid'], self.nport_id)
_, body = self.client.vif_list(self.node['uuid'])
self.assertEqual({'vifs': [{'id': self.nport_id}]}, body)
self.assertRaises(lib_exc.Conflict, self.client.vif_attach,
self.node['uuid'], self.nport_id)
self.client.vif_detach(self.node['uuid'], self.nport_id)
self.assertRaises(lib_exc.BadRequest, self.client.vif_detach,
self.node['uuid'], self.nport_id)
@decorators.attr(type='negative')
@decorators.idempotent_id('ec0c14a4-6853-4907-9091-755c9c6c152f')
def test_vif_already_attached_with_portgroups(self):
"""Negative test: try duplicated attachment of VIFs with port groups.
Test steps:
1) Create chassis and node in setUp.
2) Create port for the node.
3) Create port group for the node.
4) Plug port into port group.
5) Attach VIF to the node.
6) Try to attach the same VIF to the node.
7) Check that VIF was not attached to port when portgroup is busy.
8) Detach VIF from the node.
9) Check there is no VIF data in port group internal info.
"""
_, self.port = self.create_port(self.node['uuid'],
data_utils.rand_mac_address())
_, self.portgroup = self.create_portgroup(
self.node['uuid'], address=data_utils.rand_mac_address())
patch = [{'path': '/portgroup_uuid',
'op': 'add',
'value': self.portgroup['uuid']}]
self.client.update_port(self.port['uuid'], patch)
self.client.vif_attach(self.node['uuid'], self.nport_id)
self.assertRaises(lib_exc.Conflict, self.client.vif_attach,
self.node['uuid'], self.nport_id)
_, port = self.client.show_port(self.port['uuid'])
self.assertNotIn('tenant_vif_port_id', port['internal_info'])
self.client.vif_detach(self.node['uuid'], self.nport_id)
_, portgroup = self.client.show_portgroup(self.portgroup['uuid'])
self.assertNotIn('tenant_vif_port_id', portgroup['internal_info'])
@decorators.attr(type='negative')
@decorators.idempotent_id('91e08d6a-0438-4171-b404-bc86b0bc8861')
def test_vif_attach_no_free_port(self):
"""Negative test for VIF attachment attempt with no free ports.
Test steps:
1) Create chassis and node in setUp.
2) Create port for the node.
3) Attach VIF to the node.
4) Try to attach new VIF to the same node with port.
5) Check that VIF still attached with original port.
"""
_, self.port = self.create_port(self.node['uuid'],
data_utils.rand_mac_address())
self.client.vif_attach(self.node['uuid'], self.nport_id)
self.assertRaises(lib_exc.BadRequest, self.client.vif_attach,
self.node['uuid'], 'test-vif-new')
_, port = self.client.show_port(self.port['uuid'])
self.assertEqual(self.nport_id,
port['internal_info']['tenant_vif_port_id'])
class TestHardwareInterfaces(base.BaseBaremetalTest):