Use StableObjectJsonFixture from o.vo

StableObjectJsonFixture has been in o.vo since the 1.9.0
release and we require >=1.13.0 in g-r now, so we should
use the fixture from the library rather than keep a
duplicate in nova.

This is also needed to use o.vo 1.17.0 which has change
39a057becc10d1cfb5a5d5024bfcbbe6db1b56be that breaks the
fixture's erroneous unit test.

Change-Id: Idd0e02a1c19300c3ab7a57cbacb78d1f07037843
Closes-Bug: #1618115
This commit is contained in:
Matt Riedemann 2016-08-29 11:52:10 -04:00
parent bc344458e7
commit aeb15371ea
3 changed files with 2 additions and 43 deletions

View File

@ -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

View File

@ -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.

View File

@ -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):