Cleanup in test_objects.py
In watcher/tests/objects/test_objects.py, there is a class called "_TestObject(object)" which is probably an older test class. This test class runs never (as the name starts with "_" and inherits from object), and has some really old test, like test_orphaned_object method, which is testing an exception that doesn't exist at the current codebase. Change-Id: I7559a004e8c136a206fc1cf7ac330c7d4157f94f Closes-Bug: #1544685
This commit is contained in:
@@ -20,8 +20,6 @@ import netaddr
|
|||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from watcher.common import context as watcher_context
|
|
||||||
from watcher.common import exception
|
|
||||||
from watcher.objects import base
|
from watcher.objects import base
|
||||||
from watcher.objects import utils
|
from watcher.objects import utils
|
||||||
from watcher.tests import base as test_base
|
from watcher.tests import base as test_base
|
||||||
@@ -202,279 +200,6 @@ class TestUtils(test_base.TestCase):
|
|||||||
base.obj_to_primitive(mylist))
|
base.obj_to_primitive(mylist))
|
||||||
|
|
||||||
|
|
||||||
class _TestObject(object):
|
|
||||||
def test_hydration_type_error(self):
|
|
||||||
primitive = {'watcher_object.name': 'MyObj',
|
|
||||||
'watcher_object.namespace': 'watcher',
|
|
||||||
'watcher_object.version': '1.5',
|
|
||||||
'watcher_object.data': {'foo': 'a'}}
|
|
||||||
self.assertRaises(ValueError, MyObj.obj_from_primitive, primitive)
|
|
||||||
|
|
||||||
def test_hydration(self):
|
|
||||||
primitive = {'watcher_object.name': 'MyObj',
|
|
||||||
'watcher_object.namespace': 'watcher',
|
|
||||||
'watcher_object.version': '1.5',
|
|
||||||
'watcher_object.data': {'foo': 1}}
|
|
||||||
obj = MyObj.obj_from_primitive(primitive)
|
|
||||||
self.assertEqual(1, obj.foo)
|
|
||||||
|
|
||||||
def test_hydration_bad_ns(self):
|
|
||||||
primitive = {'watcher_object.name': 'MyObj',
|
|
||||||
'watcher_object.namespace': 'foo',
|
|
||||||
'watcher_object.version': '1.5',
|
|
||||||
'watcher_object.data': {'foo': 1}}
|
|
||||||
self.assertRaises(exception.UnsupportedObjectError,
|
|
||||||
MyObj.obj_from_primitive, primitive)
|
|
||||||
|
|
||||||
def test_dehydration(self):
|
|
||||||
expected = {'watcher_object.name': 'MyObj',
|
|
||||||
'watcher_object.namespace': 'watcher',
|
|
||||||
'watcher_object.version': '1.5',
|
|
||||||
'watcher_object.data': {'foo': 1}}
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
obj.foo = 1
|
|
||||||
obj.obj_reset_changes()
|
|
||||||
self.assertEqual(expected, obj.obj_to_primitive())
|
|
||||||
|
|
||||||
def test_get_updates(self):
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
self.assertEqual({}, obj.obj_get_changes())
|
|
||||||
obj.foo = 123
|
|
||||||
self.assertEqual({'foo': 123}, obj.obj_get_changes())
|
|
||||||
obj.bar = 'test'
|
|
||||||
self.assertEqual({'foo': 123, 'bar': 'test'}, obj.obj_get_changes())
|
|
||||||
obj.obj_reset_changes()
|
|
||||||
self.assertEqual({}, obj.obj_get_changes())
|
|
||||||
|
|
||||||
def test_object_property(self):
|
|
||||||
obj = MyObj(self.context, foo=1)
|
|
||||||
self.assertEqual(1, obj.foo)
|
|
||||||
|
|
||||||
def test_object_property_type_error(self):
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
|
|
||||||
def fail():
|
|
||||||
obj.foo = 'a'
|
|
||||||
self.assertRaises(ValueError, fail)
|
|
||||||
|
|
||||||
def test_object_dict_syntax(self):
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
obj.foo = 123
|
|
||||||
obj.bar = 'bar'
|
|
||||||
self.assertEqual(123, obj['foo'])
|
|
||||||
self.assertEqual([('bar', 'bar'), ('foo', 123)],
|
|
||||||
sorted(obj.items(), key=lambda x: x[0]))
|
|
||||||
self.assertEqual([('bar', 'bar'), ('foo', 123)],
|
|
||||||
sorted(list(obj.items()), key=lambda x: x[0]))
|
|
||||||
|
|
||||||
def test_load(self):
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
self.assertEqual('loaded!', obj.bar)
|
|
||||||
|
|
||||||
def test_load_in_base(self):
|
|
||||||
class Foo(base.WatcherObject):
|
|
||||||
fields = {'foobar': int}
|
|
||||||
obj = Foo(self.context)
|
|
||||||
# NOTE(danms): Can't use assertRaisesRegexp() because of py26
|
|
||||||
raised = False
|
|
||||||
try:
|
|
||||||
obj.foobar
|
|
||||||
except NotImplementedError as ex:
|
|
||||||
raised = True
|
|
||||||
self.assertTrue(raised)
|
|
||||||
self.assertTrue('foobar' in str(ex))
|
|
||||||
|
|
||||||
def test_loaded_in_primitive(self):
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
obj.foo = 1
|
|
||||||
obj.obj_reset_changes()
|
|
||||||
self.assertEqual('loaded!', obj.bar)
|
|
||||||
expected = {'watcher_object.name': 'MyObj',
|
|
||||||
'watcher_object.namespace': 'watcher',
|
|
||||||
'watcher_object.version': '1.0',
|
|
||||||
'watcher_object.changes': ['bar'],
|
|
||||||
'watcher_object.data': {'foo': 1,
|
|
||||||
'bar': 'loaded!'}}
|
|
||||||
self.assertEqual(expected, obj.obj_to_primitive())
|
|
||||||
|
|
||||||
def test_changes_in_primitive(self):
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
obj.foo = 123
|
|
||||||
self.assertEqual(set(['foo']), obj.obj_what_changed())
|
|
||||||
primitive = obj.obj_to_primitive()
|
|
||||||
self.assertTrue('watcher_object.changes' in primitive)
|
|
||||||
obj2 = MyObj.obj_from_primitive(primitive)
|
|
||||||
self.assertEqual(set(['foo']), obj2.obj_what_changed())
|
|
||||||
obj2.obj_reset_changes()
|
|
||||||
self.assertEqual(set(), obj2.obj_what_changed())
|
|
||||||
|
|
||||||
def test_unknown_objtype(self):
|
|
||||||
self.assertRaises(exception.UnsupportedObjectError,
|
|
||||||
base.WatcherObject.obj_class_from_name, 'foo', '1.0')
|
|
||||||
|
|
||||||
def test_with_alternate_context(self):
|
|
||||||
context1 = watcher_context.RequestContext('foo', 'foo')
|
|
||||||
context2 = watcher_context.RequestContext('bar',
|
|
||||||
project_id='alternate')
|
|
||||||
obj = MyObj.query(context1)
|
|
||||||
obj.update_test(context2)
|
|
||||||
self.assertEqual('alternate-context', obj.bar)
|
|
||||||
self.assertRemotes()
|
|
||||||
|
|
||||||
def test_orphaned_object(self):
|
|
||||||
obj = MyObj.query(self.context)
|
|
||||||
obj._context = None
|
|
||||||
self.assertRaises(exception.OrphanedObjectError,
|
|
||||||
obj.update_test)
|
|
||||||
self.assertRemotes()
|
|
||||||
|
|
||||||
def test_changed_1(self):
|
|
||||||
obj = MyObj.query(self.context)
|
|
||||||
obj.foo = 123
|
|
||||||
self.assertEqual(set(['foo']), obj.obj_what_changed())
|
|
||||||
obj.update_test(self.context)
|
|
||||||
self.assertEqual(set(['foo', 'bar']), obj.obj_what_changed())
|
|
||||||
self.assertEqual(123, obj.foo)
|
|
||||||
self.assertRemotes()
|
|
||||||
|
|
||||||
def test_changed_2(self):
|
|
||||||
obj = MyObj.query(self.context)
|
|
||||||
obj.foo = 123
|
|
||||||
self.assertEqual(set(['foo']), obj.obj_what_changed())
|
|
||||||
obj.save()
|
|
||||||
self.assertEqual(set([]), obj.obj_what_changed())
|
|
||||||
self.assertEqual(123, obj.foo)
|
|
||||||
self.assertRemotes()
|
|
||||||
|
|
||||||
def test_changed_3(self):
|
|
||||||
obj = MyObj.query(self.context)
|
|
||||||
obj.foo = 123
|
|
||||||
self.assertEqual(set(['foo']), obj.obj_what_changed())
|
|
||||||
obj.refresh()
|
|
||||||
self.assertEqual(set([]), obj.obj_what_changed())
|
|
||||||
self.assertEqual(321, obj.foo)
|
|
||||||
self.assertEqual('refreshed', obj.bar)
|
|
||||||
self.assertRemotes()
|
|
||||||
|
|
||||||
def test_changed_4(self):
|
|
||||||
obj = MyObj.query(self.context)
|
|
||||||
obj.bar = 'something'
|
|
||||||
self.assertEqual(set(['bar']), obj.obj_what_changed())
|
|
||||||
obj.modify_save_modify(self.context)
|
|
||||||
self.assertEqual(set(['foo']), obj.obj_what_changed())
|
|
||||||
self.assertEqual(42, obj.foo)
|
|
||||||
self.assertEqual('meow', obj.bar)
|
|
||||||
self.assertRemotes()
|
|
||||||
|
|
||||||
def test_static_result(self):
|
|
||||||
obj = MyObj.query(self.context)
|
|
||||||
self.assertEqual('bar', obj.bar)
|
|
||||||
result = obj.marco()
|
|
||||||
self.assertEqual('polo', result)
|
|
||||||
self.assertRemotes()
|
|
||||||
|
|
||||||
def test_updates(self):
|
|
||||||
obj = MyObj.query(self.context)
|
|
||||||
self.assertEqual(1, obj.foo)
|
|
||||||
obj.update_test()
|
|
||||||
self.assertEqual('updated', obj.bar)
|
|
||||||
self.assertRemotes()
|
|
||||||
|
|
||||||
def test_base_attributes(self):
|
|
||||||
dt = datetime.datetime(1955, 11, 5)
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
obj.created_at = dt
|
|
||||||
obj.updated_at = dt
|
|
||||||
expected = {'watcher_object.name': 'MyObj',
|
|
||||||
'watcher_object.namespace': 'watcher',
|
|
||||||
'watcher_object.version': '1.0',
|
|
||||||
'watcher_object.changes':
|
|
||||||
['created_at', 'updated_at'],
|
|
||||||
'watcher_object.data':
|
|
||||||
{'created_at': timeutils.isotime(dt),
|
|
||||||
'updated_at': timeutils.isotime(dt),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
actual = obj.obj_to_primitive()
|
|
||||||
# watcher_object.changes is built from a set and order is undefined
|
|
||||||
self.assertEqual(sorted(expected['watcher_object.changes']),
|
|
||||||
sorted(actual['watcher_object.changes']))
|
|
||||||
del expected['watcher_object.changes'], \
|
|
||||||
actual['watcher_object.changes']
|
|
||||||
self.assertEqual(expected, actual)
|
|
||||||
|
|
||||||
def test_contains(self):
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
self.assertFalse('foo' in obj)
|
|
||||||
obj.foo = 1
|
|
||||||
self.assertTrue('foo' in obj)
|
|
||||||
self.assertFalse('does_not_exist' in obj)
|
|
||||||
|
|
||||||
def test_obj_attr_is_set(self):
|
|
||||||
obj = MyObj(self.context, foo=1)
|
|
||||||
self.assertTrue(obj.obj_attr_is_set('foo'))
|
|
||||||
self.assertFalse(obj.obj_attr_is_set('bar'))
|
|
||||||
self.assertRaises(AttributeError, obj.obj_attr_is_set, 'bang')
|
|
||||||
|
|
||||||
def test_get(self):
|
|
||||||
obj = MyObj(self.context, foo=1)
|
|
||||||
# Foo has value, should not get the default
|
|
||||||
self.assertEqual(obj.get('foo', 2), 1)
|
|
||||||
# Foo has value, should return the value without error
|
|
||||||
self.assertEqual(obj.get('foo'), 1)
|
|
||||||
# Bar is not loaded, so we should get the default
|
|
||||||
self.assertEqual(obj.get('bar', 'not-loaded'), 'not-loaded')
|
|
||||||
# Bar without a default should lazy-load
|
|
||||||
self.assertEqual(obj.get('bar'), 'loaded!')
|
|
||||||
# Bar now has a default, but loaded value should be returned
|
|
||||||
self.assertEqual(obj.get('bar', 'not-loaded'), 'loaded!')
|
|
||||||
# Invalid attribute should raise AttributeError
|
|
||||||
self.assertRaises(AttributeError, obj.get, 'nothing')
|
|
||||||
# ...even with a default
|
|
||||||
self.assertRaises(AttributeError, obj.get, 'nothing', 3)
|
|
||||||
|
|
||||||
def test_object_inheritance(self):
|
|
||||||
base_fields = base.WatcherObject.fields.keys()
|
|
||||||
myobj_fields = ['foo', 'bar', 'missing'] + base_fields
|
|
||||||
myobj3_fields = ['new_field']
|
|
||||||
self.assertTrue(issubclass(DummySubclassedObject, MyObj))
|
|
||||||
self.assertEqual(len(myobj_fields), len(MyObj.fields))
|
|
||||||
self.assertEqual(set(myobj_fields), set(MyObj.fields.keys()))
|
|
||||||
self.assertEqual(len(myobj_fields) + len(myobj3_fields),
|
|
||||||
len(DummySubclassedObject.fields))
|
|
||||||
self.assertEqual(set(myobj_fields) | set(myobj3_fields),
|
|
||||||
set(DummySubclassedObject.fields.keys()))
|
|
||||||
|
|
||||||
def test_get_changes(self):
|
|
||||||
obj = MyObj(self.context)
|
|
||||||
self.assertEqual({}, obj.obj_get_changes())
|
|
||||||
obj.foo = 123
|
|
||||||
self.assertEqual({'foo': 123}, obj.obj_get_changes())
|
|
||||||
obj.bar = 'test'
|
|
||||||
self.assertEqual({'foo': 123, 'bar': 'test'}, obj.obj_get_changes())
|
|
||||||
obj.obj_reset_changes()
|
|
||||||
self.assertEqual({}, obj.obj_get_changes())
|
|
||||||
|
|
||||||
def test_obj_fields(self):
|
|
||||||
class TestObj(base.WatcherObject):
|
|
||||||
fields = {'foo': int}
|
|
||||||
obj_extra_fields = ['bar']
|
|
||||||
|
|
||||||
@property
|
|
||||||
def bar(self):
|
|
||||||
return 'this is bar'
|
|
||||||
|
|
||||||
obj = TestObj(self.context)
|
|
||||||
self.assertEqual(set(['created_at', 'updated_at', 'foo', 'bar']),
|
|
||||||
set(obj.obj_fields))
|
|
||||||
|
|
||||||
def test_obj_constructor(self):
|
|
||||||
obj = MyObj(self.context, foo=123, bar='abc')
|
|
||||||
self.assertEqual(123, obj.foo)
|
|
||||||
self.assertEqual('abc', obj.bar)
|
|
||||||
self.assertEqual(set(['foo', 'bar']), obj.obj_what_changed())
|
|
||||||
|
|
||||||
|
|
||||||
class TestObjectListBase(test_base.TestCase):
|
class TestObjectListBase(test_base.TestCase):
|
||||||
|
|
||||||
def test_list_like_operations(self):
|
def test_list_like_operations(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user