# Copyright 2021 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import unittest import json import run_performance_tests from run_performance_tests import TelemetryCommandGenerator # The path where the output of a wpt run was written. This is the file that # gets processed by BaseWptScriptAdapter. OUTPUT_JSON_FILENAME = "out.json" class TelemetryCommandGeneratorTest(unittest.TestCase): def setUp(self): fake_args = [ './run_benchmark', '--isolated-script-test-output=output.json' ] self._fake_options = run_performance_tests.parse_arguments(fake_args) def testStorySelectionBeginEnd(self): story_selection_config = json.loads( '{"begin": 11, "end": 21, "abridged": false}') generator = TelemetryCommandGenerator( 'benchmark_name', self._fake_options, story_selection_config ) command = generator.generate('output_dir') self.assertIn('--story-shard-begin-index=11', command) self.assertIn('--story-shard-end-index=21', command) self.assertNotIn('--run-abridged-story-set', command) def testStorySelectionAbridgedDefault(self): story_selection_config = json.loads( '{"begin": 11, "end": 21}') generator = TelemetryCommandGenerator( 'benchmark_name', self._fake_options, story_selection_config ) command = generator.generate('output_dir') self.assertIn('--run-abridged-story-set', command) def testStorySelectionIndexSectionsSingleIndex(self): story_selection_config = json.loads( '{"sections": [{"begin": 11, "end": 21}, {"begin": 25, "end": 26}]}') generator = TelemetryCommandGenerator( 'benchmark_name', self._fake_options, story_selection_config ) command = generator.generate('output_dir') self.assertIn('--story-shard-indexes=11-21,25', command) def testStorySelectionIndexSectionsOpenEnds(self): story_selection_config = json.loads( '{"sections": [{"end": 10}, {"begin": 15, "end": 16}, {"begin": 20}]}') generator = TelemetryCommandGenerator( 'benchmark_name', self._fake_options, story_selection_config ) command = generator.generate('output_dir') self.assertIn('--story-shard-indexes=-10,15,20-', command) def testStorySelectionIndexSectionsIllegalRange(self): with self.assertRaises(ValueError): story_selection_config = json.loads( '{"sections": [{"begin": 15, "end": 16}, {"foo": "bar"}]}') generator = TelemetryCommandGenerator( 'benchmark_name', self._fake_options, story_selection_config ) generator.generate('output_dir') def testStorySelectionIndexSectionsEmpty(self): story_selection_config = json.loads( '{"sections": []}') generator = TelemetryCommandGenerator( 'benchmark_name', self._fake_options, story_selection_config ) command = generator.generate('output_dir') self.assertNotIn('--story-shard-indexes=', command)