aboutsummaryrefslogtreecommitdiff
path: root/tests/framework/Framework.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/framework/Framework.cpp')
-rw-r--r--tests/framework/Framework.cpp33
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))
{