def test_add_or_update_given_trace_context(self): trace_context = {'id_': str(self.trace_empty.id)} action_execution_id = 'action_execution_1' rule_id = 'rule_1' trigger_instance_id = 'trigger_instance_1' trace_service.add_or_update_given_trace_context( trace_context, action_executions=[action_execution_id], rules=[rule_id], trigger_instances=[trigger_instance_id]) retrieved_trace_db = Trace.get_by_id(self.trace_empty.id) self.assertEqual(len(retrieved_trace_db.action_executions), 1, 'Expected updated action_executions.') self.assertEqual(retrieved_trace_db.action_executions[0].object_id, action_execution_id, 'Expected updated action_executions.') self.assertEqual(len(retrieved_trace_db.rules), 1, 'Expected updated rules.') self.assertEqual(retrieved_trace_db.rules[0].object_id, rule_id, 'Expected updated rules.') self.assertEqual(len(retrieved_trace_db.trigger_instances), 1, 'Expected updated trigger_instances.') self.assertEqual(retrieved_trace_db.trigger_instances[0].object_id, trigger_instance_id, 'Expected updated trigger_instances.') Trace.delete(retrieved_trace_db) Trace.add_or_update(self.trace_empty)
def test_add_or_update_given_trace_context(self): trace_context = {'id_': str(self.trace_empty.id)} action_execution_id = 'action_execution_1' rule_id = 'rule_1' trigger_instance_id = 'trigger_instance_1' trace_service.add_or_update_given_trace_context( trace_context, action_executions=[action_execution_id], rules=[rule_id], trigger_instances=[trigger_instance_id]) retrieved_trace_db = Trace.get_by_id(self.trace_empty.id) self.assertEqual(len(retrieved_trace_db.action_executions), 1, 'Expected updated action_executions.') self.assertEqual(retrieved_trace_db.action_executions[0].object_id, action_execution_id, 'Expected updated action_executions.') self.assertEqual(len(retrieved_trace_db.rules), 1, 'Expected updated rules.') self.assertEqual(retrieved_trace_db.rules[0].object_id, rule_id, 'Expected updated rules.') self.assertEqual(len(retrieved_trace_db.trigger_instances), 1, 'Expected updated trigger_instances.') self.assertEqual(retrieved_trace_db.trigger_instances[0].object_id, trigger_instance_id, 'Expected updated trigger_instances.') Trace.delete(retrieved_trace_db) Trace.add_or_update(self.trace_empty)
def add_or_update_given_trace_db(trace_db, action_executions=None, rules=None, trigger_instances=None): """ Will update an existing Trace. :param trace_db: The TraceDB to update. :type trace_db: ``TraceDB`` :param action_executions: The action_execution to be added to the Trace. Should a list of object_ids or a dict containing object_ids and caused_by. :type action_executions: ``list`` :param rules: The rules to be added to the Trace. Should a list of object_ids or a dict containing object_ids and caused_by. :type rules: ``list`` :param trigger_instances: The trigger_instances to be added to the Trace. Should a list of object_ids or a dict containing object_ids and caused_by. :type trigger_instances: ``list`` :rtype: ``TraceDB`` """ if trace_db is None: raise ValueError("trace_db should be non-None.") if not action_executions: action_executions = [] action_executions = [ _to_trace_component_db(component=action_execution) for action_execution in action_executions ] if not rules: rules = [] rules = [_to_trace_component_db(component=rule) for rule in rules] if not trigger_instances: trigger_instances = [] trigger_instances = [ _to_trace_component_db(component=trigger_instance) for trigger_instance in trigger_instances ] # If an id exists then this is an update and we do not want to perform # an upsert so use push_components which will use the push operator. if trace_db.id: return Trace.push_components( trace_db, action_executions=action_executions, rules=rules, trigger_instances=trigger_instances, ) trace_db.action_executions = action_executions trace_db.rules = rules trace_db.trigger_instances = trigger_instances return Trace.add_or_update(trace_db)
def _create_save_trace(trace_tag, id_=None, action_executions=None, rules=None, trigger_instances=None): if action_executions is None: action_executions = [] action_executions = [ TraceComponentDB(object_id=action_execution) for action_execution in action_executions ] if rules is None: rules = [] rules = [TraceComponentDB(object_id=rule) for rule in rules] if trigger_instances is None: trigger_instances = [] trigger_instances = [ TraceComponentDB(object_id=trigger_instance) for trigger_instance in trigger_instances ] created = TraceDB(id=id_, trace_tag=trace_tag, trigger_instances=trigger_instances, rules=rules, action_executions=action_executions) return Trace.add_or_update(created)
def add_or_update_given_trace_db(trace_db, action_executions=None, rules=None, trigger_instances=None): """ Will update an existing Trace. :param trace_db: The TraceDB to update. :type trace_db: ``TraceDB`` :param action_executions: The action_execution to be added to the Trace. Should a list of object_ids or a dict containing object_ids and caused_by. :type action_executions: ``list`` :param rules: The rules to be added to the Trace. Should a list of object_ids or a dict containing object_ids and caused_by. :type rules: ``list`` :param trigger_instances: The trigger_instances to be added to the Trace. Should a list of object_ids or a dict containing object_ids and caused_by. :type trigger_instances: ``list`` :rtype: ``TraceDB`` """ if trace_db is None: raise ValueError('trace_db should be non-None.') if not action_executions: action_executions = [] action_executions = [_to_trace_component_db(component=action_execution) for action_execution in action_executions] if not rules: rules = [] rules = [_to_trace_component_db(component=rule) for rule in rules] if not trigger_instances: trigger_instances = [] trigger_instances = [_to_trace_component_db(component=trigger_instance) for trigger_instance in trigger_instances] # If an id exists then this is an update and we do not want to perform # an upsert so use push_components which will use the push operator. if trace_db.id: return Trace.push_components(trace_db, action_executions=action_executions, rules=rules, trigger_instances=trigger_instances) trace_db.action_executions = action_executions trace_db.rules = rules trace_db.trigger_instances = trigger_instances return Trace.add_or_update(trace_db)
def add_or_update_given_trace_db(trace_db, action_executions=None, rules=None, trigger_instances=None): """ Will update an existing Trace. :param trace_db: The TraceDB to update. :type trace_db: ``TraceDB`` :param action_executions: The action_execution to be added to the Trace. Should a list of object_ids. :type action_executions: ``list`` :param rules: The rules to be added to the Trace. Should a list of object_ids. :type rules: ``list`` :param trigger_instances: The trigger_instances to be added to the Trace. Should a list of object_ids. :type trigger_instances: ``list`` :rtype: ``TraceDB`` """ if trace_db is None: raise ValueError('trace_db should be non-None.') if not action_executions: action_executions = [] action_executions = [TraceComponentDB(object_id=action_execution) for action_execution in action_executions] if trace_db.action_executions: action_executions.extend(trace_db.action_executions) if not rules: rules = [] rules = [TraceComponentDB(object_id=rule) for rule in rules] if trace_db.rules: rules.extend(trace_db.rules) if not trigger_instances: trigger_instances = [] trigger_instances = [TraceComponentDB(object_id=trigger_instance) for trigger_instance in trigger_instances] if trace_db.trigger_instances: trigger_instances.extend(trace_db.trigger_instances) trace_db.action_executions = action_executions trace_db.rules = rules trace_db.trigger_instances = trigger_instances return Trace.add_or_update(trace_db)
def _create_save_trace(trace_tag, id_=None, action_executions=None, rules=None, trigger_instances=None): if action_executions is None: action_executions = [] action_executions = [TraceComponentDB(object_id=action_execution) for action_execution in action_executions] if rules is None: rules = [] rules = [TraceComponentDB(object_id=rule) for rule in rules] if trigger_instances is None: trigger_instances = [] trigger_instances = [TraceComponentDB(object_id=trigger_instance) for trigger_instance in trigger_instances] created = TraceDB(id=id_, trace_tag=trace_tag, trigger_instances=trigger_instances, rules=rules, action_executions=action_executions) return Trace.add_or_update(created)