diff --git a/benchmarks/others.py b/benchmarks/others.py index f60c4b84132054d25008780e16fdba75cec0d52f_YmVuY2htYXJrcy9vdGhlcnMucHk=..faf338d1fe0e1ec7c2bdccce1f32e1dbe1a78c56_YmVuY2htYXJrcy9vdGhlcnMucHk= 100644 --- a/benchmarks/others.py +++ b/benchmarks/others.py @@ -4,470 +4,470 @@ from .utils import BaseTestSuite, params_as_kwargs, REPO_DETAILS -class PerfTestSuite(BaseTestSuite): - - def track_status(self, *args, **kwargs): - return self.perfext("perfstatus") - - def track_heads(self, *args, **kwargs): - return self.perfext("perfheads") - - def track_branchmap(self, *args, **kwargs): - return self.perfext("perfbranchmap") - - def track_startup(self, *args, **kwargs): - return self.perfext("perfstartup") - - def track_ancestors(self, *args, **kwargs): - return self.perfext("perfancestors") - - def track_changegroupchangelog(self, *args, **kwargs): - return self.perfext("perfchangegroupchangelog") - - def track_dirstate(self, *args, **kwargs): - return self.perfext("perfdirstate") - - def track_perfdirstatewrite(self, *args, **kwargs): - return self.perfext("perfdirstatewrite") - - def track_perffncacheencode(self, *args, **kwargs): - return self.perfext("perffncacheencode") - - # def track_perffncachewrite(self, *args, **kwargs): - # return self.perfext("perffncachewrite") - - def track_perffncacheload(self, *args, **kwargs): - return self.perfext("perffncacheload") - - def track_perfignore_load(self, *args, **kwargs): - data = self.perfextjson('perfignore') - return data['load']['median'] - - def track_perfparents(self, *args, **kwargs): - return self.perfext("perfparents") - - def track_perfphases(self, *args, **kwargs): - return self.perfext("perfphases") - - def track_perfphasesremote(self, *args, **kwargs): - """Check the time necessary to compute phase against oneself""" - # XXX We could do testing against more variation - # (eg: lots of unknown nodes, many draft root, etc) - return self.perfext("perfphasesremote", '.') - - def track_perfwalk(self, *args, **kwargs): - return self.perfext("perfwalk") - -class RevlogReadTestSuite(BaseTestSuite): - params = BaseTestSuite.params[:] - param_names = BaseTestSuite.param_names[:] - - timeout = 1800 - - # add a parameters the distance between each read - param_names += ['distance'] - params += [[1]] - # add a parameters for the number of read to make - param_names += ['nbrev'] - params += [[100]] - - def _run_one(self, target, distance, nbrev, reverse=False): - cmd = [ - "perfrevlogrevisions", - target, - "--dist", "%d" % distance, - "--startrev", "-%d" % (distance * nbrev) - ] - if reverse: - cmd.append("--reverse") - return self.perfext(*cmd) - - @params_as_kwargs - def track_perfrevlogrevisions_manifest_asc(self, distance, nbrev, - *args, **kwargs): - return self._run_one('--manifest', distance, nbrev) - - @params_as_kwargs - def track_perfrevlogrevisions_manifest_desc(self, distance, nbrev, - *args, **kwargs): - return self._run_one('--manifest', distance, nbrev, reverse=True) - - @params_as_kwargs - def track_perfrevlogrevisions_changelog(self, distance, nbrev, - *args, **kwargs): - return self._run_one('--changelog', distance, nbrev) - -class RevlogWriteTestSuite(BaseTestSuite): - params = BaseTestSuite.params[:] - param_names = BaseTestSuite.param_names[:] - - timeout = 1800 - - # add a parameters for the number of read to make - param_names += ['nbrev'] - params += [[100]] - - def _run_one(self, target, nbrev, source, lazydeltabase=False): - cmd = [ - "perfrevlogwrite", - target, - "--startrev", "-%d" % nbrev, - "--source", source, - ] - if lazydeltabase: - cmd.append("--lazydeltabase") - else: - cmd.append("--no-lazydeltabase") - - key = ('perfrevlogwrite', target, nbrev, source, lazydeltabase) - return self.getperfdata(key, cmd) - - def _run_one_id(self, title, target, nbrev, source, lazydeltabase=False): - data = self._run_one(target, nbrev, source, lazydeltabase) - if data is None: - return float('nan') - title = None - for title in data.keys(): - if title.startswith(title): - break - if title is None: - return float('nan') - return data[title]['median'] - - def _run_one_full(self, target, nbrev, source, lazydeltabase=False): - return self._run_one_id('total time', target, nbrev, source, lazydeltabase) - - @params_as_kwargs - def track_perfrevlogwrite_changelog(self, nbrev, *args, **kwargs): - return self._run_one_full('--changelog', nbrev, 'full', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_full(self, nbrev, *args, **kwargs): - return self._run_one_full('--manifest', nbrev, 'full', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_parent_nonlazy(self, nbrev, - *args, **kwargs): - return self._run_one_full('--manifest', nbrev, 'parent-smallest', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_parent_lazy(self, nbrev, *args, **kwargs): - return self._run_one_full('--manifest', nbrev, 'parent-smallest', - lazydeltabase=True) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_storage_nonlazy(self, nbrev, - *args, **kwargs): - return self._run_one_full('--manifest', nbrev, 'storage', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_storage_lazy(self, nbrev, *args, **kwargs): - return self._run_one_full('--manifest', nbrev, 'storage', - lazydeltabase=True) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_full_max(self, nbrev, *args, **kwargs): - return self._run_one_id('max of', '--manifest', nbrev, 'full', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_full_99percentile(self, nbrev, *args, **kwargs): - return self._run_one_id('99% of', '--manifest', nbrev, 'full', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_full_95percentile(self, nbrev, *args, **kwargs): - return self._run_one_id('95% of', '--manifest', nbrev, 'full', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_full_90percentile(self, nbrev, *args, **kwargs): - return self._run_one_id('90% of', '--manifest', nbrev, 'full', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_full_75percentile(self, nbrev, *args, **kwargs): - return self._run_one_id('75% of', '--manifest', nbrev, 'full', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_full_50percentile(self, nbrev, *args, **kwargs): - return self._run_one_id('50% of', '--manifest', nbrev, 'full', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_full_25percentile(self, nbrev, *args, **kwargs): - return self._run_one_id('25% of', '--manifest', nbrev, 'full', - lazydeltabase=False) - - @params_as_kwargs - def track_perfrevlogwrite_manifest_full_min(self, nbrev, *args, **kwargs): - return self._run_one_id('min of', '--manifest', nbrev, 'full', - lazydeltabase=False) - -class ManifestPerfTestSuite(BaseTestSuite): - params = BaseTestSuite.params + [['persist', 'clear']] - param_names = BaseTestSuite.param_names + ['disk_cache'] - - _manifestcache = os.path.join('.hg', 'cache', 'manifestfulltextcache') - _manifestcache_backup = _manifestcache + '.asv_backup' - - @params_as_kwargs - def setup(self, **kwargs): - super(ManifestPerfTestSuite, self).setup(**kwargs) - # back up manifest cache state - self.cache_path = os.path.join(self.repo_path, self._manifestcache) - self.cache_present = os.path.exists(self.cache_path) - if self.cache_present: - self.backup_path = os.path.join( - self.repo_path, self._manifestcache_backup) - if os.path.exists(self.backup_path): - # in case a previous run left one behind - os.remove(self.backup_path) - os.link(self.cache_path, self.backup_path) - # ensure we have a current cache - self.hg('debugupdatecaches') - - @params_as_kwargs - def teardown(self, **kwargs): - super(ManifestPerfTestSuite, self).teardown(**kwargs) - if self.cache_present: - # restore manifest cache - os.remove(self.cache_path) - os.rename(self.backup_path, self.cache_path) - elif os.path.exists(self.cache_path): - # remove manifest cache, it wasn't there before - os.remove(self.cache_path) - - @params_as_kwargs - def track_manifest(self, disk_cache, **kwargs): - command = ("perfmanifest", "tip") - if disk_cache == 'clear': - command += '--clear-disk', - return self.perfext(*command) - -class RevlogReadOneTestSuite(BaseTestSuite): - params = BaseTestSuite.params[:] - param_names = BaseTestSuite.param_names[:] - - timeout = 300 - - @params_as_kwargs - def track_full(self, *args, **kwargs): - cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] - data = self.getperfdata((-1,), cmd) - if data is None: - return float('nan') - return data["full"].get('median', float('nan')) - - @params_as_kwargs - def track_hash(self, *args, **kwargs): - cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] - data = self.getperfdata((-1,), cmd) - if data is None: - return float('nan') - return data["hash"].get('median', float('nan')) - - @params_as_kwargs - def track_patch(self, *args, **kwargs): - cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] - data = self.getperfdata((-1,), cmd) - if data is None: - return float('nan') - return data["patch"].get('median', float('nan')) - - @params_as_kwargs - def track_decompress(self, *args, **kwargs): - cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] - data = self.getperfdata((-1,), cmd) - if data is None: - return float('nan') - return data["decompress"].get('median', float('nan')) - - @params_as_kwargs - def track_rawchunks(self, *args, **kwargs): - cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] - data = self.getperfdata((-1,), cmd) - if data is None: - return float('nan') - return data["rawchunks"].get('median', float('nan')) - - @params_as_kwargs - def track_read(self, *args, **kwargs): - cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] - data = self.getperfdata((-1,), cmd) - if data is None: - return float('nan') - return data["read"].get('median', float('nan')) - - @params_as_kwargs - def track_deltachain(self, *args, **kwargs): - cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] - data = self.getperfdata((-1,), cmd) - if data is None: - return float('nan') - return data["deltachain"].get('median', float('nan')) - - @params_as_kwargs - def track_slice(self, *args, **kwargs): - cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] - data = self.getperfdata((-1,), cmd) - if data is None or 'slice-sparse-chain' not in data: - return float('nan') - return data["slice-sparse-chain"].get('median', float('nan')) - -class PerfTracecopiesSuite(BaseTestSuite): - params = BaseTestSuite.params + [("changeset-compability", "default")] - param_names = BaseTestSuite.param_names + ["copies-data"] - - timeout = 300 - - @params_as_kwargs - def track_tracecopies_large(self, *args, **kwargs): - """benchmark the tracecopies logic over a large amount of candidates - - This benchmark requires the repository data to specify the following value: - - benchmark-variables: - trace-copies: - large: - source: REV - destination: REV - """ - - x = REPO_DETAILS.get(self.repo_name) - x = x.get('benchmark-variables', {}) - x = x.get('trace-copies', {}) - x = x.get('large', {}) - source = x.get('source') - destination = x.get('destination') - if source is None or destination is None: - return float('nan') - - cmd = ['perfpathcopies'] - cmd.append(source) - cmd.append(destination) - if kwargs["copies-data"] == "changeset-compability": - skip =self.should_skip_benchmark - if skip("(not 49ad315b39ee::)", self.get_asv_rev(), None, None): - return float('nan') - cmd.append("--config") - cmd.append("experimental.copies.read-from=compatibility") - return self.perfext(*cmd) - -class PerfTagsTestSuite(BaseTestSuite): - params = BaseTestSuite.params + [['cold', 'warm']] - param_names = BaseTestSuite.param_names + ['changelog'] - - timeout = 300 - - @params_as_kwargs - def track_tags(self, changelog, *args, **kwargs): - if changelog == 'warm': - clearcache = False - elif changelog == 'cold': - clearcache = True - else: - assert False - cmd = ['perftags'] - if clearcache: - cmd.append('--clear-revlogs') - else: - cmd.append('--no-clear-revlogs') - data = self.perfextjson(*cmd) - return data[None]['median'] - -class PerfBranchmapLoadSuite(BaseTestSuite): - params = BaseTestSuite.params + [['cold', 'warm']] - param_names = BaseTestSuite.param_names + ['changelog'] - - timeout = 300 - - @params_as_kwargs - def track_perfbranchmap_load(self, changelog, *args, **kwargs): - if changelog == 'warm': - clearcache = False - elif changelog == 'cold': - clearcache = True - else: - assert False - cmd = ['perfbranchmapload'] - if clearcache: - cmd.append('--clear-revlogs') - else: - cmd.append('--no-clear-revlogs') - data = self.perfextjson(*cmd) - if None not in data: - return float('nan') - return data[None]['median'] - -class PerfBranchmapUpdateSuite(BaseTestSuite): - params = BaseTestSuite.params + [['cold', 'warm'], [1, 100, 10000]] - param_names = BaseTestSuite.param_names + ['caches', 'missingrevs'] - - timeout = 300 - - @params_as_kwargs - def track_perfbranchmap_update(self, caches, missingrevs, *args, **kwargs): - if caches == 'warm': - clearcache = False - elif caches == 'cold': - clearcache = True - else: - assert False - - cmd = ['perfbranchmapupdate', '--quiet'] - if clearcache: - cmd.append('--clear-caches') - else: - cmd.append('--no-clear-caches') - cmd.append('--base') - cmd.append('not -%d:' % missingrevs) - cmd.append('--target') - cmd.append('-%d:' % missingrevs) - data = self.perfextjson(*cmd) - if None not in data: - return float('nan') - return data[None]['median'] - -class PerfHeadsSuite(BaseTestSuite): - params = BaseTestSuite.params + [['unfiltered', 'visible']] - param_names = BaseTestSuite.param_names + ['filter'] - - timeout = 300 - - @params_as_kwargs - def track_perfheads(self, filter, *args, **kwargs): - cmd = ['perfheads'] - if filter == 'unfiltered': - cmd.append('--hidden') - data = self.perfextjson(*cmd) - if None not in data: - return float('nan') - return data[None]['median'] - -class PerfIndexSuite(BaseTestSuite): - params = BaseTestSuite.params + [['first', 'last']] - param_names = BaseTestSuite.param_names + ['lookup'] - - timeout = 300 - - @params_as_kwargs - def track_perfindex(self, lookup, *args, **kwargs): - cmd = ['perfindex'] - if lookup == 'first': - cmd.append('--rev') - cmd.append('0') - elif lookup == 'last': - cmd.append('--rev') - cmd.append('tip') - else: - assert False - data = self.perfextjson(*cmd) - if None not in data: - return float('nan') - return data[None]['median'] +# class PerfTestSuite(BaseTestSuite): +# +# def track_status(self, *args, **kwargs): +# return self.perfext("perfstatus") +# +# def track_heads(self, *args, **kwargs): +# return self.perfext("perfheads") +# +# def track_branchmap(self, *args, **kwargs): +# return self.perfext("perfbranchmap") +# +# def track_startup(self, *args, **kwargs): +# return self.perfext("perfstartup") +# +# def track_ancestors(self, *args, **kwargs): +# return self.perfext("perfancestors") +# +# def track_changegroupchangelog(self, *args, **kwargs): +# return self.perfext("perfchangegroupchangelog") +# +# def track_dirstate(self, *args, **kwargs): +# return self.perfext("perfdirstate") +# +# def track_perfdirstatewrite(self, *args, **kwargs): +# return self.perfext("perfdirstatewrite") +# +# def track_perffncacheencode(self, *args, **kwargs): +# return self.perfext("perffncacheencode") +# +# # def track_perffncachewrite(self, *args, **kwargs): +# # return self.perfext("perffncachewrite") +# +# def track_perffncacheload(self, *args, **kwargs): +# return self.perfext("perffncacheload") +# +# def track_perfignore_load(self, *args, **kwargs): +# data = self.perfextjson('perfignore') +# return data['load']['median'] +# +# def track_perfparents(self, *args, **kwargs): +# return self.perfext("perfparents") +# +# def track_perfphases(self, *args, **kwargs): +# return self.perfext("perfphases") +# +# def track_perfphasesremote(self, *args, **kwargs): +# """Check the time necessary to compute phase against oneself""" +# # XXX We could do testing against more variation +# # (eg: lots of unknown nodes, many draft root, etc) +# return self.perfext("perfphasesremote", '.') +# +# def track_perfwalk(self, *args, **kwargs): +# return self.perfext("perfwalk") +# +# class RevlogReadTestSuite(BaseTestSuite): +# params = BaseTestSuite.params[:] +# param_names = BaseTestSuite.param_names[:] +# +# timeout = 1800 +# +# # add a parameters the distance between each read +# param_names += ['distance'] +# params += [[1]] +# # add a parameters for the number of read to make +# param_names += ['nbrev'] +# params += [[100]] +# +# def _run_one(self, target, distance, nbrev, reverse=False): +# cmd = [ +# "perfrevlogrevisions", +# target, +# "--dist", "%d" % distance, +# "--startrev", "-%d" % (distance * nbrev) +# ] +# if reverse: +# cmd.append("--reverse") +# return self.perfext(*cmd) +# +# @params_as_kwargs +# def track_perfrevlogrevisions_manifest_asc(self, distance, nbrev, +# *args, **kwargs): +# return self._run_one('--manifest', distance, nbrev) +# +# @params_as_kwargs +# def track_perfrevlogrevisions_manifest_desc(self, distance, nbrev, +# *args, **kwargs): +# return self._run_one('--manifest', distance, nbrev, reverse=True) +# +# @params_as_kwargs +# def track_perfrevlogrevisions_changelog(self, distance, nbrev, +# *args, **kwargs): +# return self._run_one('--changelog', distance, nbrev) +# +# class RevlogWriteTestSuite(BaseTestSuite): +# params = BaseTestSuite.params[:] +# param_names = BaseTestSuite.param_names[:] +# +# timeout = 1800 +# +# # add a parameters for the number of read to make +# param_names += ['nbrev'] +# params += [[100]] +# +# def _run_one(self, target, nbrev, source, lazydeltabase=False): +# cmd = [ +# "perfrevlogwrite", +# target, +# "--startrev", "-%d" % nbrev, +# "--source", source, +# ] +# if lazydeltabase: +# cmd.append("--lazydeltabase") +# else: +# cmd.append("--no-lazydeltabase") +# +# key = ('perfrevlogwrite', target, nbrev, source, lazydeltabase) +# return self.getperfdata(key, cmd) +# +# def _run_one_id(self, title, target, nbrev, source, lazydeltabase=False): +# data = self._run_one(target, nbrev, source, lazydeltabase) +# if data is None: +# return float('nan') +# title = None +# for title in data.keys(): +# if title.startswith(title): +# break +# if title is None: +# return float('nan') +# return data[title]['median'] +# +# def _run_one_full(self, target, nbrev, source, lazydeltabase=False): +# return self._run_one_id('total time', target, nbrev, source, lazydeltabase) +# +# @params_as_kwargs +# def track_perfrevlogwrite_changelog(self, nbrev, *args, **kwargs): +# return self._run_one_full('--changelog', nbrev, 'full', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_full(self, nbrev, *args, **kwargs): +# return self._run_one_full('--manifest', nbrev, 'full', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_parent_nonlazy(self, nbrev, +# *args, **kwargs): +# return self._run_one_full('--manifest', nbrev, 'parent-smallest', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_parent_lazy(self, nbrev, *args, **kwargs): +# return self._run_one_full('--manifest', nbrev, 'parent-smallest', +# lazydeltabase=True) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_storage_nonlazy(self, nbrev, +# *args, **kwargs): +# return self._run_one_full('--manifest', nbrev, 'storage', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_storage_lazy(self, nbrev, *args, **kwargs): +# return self._run_one_full('--manifest', nbrev, 'storage', +# lazydeltabase=True) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_full_max(self, nbrev, *args, **kwargs): +# return self._run_one_id('max of', '--manifest', nbrev, 'full', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_full_99percentile(self, nbrev, *args, **kwargs): +# return self._run_one_id('99% of', '--manifest', nbrev, 'full', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_full_95percentile(self, nbrev, *args, **kwargs): +# return self._run_one_id('95% of', '--manifest', nbrev, 'full', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_full_90percentile(self, nbrev, *args, **kwargs): +# return self._run_one_id('90% of', '--manifest', nbrev, 'full', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_full_75percentile(self, nbrev, *args, **kwargs): +# return self._run_one_id('75% of', '--manifest', nbrev, 'full', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_full_50percentile(self, nbrev, *args, **kwargs): +# return self._run_one_id('50% of', '--manifest', nbrev, 'full', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_full_25percentile(self, nbrev, *args, **kwargs): +# return self._run_one_id('25% of', '--manifest', nbrev, 'full', +# lazydeltabase=False) +# +# @params_as_kwargs +# def track_perfrevlogwrite_manifest_full_min(self, nbrev, *args, **kwargs): +# return self._run_one_id('min of', '--manifest', nbrev, 'full', +# lazydeltabase=False) +# +# class ManifestPerfTestSuite(BaseTestSuite): +# params = BaseTestSuite.params + [['persist', 'clear']] +# param_names = BaseTestSuite.param_names + ['disk_cache'] +# +# _manifestcache = os.path.join('.hg', 'cache', 'manifestfulltextcache') +# _manifestcache_backup = _manifestcache + '.asv_backup' +# +# @params_as_kwargs +# def setup(self, **kwargs): +# super(ManifestPerfTestSuite, self).setup(**kwargs) +# # back up manifest cache state +# self.cache_path = os.path.join(self.repo_path, self._manifestcache) +# self.cache_present = os.path.exists(self.cache_path) +# if self.cache_present: +# self.backup_path = os.path.join( +# self.repo_path, self._manifestcache_backup) +# if os.path.exists(self.backup_path): +# # in case a previous run left one behind +# os.remove(self.backup_path) +# os.link(self.cache_path, self.backup_path) +# # ensure we have a current cache +# self.hg('debugupdatecaches') +# +# @params_as_kwargs +# def teardown(self, **kwargs): +# super(ManifestPerfTestSuite, self).teardown(**kwargs) +# if self.cache_present: +# # restore manifest cache +# os.remove(self.cache_path) +# os.rename(self.backup_path, self.cache_path) +# elif os.path.exists(self.cache_path): +# # remove manifest cache, it wasn't there before +# os.remove(self.cache_path) +# +# @params_as_kwargs +# def track_manifest(self, disk_cache, **kwargs): +# command = ("perfmanifest", "tip") +# if disk_cache == 'clear': +# command += '--clear-disk', +# return self.perfext(*command) +# +# class RevlogReadOneTestSuite(BaseTestSuite): +# params = BaseTestSuite.params[:] +# param_names = BaseTestSuite.param_names[:] +# +# timeout = 300 +# +# @params_as_kwargs +# def track_full(self, *args, **kwargs): +# cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] +# data = self.getperfdata((-1,), cmd) +# if data is None: +# return float('nan') +# return data["full"].get('median', float('nan')) +# +# @params_as_kwargs +# def track_hash(self, *args, **kwargs): +# cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] +# data = self.getperfdata((-1,), cmd) +# if data is None: +# return float('nan') +# return data["hash"].get('median', float('nan')) +# +# @params_as_kwargs +# def track_patch(self, *args, **kwargs): +# cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] +# data = self.getperfdata((-1,), cmd) +# if data is None: +# return float('nan') +# return data["patch"].get('median', float('nan')) +# +# @params_as_kwargs +# def track_decompress(self, *args, **kwargs): +# cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] +# data = self.getperfdata((-1,), cmd) +# if data is None: +# return float('nan') +# return data["decompress"].get('median', float('nan')) +# +# @params_as_kwargs +# def track_rawchunks(self, *args, **kwargs): +# cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] +# data = self.getperfdata((-1,), cmd) +# if data is None: +# return float('nan') +# return data["rawchunks"].get('median', float('nan')) +# +# @params_as_kwargs +# def track_read(self, *args, **kwargs): +# cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] +# data = self.getperfdata((-1,), cmd) +# if data is None: +# return float('nan') +# return data["read"].get('median', float('nan')) +# +# @params_as_kwargs +# def track_deltachain(self, *args, **kwargs): +# cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] +# data = self.getperfdata((-1,), cmd) +# if data is None: +# return float('nan') +# return data["deltachain"].get('median', float('nan')) +# +# @params_as_kwargs +# def track_slice(self, *args, **kwargs): +# cmd = ["perfrevlogrevision", "--manifest", "--", "-1"] +# data = self.getperfdata((-1,), cmd) +# if data is None or 'slice-sparse-chain' not in data: +# return float('nan') +# return data["slice-sparse-chain"].get('median', float('nan')) +# +# class PerfTracecopiesSuite(BaseTestSuite): +# params = BaseTestSuite.params + [("changeset-compability", "default")] +# param_names = BaseTestSuite.param_names + ["copies-data"] +# +# timeout = 300 +# +# @params_as_kwargs +# def track_tracecopies_large(self, *args, **kwargs): +# """benchmark the tracecopies logic over a large amount of candidates +# +# This benchmark requires the repository data to specify the following value: +# +# benchmark-variables: +# trace-copies: +# large: +# source: REV +# destination: REV +# """ +# +# x = REPO_DETAILS.get(self.repo_name) +# x = x.get('benchmark-variables', {}) +# x = x.get('trace-copies', {}) +# x = x.get('large', {}) +# source = x.get('source') +# destination = x.get('destination') +# if source is None or destination is None: +# return float('nan') +# +# cmd = ['perfpathcopies'] +# cmd.append(source) +# cmd.append(destination) +# if kwargs["copies-data"] == "changeset-compability": +# skip =self.should_skip_benchmark +# if skip("(not 49ad315b39ee::)", self.get_asv_rev(), None, None): +# return float('nan') +# cmd.append("--config") +# cmd.append("experimental.copies.read-from=compatibility") +# return self.perfext(*cmd) +# +# class PerfTagsTestSuite(BaseTestSuite): +# params = BaseTestSuite.params + [['cold', 'warm']] +# param_names = BaseTestSuite.param_names + ['changelog'] +# +# timeout = 300 +# +# @params_as_kwargs +# def track_tags(self, changelog, *args, **kwargs): +# if changelog == 'warm': +# clearcache = False +# elif changelog == 'cold': +# clearcache = True +# else: +# assert False +# cmd = ['perftags'] +# if clearcache: +# cmd.append('--clear-revlogs') +# else: +# cmd.append('--no-clear-revlogs') +# data = self.perfextjson(*cmd) +# return data[None]['median'] +# +# class PerfBranchmapLoadSuite(BaseTestSuite): +# params = BaseTestSuite.params + [['cold', 'warm']] +# param_names = BaseTestSuite.param_names + ['changelog'] +# +# timeout = 300 +# +# @params_as_kwargs +# def track_perfbranchmap_load(self, changelog, *args, **kwargs): +# if changelog == 'warm': +# clearcache = False +# elif changelog == 'cold': +# clearcache = True +# else: +# assert False +# cmd = ['perfbranchmapload'] +# if clearcache: +# cmd.append('--clear-revlogs') +# else: +# cmd.append('--no-clear-revlogs') +# data = self.perfextjson(*cmd) +# if None not in data: +# return float('nan') +# return data[None]['median'] +# +# class PerfBranchmapUpdateSuite(BaseTestSuite): +# params = BaseTestSuite.params + [['cold', 'warm'], [1, 100, 10000]] +# param_names = BaseTestSuite.param_names + ['caches', 'missingrevs'] +# +# timeout = 300 +# +# @params_as_kwargs +# def track_perfbranchmap_update(self, caches, missingrevs, *args, **kwargs): +# if caches == 'warm': +# clearcache = False +# elif caches == 'cold': +# clearcache = True +# else: +# assert False +# +# cmd = ['perfbranchmapupdate', '--quiet'] +# if clearcache: +# cmd.append('--clear-caches') +# else: +# cmd.append('--no-clear-caches') +# cmd.append('--base') +# cmd.append('not -%d:' % missingrevs) +# cmd.append('--target') +# cmd.append('-%d:' % missingrevs) +# data = self.perfextjson(*cmd) +# if None not in data: +# return float('nan') +# return data[None]['median'] +# +# class PerfHeadsSuite(BaseTestSuite): +# params = BaseTestSuite.params + [['unfiltered', 'visible']] +# param_names = BaseTestSuite.param_names + ['filter'] +# +# timeout = 300 +# +# @params_as_kwargs +# def track_perfheads(self, filter, *args, **kwargs): +# cmd = ['perfheads'] +# if filter == 'unfiltered': +# cmd.append('--hidden') +# data = self.perfextjson(*cmd) +# if None not in data: +# return float('nan') +# return data[None]['median'] +# +# class PerfIndexSuite(BaseTestSuite): +# params = BaseTestSuite.params + [['first', 'last']] +# param_names = BaseTestSuite.param_names + ['lookup'] +# +# timeout = 300 +# +# @params_as_kwargs +# def track_perfindex(self, lookup, *args, **kwargs): +# cmd = ['perfindex'] +# if lookup == 'first': +# cmd.append('--rev') +# cmd.append('0') +# elif lookup == 'last': +# cmd.append('--rev') +# cmd.append('tip') +# else: +# assert False +# data = self.perfextjson(*cmd) +# if None not in data: +# return float('nan') +# return data[None]['median']