80 lines
2.9 KiB
Python
80 lines
2.9 KiB
Python
|
|
# 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)
|