[tools/perf] Add long running dual browser benchmark

Add a new benchmark for measuring memory during prolonged usage of
alternating browsers.

Benchmark is same as memory.dual_browser_test, but the test is run for
60 iterations and the browser is *not* restarted between page set
repeats.

BUG=623015
CQ_EXTRA_TRYBOTS=tryserver.chromium.perf:android_s5_perf_cq

Review-Url: https://codereview.chromium.org/2095923002
Cr-Commit-Position: refs/heads/master@{#402215}
diff --git a/tools/perf/benchmarks/memory_infra.py b/tools/perf/benchmarks/memory_infra.py
index 7107c8f..d3e5d10 100644
--- a/tools/perf/benchmarks/memory_infra.py
+++ b/tools/perf/benchmarks/memory_infra.py
@@ -115,7 +115,7 @@
     return not _IGNORED_STATS_RE.search(value.name)
 
 
-# Benchmark is disabled by default because it takes too long to run.
+# Benchmark disabled by default. Force to run with --also-run-disabled-tests.
 @benchmark.Disabled('all')
 class DualBrowserBenchmark(_MemoryInfra):
   """Measures memory usage while interacting with two different browsers.
@@ -139,6 +139,33 @@
     return not _IGNORED_STATS_RE.search(value.name)
 
 
+# Benchmark disabled by default. Force to run with --also-run-disabled-tests.
+@benchmark.Disabled('all')
+class LongRunningDualBrowserBenchmark(_MemoryInfra):
+  """Measures memory during prolonged usage of alternating browsers.
+
+  Same as memory.dual_browser_test, but the test is run for 60 iterations
+  and the browser is *not* restarted between page set repeats.
+  """
+  TBM_VERSION = 2
+  page_set = page_sets.DualBrowserStorySet
+  options = {'pageset_repeat': 60}
+
+  @classmethod
+  def Name(cls):
+    return 'memory.long_running_dual_browser_test'
+
+  @classmethod
+  def ShouldTearDownStateAfterEachStorySetRun(cls):
+    return False
+
+  @classmethod
+  def ValueCanBeAddedPredicate(cls, value, is_first_result):
+    # TODO(crbug.com/610962): Remove this stopgap when the perf dashboard
+    # is able to cope with the data load generated by TBMv2 metrics.
+    return not _IGNORED_STATS_RE.search(value.name)
+
+
 # TODO(bashi): Workaround for http://crbug.com/532075
 # @benchmark.Enabled('android') shouldn't be needed.
 @benchmark.Enabled('android')