60 строки
1.9 KiB
Python
60 строки
1.9 KiB
Python
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
"""SuperBench CLI benchmark subgroup command handler."""
|
|
|
|
import re
|
|
from pprint import pformat
|
|
|
|
from knack.util import CLIError
|
|
|
|
from superbench.benchmarks import Platform, BenchmarkRegistry
|
|
|
|
|
|
def benchmark_list_command_handler(name=None):
|
|
"""List benchmarks which match the regular expression.
|
|
|
|
Args:
|
|
name (str, optional): Benchmark name or regular expression. Defaults to None.
|
|
|
|
Raises:
|
|
CLIError: If cannot find the matching benchmark.
|
|
|
|
Returns:
|
|
list: Benchmark list.
|
|
"""
|
|
benchmark_list = list(BenchmarkRegistry.get_all_benchmark_predefine_settings().keys())
|
|
if name is None:
|
|
return benchmark_list
|
|
filter_list = list(filter(re.compile(name).match, benchmark_list))
|
|
if not filter_list:
|
|
raise CLIError('Benchmark {} does not exist.'.format(name))
|
|
return filter_list
|
|
|
|
|
|
def benchmark_list_params_command_handler(name=None):
|
|
"""List parameters for benchmarks which match the regular expression.
|
|
|
|
Args:
|
|
name (str, optional): Benchmark name or regular expression. Defaults to None.
|
|
|
|
Raises:
|
|
CLIError: If cannot find the matching benchmark.
|
|
"""
|
|
for benchmark_name in benchmark_list_command_handler(name):
|
|
format_help = ''
|
|
for platform in Platform:
|
|
if platform in BenchmarkRegistry.benchmarks[benchmark_name]:
|
|
format_help = BenchmarkRegistry.get_benchmark_configurable_settings(
|
|
BenchmarkRegistry.create_benchmark_context(benchmark_name, platform=platform)
|
|
)
|
|
break
|
|
print(
|
|
(
|
|
f'=== {benchmark_name} ===\n\n'
|
|
f'{format_help}\n\n'
|
|
f'default values:\n'
|
|
f'{pformat(BenchmarkRegistry.benchmarks[benchmark_name]["predefine_param"])}\n'
|
|
)
|
|
)
|