Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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')
Example #12
0
 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')
Example #13
0
 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")
Example #14
0
 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")
Example #15
0
 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')
Example #16
0
 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')
Example #17
0
    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)