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