Merge "Use StableObjectJsonFixture from o.vo"
This commit is contained in:
+2
-1
@@ -40,6 +40,7 @@ from oslo_log.fixture import logging_error as log_fixture
|
||||
from oslo_log import log as logging
|
||||
from oslo_serialization import jsonutils
|
||||
from oslo_utils import timeutils
|
||||
from oslo_versionedobjects import fixture as ovo_fixture
|
||||
from oslotest import moxstubout
|
||||
import six
|
||||
import testtools
|
||||
@@ -229,7 +230,7 @@ class TestCase(testtools.TestCase):
|
||||
objects_base.NovaObjectRegistry._registry._obj_classes)
|
||||
self.addCleanup(self._restore_obj_registry)
|
||||
|
||||
self.useFixture(nova_fixtures.StableObjectJsonFixture())
|
||||
self.useFixture(ovo_fixture.StableObjectJsonFixture())
|
||||
|
||||
# NOTE(mnaser): All calls to utils.is_neutron() are cached in
|
||||
# nova.utils._IS_NEUTRON. We set it to None to avoid any
|
||||
|
||||
@@ -605,34 +605,6 @@ class BannedDBSchemaOperations(fixtures.Fixture):
|
||||
lambda *a, **k: self._explode(thing, 'alter')))
|
||||
|
||||
|
||||
class StableObjectJsonFixture(fixtures.Fixture):
|
||||
"""Fixture that makes sure we get stable JSON object representations.
|
||||
|
||||
Since objects contain things like set(), which can't be converted to
|
||||
JSON, we have some situations where the representation isn't fully
|
||||
deterministic. This doesn't matter at all at runtime, but does to
|
||||
unit tests that try to assert things at a low level.
|
||||
|
||||
This fixture mocks the obj_to_primitive() call and makes sure to
|
||||
sort the list of changed fields (which came from a set) before
|
||||
returning it to the caller.
|
||||
"""
|
||||
def __init__(self):
|
||||
self._original_otp = obj_base.NovaObject.obj_to_primitive
|
||||
|
||||
def setUp(self):
|
||||
super(StableObjectJsonFixture, self).setUp()
|
||||
|
||||
def _doit(obj, *args, **kwargs):
|
||||
result = self._original_otp(obj, *args, **kwargs)
|
||||
if 'nova_object.changes' in result:
|
||||
result['nova_object.changes'].sort()
|
||||
return result
|
||||
|
||||
self.useFixture(fixtures.MonkeyPatch(
|
||||
'nova.objects.base.NovaObject.obj_to_primitive', _doit))
|
||||
|
||||
|
||||
class EngineFacadeFixture(fixtures.Fixture):
|
||||
"""Fixture to isolation EngineFacade during tests.
|
||||
|
||||
|
||||
@@ -423,20 +423,6 @@ class TestBannedDBSchemaOperations(testtools.TestCase):
|
||||
table.alter)
|
||||
|
||||
|
||||
class TestStableObjectJsonFixture(testtools.TestCase):
|
||||
def test_changes_sort(self):
|
||||
class TestObject(obj_base.NovaObject):
|
||||
def obj_what_changed(self):
|
||||
return ['z', 'a']
|
||||
|
||||
obj = TestObject()
|
||||
self.assertEqual(['z', 'a'],
|
||||
obj.obj_to_primitive()['nova_object.changes'])
|
||||
with fixtures.StableObjectJsonFixture():
|
||||
self.assertEqual(['a', 'z'],
|
||||
obj.obj_to_primitive()['nova_object.changes'])
|
||||
|
||||
|
||||
class TestAllServicesCurrentFixture(testtools.TestCase):
|
||||
@mock.patch('nova.objects.Service._db_service_get_minimum_version')
|
||||
def test_services_current(self, mock_db):
|
||||
|
||||
Reference in New Issue
Block a user