diff options
Diffstat (limited to 'tests/framework/Framework.cpp')
-rw-r--r-- | tests/framework/Framework.cpp | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/tests/framework/Framework.cpp b/tests/framework/Framework.cpp index 436aac0a34..bfb955c525 100644 --- a/tests/framework/Framework.cpp +++ b/tests/framework/Framework.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -130,10 +130,12 @@ Framework &Framework::get() void Framework::init(const FrameworkConfig &config) { _test_filter.reset(new TestFilter(config.mode, config.name_filter, config.id_filter)); - _num_iterations = config.num_iterations; - _log_level = config.log_level; - _cooldown_sec = config.cooldown_sec; - _configure_only = config.configure_only; + _num_iterations = config.num_iterations; + _log_level = config.log_level; + _cooldown_sec = config.cooldown_sec; + _configure_only = config.configure_only; + _print_rerun_cmd = config.print_rerun_cmd; + _seed = config.seed; _instruments = std::set<framework::InstrumentsDescription>(std::begin(config.instruments), std::end(config.instruments)); } @@ -209,6 +211,7 @@ void Framework::log_test_end(const TestInfo &info) { func_on_all_printers([&](Printer * p) { + p->print_profiler_header(_test_results.at(info).header_data); p->print_measurements(_test_results.at(info).measurements); }); } @@ -291,13 +294,13 @@ bool Framework::error_on_missing_assets() const return _error_on_missing_assets; } -void Framework::run_test(const TestInfo &info, TestCaseFactory &test_factory) +TestResult::Status Framework::run_test(const TestInfo &info, TestCaseFactory &test_factory) { if(test_factory.status() == TestCaseFactory::Status::DISABLED) { log_test_skipped(info); set_test_result(info, TestResult(TestResult::Status::DISABLED)); - return; + return TestResult::Status::DISABLED; } log_test_start(info); @@ -528,14 +531,16 @@ void Framework::run_test(const TestInfo &info, TestCaseFactory &test_factory) { if(_stop_on_error) { - throw std::runtime_error("Abort on first error."); + throw std::runtime_error("Abandon on first error."); } } + result.header_data = profiler.header(); result.measurements = profiler.measurements(); set_test_result(info, result); log_test_end(info); + return result.status; } bool Framework::run() @@ -555,6 +560,7 @@ bool Framework::run() int id = 0; int id_run_test = 0; + ARM_COMPUTE_UNUSED(id_run_test); // Not used if ARM_COMPUTE_CL is not defined for(auto &test_factory : _test_factories) { @@ -578,9 +584,11 @@ bool Framework::run() CLScheduler::get().set_queue(new_queue); } #endif // ARM_COMPUTE_CL - - run_test(test_info, *test_factory); - + TestResult::Status result = run_test(test_info, *test_factory); + if((_print_rerun_cmd) && (result == TestResult::Status::CRASHED || result == TestResult::Status::FAILED)) + { + std::cout << "Rerun command: ./arm_compute_validation --filter='^" << test_info.name << "$' --seed=" << _seed << std::endl; + } ++id_run_test; // Run test delay @@ -630,6 +638,7 @@ void Framework::print_test_results(Printer &printer) const for(const auto &test : _test_results) { printer.print_test_header(test.first); + printer.print_profiler_header(test.second.header_data); printer.print_measurements(test.second.measurements); printer.print_test_footer(); } @@ -679,7 +688,7 @@ std::vector<TestInfo> Framework::test_infos() const for(const auto &factory : _test_factories) { - TestInfo test_info{ id, factory->name(), factory->mode(), factory->status() }; + const TestInfo test_info{ id, factory->name(), factory->mode(), factory->status() }; if(_test_filter->is_selected(test_info)) { |