[benchmark] Naming Convention

New benchmark naming convention for better readability and improved naming system that accounts for performance coverage growth going forward.
This commit is contained in:
Pavol Vaskovic
2018-11-05 18:00:28 +01:00
parent 84c93c9e13
commit b4f901bae4
3 changed files with 183 additions and 12 deletions

View File

@@ -293,7 +293,7 @@ class BenchmarkDoctor(object):
self.log.addHandler(self.console_handler)
self.log.debug('Checking tests: %s', ', '.join(self.driver.tests))
self.requirements = [
self._name_matches_capital_words_convention,
self._name_matches_benchmark_naming_convention,
self._name_is_at_most_40_chars_long,
self._no_setup_overhead,
self._reasonable_setup_time,
@@ -305,20 +305,29 @@ class BenchmarkDoctor(object):
"""Unregister handler on exit."""
self.log.removeHandler(self.console_handler)
capital_words_re = re.compile('[A-Z][a-zA-Z0-9]+')
benchmark_naming_convention_re = re.compile(r'[A-Z][a-zA-Z0-9\-\.!?]+')
camel_humps_re = re.compile(r'[a-z][A-Z]')
@staticmethod
def _name_matches_capital_words_convention(measurements):
def _name_matches_benchmark_naming_convention(measurements):
name = measurements['name']
match = BenchmarkDoctor.capital_words_re.match(name)
match = BenchmarkDoctor.benchmark_naming_convention_re.match(name)
matched = match.group(0) if match else ''
composite_words = len(BenchmarkDoctor.camel_humps_re.findall(name)) + 1
if name != matched:
BenchmarkDoctor.log_naming.error(
"'%s' name doesn't conform to UpperCamelCase convention.",
"'%s' name doesn't conform to benchmark naming convention.",
name)
BenchmarkDoctor.log_naming.info(
'See http://bit.ly/UpperCamelCase')
'See http://bit.ly/BenchmarkNaming')
if composite_words > 4:
BenchmarkDoctor.log_naming.warning(
"'%s' name is composed of %d words.", name, composite_words)
BenchmarkDoctor.log_naming.info(
"Split '%s' name into dot-separated groups and variants. "
"See http://bit.ly/BenchmarkNaming", name)
@staticmethod
def _name_is_at_most_40_chars_long(measurements):