# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@octobus.net>
# Date 1541462983 -3600
#      Tue Nov 06 01:09:43 2018 +0100
# Node ID e366a7c308788c47c9a233521361aee2de47ff78
# Parent  70bb2a3dc1fc8e15d436c8b0ebffec4e7b270907
Add benchmark for perfrevlogwrite

We use different tests instead of variants because we expect them to have
significantly different performance patterns.

diff --git a/benchmarks/others.py b/benchmarks/others.py
--- a/benchmarks/others.py
+++ b/benchmarks/others.py
@@ -99,6 +99,60 @@
                                                 *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",
+            "--quiet",
+            target,
+            "--startrev", "-%d" % nbrev,
+            "--source", source,
+        ]
+        if lazydeltabase:
+            cmd.append("--lazydeltabase")
+        else:
+            cmd.append("--no-lazydeltabase")
+        return self.perfext(*cmd)
+
+    @params_as_kwargs
+    def track_perfrevlogwrite_changelog(self, nbrev, *args, **kwargs):
+        return self._run_one('--changelog', nbrev, 'full', lazydeltabase=False)
+
+    @params_as_kwargs
+    def track_perfrevlogwrite_manifest_full(self, nbrev, *args, **kwargs):
+        return self._run_one('--manifest', nbrev, 'full', lazydeltabase=False)
+
+    @params_as_kwargs
+    def track_perfrevlogwrite_manifest_parent_nonlazy(self, nbrev,
+            *args, **kwargs):
+        return self._run_one('--manifest', nbrev, 'parent-smallest',
+                             lazydeltabase=False)
+
+    @params_as_kwargs
+    def track_perfrevlogwrite_manifest_parent_lazy(self, nbrev, *args, **kwargs):
+        return self._run_one('--manifest', nbrev, 'parent-smallest',
+                             lazydeltabase=True)
+
+    @params_as_kwargs
+    def track_perfrevlogwrite_manifest_storage_nonlazy(self, nbrev,
+            *args, **kwargs):
+        return self._run_one('--manifest', nbrev, 'storage',
+                             lazydeltabase=False)
+
+    @params_as_kwargs
+    def track_perfrevlogwrite_manifest_storage_lazy(self, nbrev, *args, **kwargs):
+        return self._run_one('--manifest', nbrev, 'storage',
+                             lazydeltabase=True)
+
 class ManifestPerfTestSuite(BaseTestSuite):
     params = BaseTestSuite.params + [['persist', 'clear']]
     param_names = BaseTestSuite.param_names + ['disk_cache']