• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2024 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5from __future__ import annotations
6
7import unittest
8
9from ordered_set import OrderedSet
10
11from crossbench.benchmarks.jetstream.jetstream_2_0 import JetStream20Benchmark
12from crossbench.benchmarks.jetstream.jetstream_2_1 import JetStream21Benchmark
13from crossbench.benchmarks.jetstream.jetstream_2_2 import JetStream22Benchmark
14from crossbench.benchmarks.jetstream.jetstream_3_0 import JetStream30Benchmark
15from crossbench.benchmarks.loading.loading_benchmark import PageLoadBenchmark
16from crossbench.benchmarks.loading.loadline_presets import (
17    LoadLinePhoneBenchmark, LoadLineTabletBenchmark)
18from crossbench.benchmarks.manual.manual_benchmark import ManualBenchmark
19from crossbench.benchmarks.memory.memory_benchmark import MemoryBenchmark
20from crossbench.benchmarks.motionmark.motionmark_1_0 import \
21    MotionMark10Benchmark
22from crossbench.benchmarks.motionmark.motionmark_1_1 import \
23    MotionMark11Benchmark
24from crossbench.benchmarks.motionmark.motionmark_1_2 import \
25    MotionMark12Benchmark
26from crossbench.benchmarks.motionmark.motionmark_1_3 import \
27    MotionMark13Benchmark
28from crossbench.benchmarks.speedometer.speedometer_2_0 import \
29    Speedometer20Benchmark
30from crossbench.benchmarks.speedometer.speedometer_2_1 import \
31    Speedometer21Benchmark
32from crossbench.benchmarks.speedometer.speedometer_3_0 import \
33    Speedometer30Benchmark
34from tests import test_helper
35
36ALL = (
37    JetStream20Benchmark,
38    JetStream21Benchmark,
39    JetStream22Benchmark,
40    JetStream30Benchmark,
41    LoadLinePhoneBenchmark,
42    LoadLineTabletBenchmark,
43    ManualBenchmark,
44    MotionMark10Benchmark,
45    MotionMark11Benchmark,
46    MotionMark12Benchmark,
47    MotionMark13Benchmark,
48    PageLoadBenchmark,
49    Speedometer20Benchmark,
50    Speedometer21Benchmark,
51    Speedometer30Benchmark,
52    MemoryBenchmark,
53)
54
55
56class AllBenchmarksTestCase(unittest.TestCase):
57
58  def test_unique_classes(self):
59    self.assertTupleEqual(ALL, tuple(OrderedSet(ALL)))
60
61  def test_aliases(self):
62    seen_names = OrderedSet()
63    seen_aliases = OrderedSet()
64    for benchmark_cls in ALL:
65      with self.subTest(benchmark_cls=benchmark_cls):
66        self.assertNotIn(benchmark_cls.NAME, seen_names)
67        seen_names.add(benchmark_cls.NAME)
68        for alias in benchmark_cls.aliases():
69          self.assertNotIn(alias, seen_aliases)
70          seen_aliases.add(alias)
71
72  def test_story_classes(self):
73    seen_story_classes = OrderedSet()
74    for benchmark_cls in ALL:
75      if benchmark_cls is MemoryBenchmark:
76        continue
77      if issubclass(benchmark_cls,
78                    PageLoadBenchmark) and (benchmark_cls
79                                            is not PageLoadBenchmark):
80        continue
81      self.assertNotIn(benchmark_cls.DEFAULT_STORY_CLS, seen_story_classes)
82      seen_story_classes.add(benchmark_cls.DEFAULT_STORY_CLS)
83
84
85if __name__ == "__main__":
86  test_helper.run_pytest(__file__)
87