diff --git a/tests/__init__.py b/tests/__init__.py index 418a01a..7267906 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -19,6 +19,9 @@ import tempfile import os logging.basicConfig(stream=sys.stderr) +# Always enable performance counting for tests +os.environ['PAGURE_PERFREPO'] = 'true' + from datetime import date from datetime import datetime from datetime import timedelta @@ -38,6 +41,7 @@ import pagure import pagure.lib import pagure.lib.model from pagure.lib.repo import PagureRepo +import pagure.perfrepo as perfrepo DB_PATH = 'sqlite:///:memory:' FAITOUT_URL = 'http://faitout.fedorainfracloud.org/' @@ -99,8 +103,32 @@ class Modeltests(unittest.TestCase): self.gitrepo = None self.gitrepos = None + def perfMaxWalks(self, max_walks, max_steps): + """ Check that we have not performed too many walks/steps. """ + num_walks = 0 + num_steps = 0 + for reqstat in perfrepo.REQUESTS: + for walk in reqstat['walks'].values(): + num_walks += 1 + num_steps += walk['steps'] + self.assertLessEqual(num_walks, max_walks, + '%s git repo walks performed, at most %s allowed' + % (num_walks, max_walks)) + self.assertLessEqual(num_steps, max_steps, + '%s git repo steps performed, at most %s allowed' + % (num_steps, max_steps)) + + def perfReset(self): + """ Reset perfrepo stats. """ + perfrepo.reset_stats() + perfrepo.REQUESTS = [] + def setUp(self): # pylint: disable=invalid-name """ Set up the environnment, ran before every tests. """ + # Clean up test performance info + perfrepo.reset_stats() + perfrepo.REQUESTS = [] + # Clean up eventual git repo left in the present folder. pagure.REDIS = None pagure.lib.REDIS = None diff --git a/tests/test_pagure_flask_ui_repo.py b/tests/test_pagure_flask_ui_repo.py index 6b43c34..dbd3bc8 100644 --- a/tests/test_pagure_flask_ui_repo.py +++ b/tests/test_pagure_flask_ui_repo.py @@ -1271,6 +1271,8 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test') # No git repo associated self.assertEqual(output.status_code, 404) + self.perfMaxWalks(0, 0) + self.perfReset() tests.create_projects_git(self.path, bare=True) @@ -1280,6 +1282,8 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertIn( '