Added goal+strategy ObjectField for AuditTemplate
In this changeset, I added the "goal" and the "strategy "ObjectField which can either be loaded by setting the new "eager" parameter as True or not loaded (as before) by setting it to False. The advantage of introducing this eager parameter is that this way, we can reduce to a minimum the overhead of DB queries whenever the related goal is not actually needed. Change-Id: I97418163f68aea2f1cda80be94e4035f0b3700ae Partially-Implements: blueprint watcher-versioned-objects
This commit is contained in:
@@ -225,6 +225,11 @@ class TestDbAuditTemplateFilters(base.DbTestCase):
|
||||
|
||||
class DbAuditTemplateTestCase(base.DbTestCase):
|
||||
|
||||
def _create_test_goal(self, **kwargs):
|
||||
goal = utils.get_test_goal(**kwargs)
|
||||
self.dbapi.create_goal(goal)
|
||||
return goal
|
||||
|
||||
def _create_test_audit_template(self, **kwargs):
|
||||
audit_template = utils.get_test_audit_template(**kwargs)
|
||||
self.dbapi.create_audit_template(audit_template)
|
||||
@@ -268,18 +273,19 @@ class DbAuditTemplateTestCase(base.DbTestCase):
|
||||
strategy.as_dict(), eager_audit_template.strategy.as_dict())
|
||||
|
||||
def test_get_audit_template_list_with_filters(self):
|
||||
goal = self._create_test_goal(name='DUMMY')
|
||||
audit_template1 = self._create_test_audit_template(
|
||||
id=1,
|
||||
uuid=w_utils.generate_uuid(),
|
||||
name='My Audit Template 1',
|
||||
description='Description of my audit template 1',
|
||||
goal='DUMMY')
|
||||
goal_id=goal['id'])
|
||||
audit_template2 = self._create_test_audit_template(
|
||||
id=2,
|
||||
uuid=w_utils.generate_uuid(),
|
||||
name='My Audit Template 2',
|
||||
description='Description of my audit template 2',
|
||||
goal='DUMMY')
|
||||
goal_id=goal['id'])
|
||||
|
||||
res = self.dbapi.get_audit_template_list(
|
||||
self.context, filters={'name': 'My Audit Template 1'})
|
||||
|
||||
@@ -265,7 +265,7 @@ class TestPurgeCommand(base.DbTestCase):
|
||||
with freezegun.freeze_time(self.fake_today):
|
||||
# orphan audit template
|
||||
audit_template4 = obj_utils.create_test_audit_template(
|
||||
self.context, goal_id=404, # Does not exist
|
||||
self.context, goal_id=self.goal2.id, # Does not exist
|
||||
name=self.generate_unique_name(prefix="Audit Template 4 "),
|
||||
strategy_id=None, id=self._generate_id(),
|
||||
uuid=utils.generate_uuid())
|
||||
@@ -362,7 +362,7 @@ class TestPurgeCommand(base.DbTestCase):
|
||||
with freezegun.freeze_time(self.fake_today):
|
||||
# orphan audit template
|
||||
audit_template4 = obj_utils.create_test_audit_template(
|
||||
self.context, goal_id=404, # Does not exist
|
||||
self.context, goal_id=self.goal2.id, # Does not exist
|
||||
name=self.generate_unique_name(prefix="Audit Template 4 "),
|
||||
strategy_id=None, id=self._generate_id(),
|
||||
uuid=utils.generate_uuid())
|
||||
|
||||
@@ -21,7 +21,7 @@ from watcher import objects
|
||||
|
||||
|
||||
def get_test_audit_template(**kwargs):
|
||||
return {
|
||||
audit_template_data = {
|
||||
'id': kwargs.get('id', 1),
|
||||
'uuid': kwargs.get('uuid', 'e74c40e0-d825-11e2-a28f-0800200c9a66'),
|
||||
'goal_id': kwargs.get('goal_id', 1),
|
||||
@@ -34,6 +34,15 @@ def get_test_audit_template(**kwargs):
|
||||
'deleted_at': kwargs.get('deleted_at'),
|
||||
}
|
||||
|
||||
# ObjectField doesn't allow None nor dict, so if we want to simulate a
|
||||
# non-eager object loading, the field should not be referenced at all.
|
||||
if kwargs.get('goal'):
|
||||
audit_template_data['goal'] = kwargs.get('goal')
|
||||
if kwargs.get('strategy'):
|
||||
audit_template_data['strategy'] = kwargs.get('strategy')
|
||||
|
||||
return audit_template_data
|
||||
|
||||
|
||||
def create_test_audit_template(**kwargs):
|
||||
"""Create test audit template entry in DB and return AuditTemplate DB object.
|
||||
|
||||
Reference in New Issue
Block a user