diff --git a/benchmarks/basic_commands.py b/benchmarks/basic_commands.py index 73baad28aae0422ab4fd8acb6926550a38c109ab_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ==..aba709289ed35790b4bb951d0777accf229d9de6_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ== 100644 --- a/benchmarks/basic_commands.py +++ b/benchmarks/basic_commands.py @@ -1,3 +1,4 @@ +import base64 import contextlib import os import os.path @@ -136,4 +137,7 @@ def time_bundle(self, repo, n): self._execute("bundle", "--base", ":(-%d)" % (n+1), "/tmp/bundle.bundle") +class ExchangeTimeSuite(BaseTimeTestSuite): + param_names = BaseTimeTestSuite.param_names + ['strip', 'revset'] + params = BaseTrackTestSuite.params + [['last(all(), 10)'], [None, 'default']] @@ -139,9 +143,5 @@ -class ExchangeTimeSuite(BaseTimeTestSuite): - param_names = BaseTimeTestSuite.param_names + ['revset'] - params = BaseTrackTestSuite.params + [[None, 'default']] - - def setup(self, repo_name, revset): + def setup(self, repo_name, strip, revset): self.timer = timeit.default_timer self.sample_time = 10 super(ExchangeTimeSuite, self).setup(repo_name, revset) @@ -145,7 +145,8 @@ self.timer = timeit.default_timer self.sample_time = 10 super(ExchangeTimeSuite, self).setup(repo_name, revset) - self.clone_path = os.path.join(REPOS_DIR, '.cache', repo_name) + self.clone_path = os.path.join(REPOS_DIR, '.cache', 'partial-{}-{}'.format( + repo_name, base64.b64encode(strip))) if revset is not None: self.rev = subprocess.check_output([ self.hgpath, '--cwd', self.repo_path, 'identify', '-i', "-r", revset @@ -153,9 +154,9 @@ else: self.rev = None - def time_incoming(self, repo_name, revset): + def time_incoming(self, repo_name, strip, revset): cmd = [self.hgpath, '--cwd', self.clone_path, 'incoming', self.repo_path] if self.rev: cmd.extend(['-r', self.rev]) self._single_execute(cmd) @@ -157,9 +158,9 @@ cmd = [self.hgpath, '--cwd', self.clone_path, 'incoming', self.repo_path] if self.rev: cmd.extend(['-r', self.rev]) self._single_execute(cmd) - def time_outgoing(self, repo_name, revset): + def time_outgoing(self, repo_name, strip, revset): cmd = [self.hgpath, '--cwd', self.repo_path, 'outgoing', self.clone_path] if self.rev: cmd.extend(['-r', self.rev]) diff --git a/prepare_repos.py b/prepare_repos.py index 73baad28aae0422ab4fd8acb6926550a38c109ab_cHJlcGFyZV9yZXBvcy5weQ==..aba709289ed35790b4bb951d0777accf229d9de6_cHJlcGFyZV9yZXBvcy5weQ== 100644 --- a/prepare_repos.py +++ b/prepare_repos.py @@ -1,5 +1,6 @@ """ Ensure that all repository are cloned and at their tip """ +import base64 import errno import hglib import os @@ -7,6 +8,9 @@ from os.path import isdir, join import yaml +# changesets stripped in partial clones +PARTIAL_REVSET = ('last(all(), 10)',) + def read_configuration(config_path): with open(config_path) as config_file: @@ -25,15 +29,17 @@ if not isdir(clonedir): print("Cloning %s (%s) into %s" % (repo_name, repo['url'], clonedir)) hglib.clone(repo['url'], clonedir) - partialdir = join(cachedir, repo_name) - if not isdir(partialdir): - print("Cloning partial %s (%s) into %s (for exchange benchmarks)" % ( - repo_name, clonedir, partialdir)) - subprocess.check_call(['hg', 'clone', '--noupdate', clonedir, - partialdir]) - subprocess.check_call(['hg', '--cwd', partialdir, 'strip', '-r', - 'last(all(), 10)']) - subprocess.check_call(['hg', '--cwd', partialdir, 'debugupdatecache']) + for revset in PARTIAL_REVSET: + partialdir = join(cachedir, 'partial-{}-{}'.format( + repo_name, base64.b64encode(revset))) + if not isdir(partialdir): + print("Cloning partial %s (%s stripped off %s) into %s (for exchange benchmarks)" % ( + repo_name, clonedir, revset, partialdir)) + subprocess.check_call(['hg', 'clone', '--noupdate', clonedir, + partialdir]) + subprocess.check_call(['hg', '--cwd', partialdir, 'strip', '-r', + revset]) + subprocess.check_call(['hg', '--cwd', partialdir, 'debugupdatecache']) config = read_configuration("config.yaml")