Commit 4295f1c3 authored by Antoine Millet's avatar Antoine Millet
Browse files

Added stats on tql database

parent 316b137f
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
""" Main class of the TQL database.
"""

import time
from copy import copy
from fnmatch import fnmatch

@@ -221,6 +222,8 @@ class TqlDatabase(object):

    def __init__(self, default_requestor=None):
        self._objects = {}
        self._stats_maxquerytime = 0
        self._stats_numquery = 0
        if default_requestor is None:
            self._default_requestor = StaticRequestor()
        else:
@@ -243,16 +246,33 @@ class TqlDatabase(object):
            obj = obj.id
        del self._objects[obj]

    def stats(self):
        """ Get statistics about the database.

        :return: return a dict of statistics
        """
        stats = {}
        stats['objects'] = len(self._objects)
        stats['max_query_time'] = self._stats_maxquerytime
        stats['queries'] = self._stats_numquery
        return stats

    def get(self, object_id):
        return self._objects[object_id]

    def raw_query(self, tql, requestor=None):
        started = time.time()
        self._stats_numquery += 1
        if requestor is None:
            requestor = self._default_requestor
        if isinstance(tql, basestring):
            tql = TqlParser(tql, debug=False, write_tables=False,
                            errorlog=yacc.NullLogger()).parse()
        return self._evaluate_ast(tql, requestor)
        evaluated = self._evaluate_ast(tql, requestor)
        duration = time.time() - started
        if duration > self._stats_maxquerytime:
            self._stats_maxquerytime = duration
        return evaluated

    def query(self, tql, show=None, requestor=None):
        if requestor is None: