# Copyright (C) 2018 Igalia S.L. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import logging import unittest import os from webkitpy.benchmark_runner.benchmark_runner import BenchmarkRunner from webkitpy.benchmark_runner.browser_driver.browser_driver import BrowserDriver from webkitpy.benchmark_runner.browser_driver.browser_driver_factory import ( BrowserDriverFactory, ) from webkitpy.benchmark_runner.run_benchmark import ( benchmark_runner_subclasses, ) _log = logging.getLogger(__name__) class FakeBrowserDriver(BrowserDriver): browser_name = None process_search_list = [] platform = "fake" def __init__(self): self.process_name = "fake/process" def prepare_env(self, config): pass def prepare_initial_env(self, config): pass def restore_env(self): pass def restore_env_after_all_testing(self): pass def close_browsers(self): pass def launch_url(self, url, options, browser_build_path, browser_path): pass def launch_webdriver(self, url, driver): pass BrowserDriverFactory.add_browser_driver("fake", None, FakeBrowserDriver) class FakeBenchmarkRunner(BenchmarkRunner): name = 'fake' def __init__(self, plan_file, local_copy, count_override, build_dir, output_file, platform, browser, browser_path): super(FakeBenchmarkRunner, self).__init__(plan_file, local_copy, count_override, build_dir, output_file, platform, browser, browser_path) def execute(self): return True # This tests for some features of benchmark_runner that browserperfdash_runner depends on class BrowserPerfDashRunnerTest(unittest.TestCase): def test_list_plans_at_least_five(self): plan_list = BenchmarkRunner.available_plans() self.assertTrue(len(plan_list) > 4) def test_benchmark_runner_subclasses_at_least_two(self): self.assertTrue(len(benchmark_runner_subclasses) > 1) def test_can_construct_runner_object_minimum_parameters(self): # This tests that constructing the benchmark_runner object specifying the minimum required paramaters is ok. plan_list = BenchmarkRunner.available_plans() build_dir = os.path.abspath(os.curdir) runner = FakeBenchmarkRunner( plan_list[0], False, 1, build_dir, "/tmp/testOutput.txt", "fake", None, None ) self.assertTrue(runner.execute())