# HG changeset patch # User Boris Feld <boris.feld@octobus.net> # Date 1508858493 -7200 # Tue Oct 24 17:21:33 2017 +0200 # Node ID ef7a11a41ae9b29dc32440ca00ae4da696d343fe # Parent f132ac6588cd14e70a26120afa1cbeebb561599c Add a separate hg update suite with more params diff --git a/benchmarks/basic_commands.py b/benchmarks/basic_commands.py --- a/benchmarks/basic_commands.py +++ b/benchmarks/basic_commands.py @@ -171,10 +171,6 @@ time = self._execute("id", "-r", ". ") return time - def time_up_tip_100(self, *args, **kwargs): - self._execute("up", "-r", "tip~100") - self._execute("up", "-r", "tip") - class LogTimeTestSuite(object): @@ -217,3 +213,46 @@ def time_log_history(self, repo, n): self._execute("log", "-r", "tip~%d::" % n) + +class UpdateTimeTestSuite(object): + + params = [REPOS, [10, 100, 1000, 10000]] + param_names = ["repo", "changesets"] + + def __init__(self): + super(UpdateTimeTestSuite, self).__init__() + + self.timer = timeit.default_timer + self.goal_time = 10 + + def setup(self, repo_name, n): + venv = os.path.abspath(os.path.join(os.path.dirname(sys.executable), "..")) + self.repo_name = repo_name + self.hgpath = os.path.join(venv, "bin", "hg") + self.repo_path = os.path.join(REPOS_DIR, self.repo_name) + + def _execute(self, command, *args): + cmd = self._prepare_cmd(command, *args) + + try: + return self._single_execute(cmd) + except subprocess.CalledProcessError as error: + print("ERROR OUTPUT", error.output) + raise + + def _prepare_cmd(self, command, *args): + cmd = [ + self.hgpath, + "--cwd", self.repo_path, + "--traceback", + command, + ] + list(args) + + return cmd + + def _single_execute(self, cmd): + return subprocess.check_output(cmd, stderr=subprocess.STDOUT) + + def time_up_tip(self, repo, n): + self._execute("up", "-r", "tip~%d" % n) + self._execute("up", "-r", "tip")