Prevent NFV unit tests from randomly failing

Several unit tests were declaring a table as a class variable.
Depending on the order of the tests, there could be unexpected
data in those tables causing tests to randomly fail.

The change is to make those tables instance variables in the
test classes.

Story: 2004241
Task: 27764
Change-Id: I0157f297f5d2a7a0ab5ada4f58623850cbfb72ff
Signed-off-by: Al Bailey <Al.Bailey@windriver.com>
This commit is contained in:
Al Bailey 2018-11-02 13:09:45 -05:00
parent be64087c7b
commit da24ad07a3
5 changed files with 118 additions and 111 deletions

View File

@ -42,30 +42,30 @@ def fake_event_issue(a, b, c, d):
# nova/tests/unit/virt/libvirt/test_driver.py
class TestInstance(testcase.NFVTestCase):
_tenant_table = Table()
_instance_type_table = InstanceTypeTable()
_image_table = ImageTable()
_instance_table = InstanceTable()
_instance_group_table = InstanceGroupTable()
_host_table = HostTable()
_host_group_table = HostGroupTable()
_host_aggregate_table = HostAggregateTable()
# Don't attempt to write to the database while unit testing
_tenant_table.persist = False
_image_table.persist = False
_instance_type_table.persist = False
_instance_table.persist = False
_instance_group_table.persist = False
_host_table.persist = False
_host_group_table.persist = False
_host_aggregate_table.persist = False
def setUp(self):
"""
Setup for testing.
"""
super(TestInstance, self).setUp()
self._tenant_table = Table()
self._instance_type_table = InstanceTypeTable()
self._image_table = ImageTable()
self._instance_table = InstanceTable()
self._instance_group_table = InstanceGroupTable()
self._host_table = HostTable()
self._host_group_table = HostGroupTable()
self._host_aggregate_table = HostAggregateTable()
# Don't attempt to write to the database while unit testing
self._tenant_table.persist = False
self._image_table.persist = False
self._instance_type_table.persist = False
self._instance_table.persist = False
self._instance_group_table.persist = False
self._host_table.persist = False
self._host_group_table.persist = False
self._host_aggregate_table.persist = False
self.useFixture(fixtures.MonkeyPatch('nfv_vim.tables._tenant_table._tenant_table',
self._tenant_table))
self.useFixture(fixtures.MonkeyPatch('nfv_vim.tables._host_table._host_table',

View File

@ -30,28 +30,29 @@ def fake_timer(a, b, c, d):
class TestInstanceDirector(testcase.NFVTestCase):
_image_table = ImageTable()
_instance_table = Table()
_instance_type_table = Table()
_tenant_table = Table()
# Don't attempt to write to the database while unit testing
_image_table.persist = False
_instance_table.persist = False
_instance_type_table.persist = False
_tenant_table.persist = False
_director = None
def setUp(self):
super(TestInstanceDirector, self).setUp()
self._image_table = ImageTable()
self._instance_table = Table()
self._instance_type_table = Table()
self._tenant_table = Table()
# Don't attempt to write to the database while unit testing
self._image_table.persist = False
self._instance_table.persist = False
self._instance_type_table.persist = False
self._tenant_table.persist = False
self._director = None
self.instance_setup_func()
def tearDown(self):
super(TestInstanceDirector, self).tearDown()
self._tenant_table.clear()
self._image_table.clear()
self._instance_table.clear()
self._instance_type_table.clear()
self._tenant_table.clear()
self._director = None
def create_instance(self, instance_type_name, instance_name, recovery_priority=None):
@ -91,34 +92,33 @@ class TestInstanceDirector(testcase.NFVTestCase):
"""
instance_type_uuid = uuid.uuid4()
if 0 == len(self._instance_type_table):
instance_type = objects.InstanceType(instance_type_uuid, 'small')
instance_type.update_details(vcpus=1, mem_mb=64, disk_gb=1, ephemeral_gb=0,
swap_gb=0, guest_services=None,
auto_recovery=True,
live_migration_timeout=800,
live_migration_max_downtime=500,
storage_type='local_image')
self._instance_type_table[instance_type_uuid] = instance_type
instance_type = objects.InstanceType(instance_type_uuid, 'small')
instance_type.update_details(vcpus=1,
mem_mb=64,
disk_gb=1,
ephemeral_gb=0,
swap_gb=0,
guest_services=None,
auto_recovery=True,
live_migration_timeout=800,
live_migration_max_downtime=500,
storage_type='local_image')
self._instance_type_table[instance_type_uuid] = instance_type
self._instance_table.clear()
if self._director is None:
self._director = InstanceDirector(
max_concurrent_recovering_instances=4,
max_concurrent_migrates_per_host=1,
max_concurrent_evacuates_per_host=1,
recovery_audit_interval=_audit_interval,
recovery_audit_cooldown=_audit_cooldown,
recovery_audit_batch_interval=2,
recovery_cooldown=_recovery_cooldown,
rebuild_timeout=_rebuild_timeout,
reboot_timeout=_reboot_timeout,
migrate_timeout=_migrate_timeout,
single_hypervisor=False,
recovery_threshold=250,
max_throttled_recovering_instances=2
)
self._director = InstanceDirector(
max_concurrent_recovering_instances=4,
max_concurrent_migrates_per_host=1,
max_concurrent_evacuates_per_host=1,
recovery_audit_interval=_audit_interval,
recovery_audit_cooldown=_audit_cooldown,
recovery_audit_batch_interval=2,
recovery_cooldown=_recovery_cooldown,
rebuild_timeout=_rebuild_timeout,
reboot_timeout=_reboot_timeout,
migrate_timeout=_migrate_timeout,
single_hypervisor=False,
recovery_threshold=250,
max_throttled_recovering_instances=2)
@mock.patch('nfv_vim.tables.tables_get_tenant_table')
@mock.patch('nfv_vim.tables.tables_get_instance_type_table')

View File

@ -48,10 +48,10 @@ class TestNFVPluginsK8SNodeTaint(testcase.NFVTestCase):
test_value1 = 'testValue1'
test_key2 = 'testKey2'
test_value2 = 'testValue2'
test_node_repo = {}
def setUp(self):
super(TestNFVPluginsK8SNodeTaint, self).setUp()
self.test_node_repo = {}
self.setup_node_repo(self.test_node_name)
def mock_patch_node(obj, node_name, body):

View File

@ -149,28 +149,28 @@ def fake_event_issue(a, b, c, d):
@mock.patch('nfv_vim.event_log._instance._event_issue', fake_event_issue)
class TestSwPatchStrategy(testcase.NFVTestCase):
_tenant_table = Table()
_instance_type_table = Table()
_instance_table = InstanceTable()
_instance_group_table = InstanceGroupTable()
_host_table = HostTable()
_host_group_table = HostGroupTable()
_host_aggregate_table = HostAggregateTable()
# Don't attempt to write to the database while unit testing
_tenant_table.persist = False
_instance_type_table.persist = False
_instance_table.persist = False
_instance_group_table.persist = False
_host_table.persist = False
_host_group_table.persist = False
_host_aggregate_table.persist = False
def setUp(self):
"""
Setup for testing.
"""
super(TestSwPatchStrategy, self).setUp()
self._tenant_table = Table()
self._instance_type_table = Table()
self._instance_table = InstanceTable()
self._instance_group_table = InstanceGroupTable()
self._host_table = HostTable()
self._host_group_table = HostGroupTable()
self._host_aggregate_table = HostAggregateTable()
# Don't attempt to write to the database while unit testing
self._tenant_table.persist = False
self._instance_type_table.persist = False
self._instance_table.persist = False
self._instance_group_table.persist = False
self._host_table.persist = False
self._host_group_table.persist = False
self._host_aggregate_table.persist = False
self.useFixture(fixtures.MonkeyPatch('nfv_vim.tables._tenant_table._tenant_table',
self._tenant_table))
self.useFixture(fixtures.MonkeyPatch('nfv_vim.tables._host_table._host_table',
@ -187,15 +187,18 @@ class TestSwPatchStrategy(testcase.NFVTestCase):
self._instance_type_table))
instance_type_uuid = str(uuid.uuid4())
if 0 == len(self._instance_type_table):
instance_type = objects.InstanceType(instance_type_uuid, 'small')
instance_type.update_details(vcpus=1, mem_mb=64, disk_gb=1, ephemeral_gb=0,
swap_gb=0, guest_services=None,
auto_recovery=True,
live_migration_timeout=800,
live_migration_max_downtime=500,
storage_type='local_image')
self._instance_type_table[instance_type_uuid] = instance_type
instance_type = objects.InstanceType(instance_type_uuid, 'small')
instance_type.update_details(vcpus=1,
mem_mb=64,
disk_gb=1,
ephemeral_gb=0,
swap_gb=0,
guest_services=None,
auto_recovery=True,
live_migration_timeout=800,
live_migration_max_downtime=500,
storage_type='local_image')
self._instance_type_table[instance_type_uuid] = instance_type
def tearDown(self):
"""

View File

@ -128,25 +128,26 @@ def fake_event_issue(a, b, c, d):
@mock.patch('nfv_vim.objects._sw_update.SwUpdate.save', fake_save)
@mock.patch('nfv_vim.objects._sw_update.timers.timers_create_timer', fake_timer)
class TestSwUpgradeStrategy(testcase.NFVTestCase):
_tenant_table = Table()
_instance_type_table = Table()
_instance_table = InstanceTable()
_instance_group_table = InstanceGroupTable()
_host_table = HostTable()
_host_group_table = HostGroupTable()
_host_aggregate_table = HostAggregateTable()
# Don't attempt to write to the database while unit testing
_tenant_table.persist = False
_instance_type_table.persist = False
_instance_table.persist = False
_instance_group_table.persist = False
_host_table.persist = False
_host_group_table.persist = False
_host_aggregate_table.persist = False
def setUp(self):
super(TestSwUpgradeStrategy, self).setUp()
self._tenant_table = Table()
self._instance_type_table = Table()
self._instance_table = InstanceTable()
self._instance_group_table = InstanceGroupTable()
self._host_table = HostTable()
self._host_group_table = HostGroupTable()
self._host_aggregate_table = HostAggregateTable()
# Don't attempt to write to the database while unit testing
self._tenant_table.persist = False
self._instance_type_table.persist = False
self._instance_table.persist = False
self._instance_group_table.persist = False
self._host_table.persist = False
self._host_group_table.persist = False
self._host_aggregate_table.persist = False
self.useFixture(fixtures.MonkeyPatch('nfv_vim.tables._host_aggregate_table._host_aggregate_table',
self._host_aggregate_table))
self.useFixture(fixtures.MonkeyPatch('nfv_vim.tables._host_group_table._host_group_table',
@ -164,15 +165,18 @@ class TestSwUpgradeStrategy(testcase.NFVTestCase):
instance_type_uuid = str(uuid.uuid4())
if 0 == len(self._instance_type_table):
instance_type = objects.InstanceType(instance_type_uuid, 'small')
instance_type.update_details(vcpus=1, mem_mb=64, disk_gb=1, ephemeral_gb=0,
swap_gb=0, guest_services=None,
auto_recovery=True,
live_migration_timeout=800,
live_migration_max_downtime=500,
storage_type='local_image')
self._instance_type_table[instance_type_uuid] = instance_type
instance_type = objects.InstanceType(instance_type_uuid, 'small')
instance_type.update_details(vcpus=1,
mem_mb=64,
disk_gb=1,
ephemeral_gb=0,
swap_gb=0,
guest_services=None,
auto_recovery=True,
live_migration_timeout=800,
live_migration_max_downtime=500,
storage_type='local_image')
self._instance_type_table[instance_type_uuid] = instance_type
def tearDown(self):
"""