Exemplo n.º 1
0
    def test_fire_queries_doesnt_loop(self):
        querier = Querier()

        mock_query_state_1 = QueryContext(
            uuid.uuid4().hex,
            uuid.uuid4().hex, 'mistral_v2', {
                'mistral': {
                    'workflow_name': 'st2ci.st2_pkg_e2e_test',
                    'execution_id': '6d624534-42ca-425c-aa3a-ccc676386fb2'
                }
            })

        mock_query_state_2 = QueryContext(
            uuid.uuid4().hex,
            uuid.uuid4().hex, 'mistral_v2', {
                'mistral': {
                    'workflow_name': 'st2ci.st2_pkg_e2e_test',
                    'execution_id': '6d624534-42ca-425c-aa3a-ccc676386fb3'
                }
            })

        mock_query_state_3 = QueryContext(
            uuid.uuid4().hex,
            uuid.uuid4().hex, 'mistral_v2', {
                'mistral': {
                    'workflow_name': 'st2ci.st2_pkg_e2e_test',
                    'execution_id': '6d624534-42ca-425c-aa3a-ccc676386fb4'
                }
            })

        now = time.time()
        query_contexts = six.moves.queue.Queue()
        query_contexts.put((now + 100000, mock_query_state_1)),
        query_contexts.put((now + 100001, mock_query_state_2)),
        query_contexts.put((now - 200000, mock_query_state_3)),
        querier._query_contexts = query_contexts
        querier._fire_queries()
        self.assertEqual(querier._query_contexts.qsize(), 2)
Exemplo n.º 2
0
    def test_query_rescheduled(self):
        querier = Querier()

        mock_query_state_1 = QueryContext(
            uuid.uuid4().hex,
            uuid.uuid4().hex, 'mistral_v2', {
                'mistral': {
                    'workflow_name': 'st2ci.st2_pkg_e2e_test',
                    'execution_id': '6d624534-42ca-425c-aa3a-ccc676386fb2'
                }
            })

        now = time.time()
        query_contexts = six.moves.queue.Queue()
        query_contexts.put((now - 200000, mock_query_state_1)),
        querier._query_contexts = query_contexts
        querier._fire_queries(blocking=True)
        self.assertFalse(Querier._delete_state_object.called)
        self.assertEqual(querier._query_contexts.qsize(), 1)
Exemplo n.º 3
0
    def _bootstrap(self):
        all_states = ActionExecutionState.get_all()
        LOG.info('Found %d pending states in db.' % len(all_states))

        query_contexts_dict = defaultdict(list)
        for state_db in all_states:
            try:
                context = QueryContext.from_model(state_db)
            except:
                LOG.exception('Invalid state object: %s', state_db)
                continue
            query_module_name = state_db.query_module
            querier = self.get_querier(query_module_name)

            if querier is not None:
                query_contexts_dict[querier].append(context)

        for querier, contexts in six.iteritems(query_contexts_dict):
            LOG.info('Found %d pending actions for query module %s', len(contexts), querier)
            querier.add_queries(query_contexts=contexts)
Exemplo n.º 4
0
    def test_query_completed(self):
        querier = Querier()

        mock_query_state_1 = QueryContext(
            uuid.uuid4().hex,
            uuid.uuid4().hex, 'dummy_runner', {
                'dummy': {
                    'workflow_name': 'st2ci.st2_pkg_e2e_test',
                    'execution_id': '6d624534-42ca-425c-aa3a-ccc676386fb2'
                }
            })

        now = time.time()
        query_contexts = six.moves.queue.Queue()
        query_contexts.put((now - 200000, mock_query_state_1)),
        querier._query_contexts = query_contexts
        querier._fire_queries(blocking=True)
        self.assertTrue(runners_utils.invoke_post_run.called)
        self.assertTrue(Querier._delete_state_object.called)
        self.assertEqual(querier._query_contexts.qsize(), 0)
Exemplo n.º 5
0
    def _bootstrap(self):
        all_states = ActionExecutionState.get_all()
        LOG.info('Found %d pending states in db.' % len(all_states))

        query_contexts_dict = defaultdict(list)
        for state_db in all_states:
            try:
                context = QueryContext.from_model(state_db)
            except:
                LOG.exception('Invalid state object: %s', state_db)
                continue
            query_module_name = state_db.query_module
            querier = self.get_querier(query_module_name)

            if querier is not None:
                query_contexts_dict[querier].append(context)

        for querier, contexts in six.iteritems(query_contexts_dict):
            LOG.info('Found %d pending actions for query module %s',
                     len(contexts), querier)
            querier.add_queries(query_contexts=contexts)
Exemplo n.º 6
0
 def process(self, query_context):
     querier = self.get_querier(query_context.query_module)
     context = QueryContext.from_model(query_context)
     querier.add_queries(query_contexts=[context])
     return
Exemplo n.º 7
0
 def process(self, query_context):
     querier = self.get_querier(query_context.query_module)
     context = QueryContext.from_model(query_context)
     querier.add_queries(query_contexts=[context])
     return