def test_add_or_update_given_trace_context_new(self): trace_context = {'trace_tag': 'awesome_test_trace'} action_execution_id = 'action_execution_1' rule_id = 'rule_1' trigger_instance_id = 'trigger_instance_1' pre_add_or_update_traces = len(Trace.get_all()) trace_db = trace_service.add_or_update_given_trace_context( trace_context, action_executions=[action_execution_id], rules=[rule_id], trigger_instances=[trigger_instance_id]) post_add_or_update_traces = len(Trace.get_all()) self.assertTrue(post_add_or_update_traces > pre_add_or_update_traces, 'Expected new Trace to be created.') retrieved_trace_db = Trace.get_by_id(trace_db.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)
def test_add_or_update_given_trace_context_new_with_causals(self): trace_context = {'trace_tag': 'causal_test_trace'} action_execution_id = 'action_execution_1' rule_id = 'rule_1' trigger_instance_id = 'trigger_instance_1' pre_add_or_update_traces = len(Trace.get_all()) trace_db = trace_service.add_or_update_given_trace_context( trace_context, action_executions=[{ 'id': action_execution_id, 'caused_by': { 'id': '%s:%s' % (rule_id, trigger_instance_id), 'type': 'rule' } }], rules=[{ 'id': rule_id, 'caused_by': { 'id': trigger_instance_id, 'type': 'trigger-instance' } }], trigger_instances=[trigger_instance_id]) post_add_or_update_traces = len(Trace.get_all()) self.assertTrue(post_add_or_update_traces > pre_add_or_update_traces, 'Expected new Trace to be created.') retrieved_trace_db = Trace.get_by_id(trace_db.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(retrieved_trace_db.action_executions[0].caused_by, { 'id': '%s:%s' % (rule_id, trigger_instance_id), 'type': 'rule' }, '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(retrieved_trace_db.rules[0].caused_by, { 'id': trigger_instance_id, 'type': 'trigger-instance' }, '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.') self.assertEqual(retrieved_trace_db.trigger_instances[0].caused_by, {}, 'Expected updated rules.') Trace.delete(retrieved_trace_db)
def test_add_or_update_given_trace_context_new(self): trace_context = {"trace_tag": "awesome_test_trace"} action_execution_id = "action_execution_1" rule_id = "rule_1" trigger_instance_id = "trigger_instance_1" pre_add_or_update_traces = len(Trace.get_all()) trace_db = trace_service.add_or_update_given_trace_context( trace_context, action_executions=[action_execution_id], rules=[rule_id], trigger_instances=[trigger_instance_id], ) post_add_or_update_traces = len(Trace.get_all()) self.assertTrue( post_add_or_update_traces > pre_add_or_update_traces, "Expected new Trace to be created.", ) retrieved_trace_db = Trace.get_by_id(trace_db.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)
def test_trace_provided(self): self.traceable_liveaction['context']['trace_context'] = {'trace_tag': 'OohLaLaLa'} action_services.request(self.traceable_liveaction) traces = Trace.get_all() self.assertEqual(len(traces), 1) self.assertEqual(len(traces[0]['action_executions']), 1) # Let's use existing trace id in trace context. # We shouldn't create new trace object. trace_id = str(traces[0].id) self.traceable_liveaction['context']['trace_context'] = {'id_': trace_id} action_services.request(self.traceable_liveaction) traces = Trace.get_all() self.assertEqual(len(traces), 1) self.assertEqual(len(traces[0]['action_executions']), 2)
def test_add_or_update_given_trace_context_new_with_causals(self): trace_context = {'trace_tag': 'causal_test_trace'} action_execution_id = 'action_execution_1' rule_id = 'rule_1' trigger_instance_id = 'trigger_instance_1' pre_add_or_update_traces = len(Trace.get_all()) trace_db = trace_service.add_or_update_given_trace_context( trace_context, action_executions=[{'id': action_execution_id, 'caused_by': {'id': '%s:%s' % (rule_id, trigger_instance_id), 'type': 'rule'}}], rules=[{'id': rule_id, 'caused_by': {'id': trigger_instance_id, 'type': 'trigger-instance'}}], trigger_instances=[trigger_instance_id]) post_add_or_update_traces = len(Trace.get_all()) self.assertTrue(post_add_or_update_traces > pre_add_or_update_traces, 'Expected new Trace to be created.') retrieved_trace_db = Trace.get_by_id(trace_db.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(retrieved_trace_db.action_executions[0].caused_by, {'id': '%s:%s' % (rule_id, trigger_instance_id), 'type': 'rule'}, '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(retrieved_trace_db.rules[0].caused_by, {'id': trigger_instance_id, 'type': 'trigger-instance'}, '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.') self.assertEqual(retrieved_trace_db.trigger_instances[0].caused_by, {}, 'Expected updated rules.') Trace.delete(retrieved_trace_db)
def test_trace_provided(self): self.traceable_liveaction["context"]["trace_context"] = { "trace_tag": "OohLaLaLa" } action_services.request(self.traceable_liveaction) traces = Trace.get_all() self.assertEqual(len(traces), 1) self.assertEqual(len(traces[0]["action_executions"]), 1) # Let's use existing trace id in trace context. # We shouldn't create new trace object. trace_id = str(traces[0].id) self.traceable_liveaction["context"]["trace_context"] = { "id_": trace_id } action_services.request(self.traceable_liveaction) traces = Trace.get_all() self.assertEqual(len(traces), 1) self.assertEqual(len(traces[0]["action_executions"]), 2)
def test_trace_provided(self): self.traceable_liveaction['context']['trace_context'] = { 'trace_tag': 'OohLaLaLa' } action_services.request(self.traceable_liveaction) traces = Trace.get_all() self.assertEqual(len(traces), 1) self.assertEqual(len(traces[0]['action_executions']), 1) # Let's use existing trace id in trace context. # We shouldn't create new trace object. trace_id = str(traces[0].id) self.traceable_liveaction['context']['trace_context'] = { 'id_': trace_id } action_services.request(self.traceable_liveaction) traces = Trace.get_all() self.assertEqual(len(traces), 1) self.assertEqual(len(traces[0]['action_executions']), 2)
def test_no_timestamp_doesnt_delete(self): now = date_utils.get_datetime_utc_now() TestPurgeTrace._create_save_trace( trace_tag="test_trace", action_executions=[str(bson.ObjectId()) for _ in range(4)], rules=[str(bson.ObjectId()) for _ in range(4)], trigger_instances=[str(bson.ObjectId()) for _ in range(5)], start_timestamp=now - timedelta(days=20), ) self.assertEqual(len(Trace.get_all()), 1) expected_msg = "Specify a valid timestamp" self.assertRaisesRegexp( ValueError, expected_msg, purge_traces, logger=LOG, timestamp=None, ) self.assertEqual(len(Trace.get_all()), 1)
def test_purge(self): now = date_utils.get_datetime_utc_now() TestPurgeTrace._create_save_trace( trace_tag="test_trace", action_executions=[str(bson.ObjectId()) for _ in range(4)], rules=[str(bson.ObjectId()) for _ in range(4)], trigger_instances=[str(bson.ObjectId()) for _ in range(5)], start_timestamp=now - timedelta(days=20), ) TestPurgeTrace._create_save_trace( trace_tag="test_trace", action_executions=[str(bson.ObjectId()) for _ in range(4)], rules=[str(bson.ObjectId()) for _ in range(4)], trigger_instances=[str(bson.ObjectId()) for _ in range(5)], start_timestamp=now - timedelta(days=5), ) self.assertEqual(len(Trace.get_all()), 2) purge_traces(logger=LOG, timestamp=now - timedelta(days=10)) self.assertEqual(len(Trace.get_all()), 1)
def test_add_or_update_given_trace_context_new(self): trace_context = {'trace_tag': 'awesome_test_trace'} action_execution_id = 'action_execution_1' rule_id = 'rule_1' trigger_instance_id = 'trigger_instance_1' pre_add_or_update_traces = len(Trace.get_all()) trace_db = trace_service.add_or_update_given_trace_context( trace_context, action_executions=[action_execution_id], rules=[rule_id], trigger_instances=[trigger_instance_id]) post_add_or_update_traces = len(Trace.get_all()) self.assertTrue(post_add_or_update_traces > pre_add_or_update_traces, 'Expected new Trace to be created.') retrieved_trace_db = Trace.get_by_id(trace_db.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)
def test_post_delete_trace(self): LIVE_ACTION_TRACE = copy.copy(LIVE_ACTION_1) LIVE_ACTION_TRACE['context'] = {'trace_context': {'trace_tag': 'balleilaka'}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json['status'], 'canceled') trace_id = str(Trace.get_all()[0].id) LIVE_ACTION_TRACE['context'] = {'trace_context': {'id_': trace_id}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json['status'], 'canceled')
def test_post_delete_trace(self): LIVE_ACTION_TRACE = copy.copy(LIVE_ACTION_1) LIVE_ACTION_TRACE['context'] = {'trace_context': {'trace_tag': 'balleilaka'}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json['status'], 'canceled') trace_id = str(Trace.get_all()[0].id) LIVE_ACTION_TRACE['context'] = {'trace_context': {'id_': trace_id}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json['status'], 'canceled')
def test_post_delete_trace(self): LIVE_ACTION_TRACE = copy.copy(LIVE_ACTION_1) LIVE_ACTION_TRACE["context"] = {"trace_context": {"trace_tag": "balleilaka"}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json["status"], "canceled") trace_id = str(Trace.get_all()[0].id) LIVE_ACTION_TRACE["context"] = {"trace_context": {"id_": trace_id}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json["status"], "canceled")
def test_post_delete_trace(self): """ Validate that the API controller doesn't blow up on specifying trace_context. """ LIVE_ACTION_TRACE = copy.copy(LIVE_ACTION_1) LIVE_ACTION_TRACE["context"] = {"trace_context": {"trace_tag": "balleilaka"}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json["status"], "canceling") trace_id = str(Trace.get_all()[0].id) LIVE_ACTION_TRACE["context"] = {"trace_context": {"id_": trace_id}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json["status"], "canceling")
def test_post_delete_trace(self): """ Validate that the API controller doesn't blow up on specifying trace_context. """ LIVE_ACTION_TRACE = copy.copy(LIVE_ACTION_1) LIVE_ACTION_TRACE['context'] = {'trace_context': {'trace_tag': 'balleilaka'}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json['status'], 'canceled') trace_id = str(Trace.get_all()[0].id) LIVE_ACTION_TRACE['context'] = {'trace_context': {'id_': trace_id}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json['status'], 'canceled')
def test_post_delete_trace(self): """ Validate that the API controller doesn't blow up on specifying trace_context. """ LIVE_ACTION_TRACE = copy.copy(LIVE_ACTION_1) LIVE_ACTION_TRACE['context'] = { 'trace_context': { 'trace_tag': 'balleilaka' } } post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json['status'], 'canceling') trace_id = str(Trace.get_all()[0].id) LIVE_ACTION_TRACE['context'] = {'trace_context': {'id_': trace_id}} post_resp = self._do_post(LIVE_ACTION_TRACE) self.assertEqual(post_resp.status_int, 201) delete_resp = self._do_delete(self._get_actionexecution_id(post_resp)) self.assertEqual(delete_resp.status_int, 200) self.assertEqual(delete_resp.json['status'], 'canceling')
def test_add_or_update_given_trace_context_new_with_causals(self): trace_context = {"trace_tag": "causal_test_trace"} action_execution_id = "action_execution_1" rule_id = "rule_1" trigger_instance_id = "trigger_instance_1" pre_add_or_update_traces = len(Trace.get_all()) trace_db = trace_service.add_or_update_given_trace_context( trace_context, action_executions=[{ "id": action_execution_id, "caused_by": { "id": "%s:%s" % (rule_id, trigger_instance_id), "type": "rule", }, }], rules=[{ "id": rule_id, "caused_by": { "id": trigger_instance_id, "type": "trigger-instance", }, }], trigger_instances=[trigger_instance_id], ) post_add_or_update_traces = len(Trace.get_all()) self.assertTrue( post_add_or_update_traces > pre_add_or_update_traces, "Expected new Trace to be created.", ) retrieved_trace_db = Trace.get_by_id(trace_db.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( retrieved_trace_db.action_executions[0].caused_by, { "id": "%s:%s" % (rule_id, trigger_instance_id), "type": "rule" }, "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( retrieved_trace_db.rules[0].caused_by, { "id": trigger_instance_id, "type": "trigger-instance" }, "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.", ) self.assertEqual( retrieved_trace_db.trigger_instances[0].caused_by, {}, "Expected updated rules.", ) Trace.delete(retrieved_trace_db)