diff --git a/benchmarks/basic_commands.py b/benchmarks/basic_commands.py index f132ac6588cd14e70a26120afa1cbeebb561599c_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ==..ef7a11a41ae9b29dc32440ca00ae4da696d343fe_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ== 100644 --- 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")