| Index: tools/telemetry/telemetry/benchmark.py
|
| diff --git a/tools/telemetry/telemetry/benchmark.py b/tools/telemetry/telemetry/benchmark.py
|
| index bfdca6e76bed55a42554efd1242e0d496bfb12b5..065205dc174a1a212f9f5f590263fa0e2d2742ae 100644
|
| --- a/tools/telemetry/telemetry/benchmark.py
|
| +++ b/tools/telemetry/telemetry/benchmark.py
|
| @@ -44,6 +44,15 @@ class Benchmark(command_line.Command):
|
| """
|
| options = {}
|
|
|
| + def __init__(self):
|
| + super(Benchmark, self).__init__()
|
| + self.page_test = self.CreatePageTest()
|
| + self.page_test.__name__ = self.__class__.__name__
|
| + if hasattr(self, '_disabled_strings'):
|
| + self.page_test._disabled_strings = self._disabled_strings
|
| + if hasattr(self, '_enabled_strings'):
|
| + self.page_test._enabled_strings = self._enabled_strings
|
| +
|
| @classmethod
|
| def Name(cls):
|
| name = cls.__module__.split('.')[-1]
|
| @@ -53,29 +62,26 @@ class Benchmark(command_line.Command):
|
| name += '.' + cls.page_set.Name()
|
| return name
|
|
|
| - @classmethod
|
| - def AddCommandLineArgs(cls, parser):
|
| - cls.PageTestClass().AddCommandLineArgs(parser)
|
| + def AddCommandLineArgs(self, parser):
|
| + self.page_test.AddCommandLineArgs(parser)
|
|
|
| - if hasattr(cls, 'AddTestCommandLineArgs'):
|
| - group = optparse.OptionGroup(parser, '%s test options' % cls.Name())
|
| - cls.AddTestCommandLineArgs(group)
|
| + if hasattr(self, 'AddTestCommandLineArgs'):
|
| + group = optparse.OptionGroup(parser, '%s test options' % self.Name())
|
| + self.AddTestCommandLineArgs(group)
|
| parser.add_option_group(group)
|
|
|
| - @classmethod
|
| - def SetArgumentDefaults(cls, parser):
|
| - cls.PageTestClass().SetArgumentDefaults(parser)
|
| + def SetArgumentDefaults(self, parser):
|
| + self.page_test.SetArgumentDefaults(parser)
|
| default_values = parser.get_default_values()
|
| invalid_options = [
|
| - o for o in cls.options if not hasattr(default_values, o)]
|
| + o for o in self.options if not hasattr(default_values, o)]
|
| if invalid_options:
|
| raise InvalidOptionsError('Invalid benchmark options: %s',
|
| ', '.join(invalid_options))
|
| - parser.set_defaults(**cls.options)
|
| + parser.set_defaults(**self.options)
|
|
|
| - @classmethod
|
| - def ProcessCommandLineArgs(cls, parser, args):
|
| - cls.PageTestClass().ProcessCommandLineArgs(parser, args)
|
| + def ProcessCommandLineArgs(self, parser, args):
|
| + self.page_test.ProcessCommandLineArgs(parser, args)
|
|
|
| def CustomizeBrowserOptions(self, options):
|
| """Add browser options that are required by this benchmark."""
|
| @@ -87,14 +93,6 @@ class Benchmark(command_line.Command):
|
| """Run this test with the given options."""
|
| self.CustomizeBrowserOptions(finder_options.browser_options)
|
|
|
| - pt = self.PageTestClass()()
|
| - pt.__name__ = self.__class__.__name__
|
| -
|
| - if hasattr(self, '_disabled_strings'):
|
| - pt._disabled_strings = self._disabled_strings
|
| - if hasattr(self, '_enabled_strings'):
|
| - pt._enabled_strings = self._enabled_strings
|
| -
|
| expectations = self.CreateExpectations()
|
| us = self.CreateUserStorySet(finder_options)
|
|
|
| @@ -103,7 +101,8 @@ class Benchmark(command_line.Command):
|
| benchmark_metadata = self.GetMetadata()
|
| results = results_options.CreateResults(benchmark_metadata, finder_options)
|
| try:
|
| - page_runner.Run(pt, us, expectations, finder_options, results)
|
| + page_runner.Run(self.page_test, us, expectations,
|
| + finder_options, results)
|
| except page_test.TestNotSupportedOnPlatformFailure as failure:
|
| logging.warning(str(failure))
|
|
|
| @@ -173,17 +172,16 @@ class Benchmark(command_line.Command):
|
| extracted_profile_dir_path)
|
| options.browser_options.profile_dir = extracted_profile_dir_path
|
|
|
| - @classmethod
|
| - def PageTestClass(cls):
|
| + def CreatePageTest(self):
|
| """Get the PageTest for this Benchmark.
|
|
|
| If the Benchmark has no PageTest, raises NotImplementedError.
|
| """
|
| - if not hasattr(cls, 'test'):
|
| + if not hasattr(self, 'test'):
|
| raise NotImplementedError('This test has no "test" attribute.')
|
| - if not issubclass(cls.test, page_test.PageTest):
|
| - raise TypeError('"%s" is not a PageTest.' % cls.test.__name__)
|
| - return cls.test
|
| + if not issubclass(self.test, page_test.PageTest):
|
| + raise TypeError('"%s" is not a PageTest.' % self.test.__name__)
|
| + return self.test()
|
|
|
| def CreatePageSet(self, options): # pylint: disable=W0613
|
| """Get the page set this test will run on.
|
|
|