# HG changeset patch # User Aurelien Campeas # Date 1404231920 -7200 # Node ID c8b80abab369f4b3aed37e31fe91643419380dc7 # Parent 4db44a475b9b016c909956594ed4f689732452b5 [devtools] adapt stresstester to current APIs diff -r 4db44a475b9b -r c8b80abab369 cubicweb/devtools/stresstester.py --- a/cubicweb/devtools/stresstester.py Wed Mar 16 12:11:18 2016 +0100 +++ b/cubicweb/devtools/stresstester.py Tue Jul 01 18:25:20 2014 +0200 @@ -55,33 +55,32 @@ from logilab.common.fileutils import lines from logilab.common.ureports import Table, TextWriter from cubicweb.server.repository import Repository -from cubicweb.dbapi import Connection TB_LOCK = threading.Lock() class QueryExecutor: - def __init__(self, cursor, times, queries, reporter = None): - self._cursor = cursor + def __init__(self, session, times, queries, reporter = None): + self._session = session self._times = times self._queries = queries self._reporter = reporter def run(self): - cursor = self._cursor - times = self._times - while times: - for index, query in enumerate(self._queries): - start = clock() - try: - cursor.execute(query) - except Exception: - TB_LOCK.acquire() - traceback.print_exc() - TB_LOCK.release() - return - if self._reporter is not None: - self._reporter.add_proftime(clock() - start, index) - times -= 1 + with self._session.new_cnx() as cnx: + times = self._times + while times: + for index, query in enumerate(self._queries): + start = clock() + try: + cnx.execute(query) + except Exception: + TB_LOCK.acquire() + traceback.print_exc() + TB_LOCK.release() + return + if self._reporter is not None: + self._reporter.add_proftime(clock() - start, index) + times -= 1 def usage(status=0): """print usage string and exit""" @@ -169,15 +168,12 @@ # get local access to the repository print("Creating repo", prof_file) repo = Repository(config, prof_file) - cnxid = repo.connect(user, password=password) - # connection to the CubicWeb repository - repo_cnx = Connection(repo, cnxid) - repo_cursor = repo_cnx.cursor() + session = repo.new_session(user, password=password) reporter = ProfileReporter(queries) if threads > 1: executors = [] while threads: - qe = QueryExecutor(repo_cursor, repeat, queries, reporter = reporter) + qe = QueryExecutor(session, repeat, queries, reporter = reporter) executors.append(qe) thread = threading.Thread(target=qe.run) qe.thread = thread @@ -188,7 +184,7 @@ ## for qe in executors: ## print qe.thread, repeat - qe._times, 'times' else: - QueryExecutor(repo_cursor, repeat, queries, reporter = reporter).run() + QueryExecutor(session, repeat, queries, reporter = reporter).run() reporter.dump_report(report_output)