From 2ac5040c9b21734610b51b232ddac5a9067aa2c2 Mon Sep 17 00:00:00 2001 From: Moritz Pflanzer Date: Mon, 24 Jul 2017 15:52:54 +0100 Subject: COMPMID-415: Add log level Change-Id: I93f49198ab2c32f52b4723a0624d588683a92451 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/81446 Reviewed-by: Anthony Barbier Tested-by: Kaizen --- tests/main.cpp | 41 +++++++++++++++++++++++++++++-------- tests/validation_new/Validation.cpp | 28 ++++++++++++------------- tests/validation_new/Validation.h | 17 +++++++-------- 3 files changed, 56 insertions(+), 30 deletions(-) (limited to 'tests') diff --git a/tests/main.cpp b/tests/main.cpp index e60aad4d86..4f17685098 100644 --- a/tests/main.cpp +++ b/tests/main.cpp @@ -22,6 +22,8 @@ * SOFTWARE. */ #include "framework/DatasetModes.h" +#include "framework/Exceptions.h" +#include "framework/Framework.h" #include "framework/Macros.h" #include "framework/command_line/CommandLineOptions.h" #include "framework/command_line/CommandLineParser.h" @@ -88,6 +90,17 @@ int main(int argc, char **argv) framework::LogFormat::JSON, }; + std::set supported_log_levels + { + framework::LogLevel::NONE, + framework::LogLevel::CONFIG, + framework::LogLevel::TESTS, + framework::LogLevel::ERRORS, + framework::LogLevel::DEBUG, + framework::LogLevel::MEASUREMENTS, + framework::LogLevel::ALL, + }; + auto help = parser.add_option("help"); help->set_help("Show this help message"); auto dataset_mode = parser.add_option>("mode", allowed_modes, framework::DatasetMode::ALL); @@ -106,6 +119,8 @@ int main(int argc, char **argv) filter_id->set_help("Test id. Only this test will be executed."); auto log_file = parser.add_option>("log-file"); log_file->set_help("Write output to file instead of to the console"); + auto log_level = parser.add_option>("log-level", supported_log_levels, framework::LogLevel::ALL); + log_file->set_help("Verbosity of the output"); auto throw_errors = parser.add_option("throw-errors"); throw_errors->set_help("Don't catch errors (useful for debugging)"); auto seed = parser.add_option>("seed", std::random_device()()); @@ -159,16 +174,23 @@ int main(int argc, char **argv) Scheduler::get().set_num_threads(threads->value()); - printer->print_global_header(); - printer->print_entry("Seed", support::cpp11::to_string(seed->value())); - printer->print_entry("Iterations", support::cpp11::to_string(iterations->value())); - printer->print_entry("Threads", support::cpp11::to_string(threads->value())); + if(log_level->value() > framework::LogLevel::NONE) + { + printer->print_global_header(); + } + + if(log_level->value() >= framework::LogLevel::CONFIG) { - using support::cpp11::to_string; - printer->print_entry("Dataset mode", to_string(dataset_mode->value())); + printer->print_entry("Seed", support::cpp11::to_string(seed->value())); + printer->print_entry("Iterations", support::cpp11::to_string(iterations->value())); + printer->print_entry("Threads", support::cpp11::to_string(threads->value())); + { + using support::cpp11::to_string; + printer->print_entry("Dataset mode", to_string(dataset_mode->value())); + } } - framework.init(instruments->value(), iterations->value(), dataset_mode->value(), filter->value(), filter_id->value()); + framework.init(instruments->value(), iterations->value(), dataset_mode->value(), filter->value(), filter_id->value(), log_level->value()); framework.set_printer(printer.get()); framework.set_throw_errors(throw_errors->value()); @@ -193,7 +215,10 @@ int main(int argc, char **argv) success = framework.run(); - printer->print_global_footer(); + if(log_level->value() > framework::LogLevel::NONE) + { + printer->print_global_footer(); + } return (success ? 0 : 1); } diff --git a/tests/validation_new/Validation.cpp b/tests/validation_new/Validation.cpp index 9daee449c1..8ab8274d2a 100644 --- a/tests/validation_new/Validation.cpp +++ b/tests/validation_new/Validation.cpp @@ -140,7 +140,7 @@ void check_border_element(const IAccessor &tensor, const Coordinates &id, ARM_COMPUTE_TEST_INFO("channel = " << channel); ARM_COMPUTE_TEST_INFO("target = " << std::setprecision(5) << target); ARM_COMPUTE_TEST_INFO("reference = " << std::setprecision(5) << ref); - ARM_COMPUTE_EXPECT_EQUAL(target, ref); + ARM_COMPUTE_EXPECT_EQUAL(target, ref, framework::LogLevel::DEBUG); if(!equal) { @@ -154,26 +154,26 @@ void check_border_element(const IAccessor &tensor, const Coordinates &id, void validate(const arm_compute::ValidRegion ®ion, const arm_compute::ValidRegion &reference) { - ARM_COMPUTE_EXPECT_EQUAL(region.anchor.num_dimensions(), reference.anchor.num_dimensions()); - ARM_COMPUTE_EXPECT_EQUAL(region.shape.num_dimensions(), reference.shape.num_dimensions()); + ARM_COMPUTE_EXPECT_EQUAL(region.anchor.num_dimensions(), reference.anchor.num_dimensions(), framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT_EQUAL(region.shape.num_dimensions(), reference.shape.num_dimensions(), framework::LogLevel::ERRORS); for(unsigned int d = 0; d < region.anchor.num_dimensions(); ++d) { - ARM_COMPUTE_EXPECT_EQUAL(region.anchor[d], reference.anchor[d]); + ARM_COMPUTE_EXPECT_EQUAL(region.anchor[d], reference.anchor[d], framework::LogLevel::ERRORS); } for(unsigned int d = 0; d < region.shape.num_dimensions(); ++d) { - ARM_COMPUTE_EXPECT_EQUAL(region.shape[d], reference.shape[d]); + ARM_COMPUTE_EXPECT_EQUAL(region.shape[d], reference.shape[d], framework::LogLevel::ERRORS); } } void validate(const arm_compute::PaddingSize &padding, const arm_compute::PaddingSize &reference) { - ARM_COMPUTE_EXPECT_EQUAL(padding.top, reference.top); - ARM_COMPUTE_EXPECT_EQUAL(padding.right, reference.right); - ARM_COMPUTE_EXPECT_EQUAL(padding.bottom, reference.bottom); - ARM_COMPUTE_EXPECT_EQUAL(padding.left, reference.left); + ARM_COMPUTE_EXPECT_EQUAL(padding.top, reference.top, framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT_EQUAL(padding.right, reference.right, framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT_EQUAL(padding.bottom, reference.bottom, framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT_EQUAL(padding.left, reference.left, framework::LogLevel::ERRORS); } void validate(const IAccessor &tensor, const void *reference_value) @@ -203,7 +203,7 @@ void validate(const IAccessor &tensor, const void *reference_value) ARM_COMPUTE_TEST_INFO("channel = " << channel); ARM_COMPUTE_TEST_INFO("target = " << std::setprecision(5) << target); ARM_COMPUTE_TEST_INFO("reference = " << std::setprecision(5) << ref); - ARM_COMPUTE_EXPECT_EQUAL(target, ref); + ARM_COMPUTE_EXPECT_EQUAL(target, ref, framework::LogLevel::DEBUG); if(!equal) { @@ -219,7 +219,7 @@ void validate(const IAccessor &tensor, const void *reference_value) const float percent_mismatches = static_cast(num_mismatches) / num_elements * 100.f; ARM_COMPUTE_TEST_INFO(num_mismatches << " values (" << std::setprecision(2) << percent_mismatches << "%) mismatched"); - ARM_COMPUTE_EXPECT_EQUAL(num_mismatches, 0); + ARM_COMPUTE_EXPECT_EQUAL(num_mismatches, 0, framework::LogLevel::ERRORS); } } @@ -296,17 +296,17 @@ void validate(const IAccessor &tensor, BorderSize border_size, const BorderMode const float percent_mismatches = static_cast(num_mismatches) / num_elements * 100.f; ARM_COMPUTE_TEST_INFO(num_mismatches << " values (" << std::setprecision(2) << percent_mismatches << "%) mismatched"); - ARM_COMPUTE_EXPECT_EQUAL(num_mismatches, 0); + ARM_COMPUTE_EXPECT_EQUAL(num_mismatches, 0, framework::LogLevel::ERRORS); } } void validate(std::vector classified_labels, std::vector expected_labels) { - ARM_COMPUTE_EXPECT_EQUAL(classified_labels.size(), expected_labels.size()); + ARM_COMPUTE_EXPECT_EQUAL(classified_labels.size(), expected_labels.size(), framework::LogLevel::ERRORS); for(unsigned int i = 0; i < expected_labels.size(); ++i) { - ARM_COMPUTE_EXPECT_EQUAL(classified_labels[i], expected_labels[i]); + ARM_COMPUTE_EXPECT_EQUAL(classified_labels[i], expected_labels[i], framework::LogLevel::ERRORS); } } } // namespace validation diff --git a/tests/validation_new/Validation.h b/tests/validation_new/Validation.h index fd8a79d238..5e947caf8d 100644 --- a/tests/validation_new/Validation.h +++ b/tests/validation_new/Validation.h @@ -28,6 +28,7 @@ #include "arm_compute/core/FixedPoint.h" #include "arm_compute/core/Types.h" #include "framework/Asserts.h" +#include "framework/Exceptions.h" #include "tests/IAccessor.h" #include "tests/TypePrinter.h" #include "tests/Utils.h" @@ -174,11 +175,11 @@ void validate(const IAccessor &tensor, const SimpleTensor &reference, const V int64_t num_mismatches = 0; int64_t num_elements = 0; - ARM_COMPUTE_EXPECT_EQUAL(tensor.element_size(), reference.element_size()); - ARM_COMPUTE_EXPECT_EQUAL(tensor.format(), reference.format()); - ARM_COMPUTE_EXPECT_EQUAL(tensor.data_type(), reference.data_type()); - ARM_COMPUTE_EXPECT_EQUAL(tensor.num_channels(), reference.num_channels()); - ARM_COMPUTE_EXPECT(compare_dimensions(tensor.shape(), reference.shape())); + ARM_COMPUTE_EXPECT_EQUAL(tensor.element_size(), reference.element_size(), framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT_EQUAL(tensor.format(), reference.format(), framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT_EQUAL(tensor.data_type(), reference.data_type(), framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT_EQUAL(tensor.num_channels(), reference.num_channels(), framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT(compare_dimensions(tensor.shape(), reference.shape()), framework::LogLevel::ERRORS); const int min_elements = std::min(tensor.num_elements(), reference.num_elements()); const int min_channels = std::min(tensor.num_channels(), reference.num_channels()); @@ -202,7 +203,7 @@ void validate(const IAccessor &tensor, const SimpleTensor &reference, const V ARM_COMPUTE_TEST_INFO("channel = " << c); ARM_COMPUTE_TEST_INFO("target = " << std::setprecision(5) << target_value); ARM_COMPUTE_TEST_INFO("reference = " << std::setprecision(5) << reference_value); - ARM_COMPUTE_EXPECT_EQUAL(target_value, reference_value); + ARM_COMPUTE_EXPECT_EQUAL(target_value, reference_value, framework::LogLevel::DEBUG); ++num_mismatches; } @@ -219,7 +220,7 @@ void validate(const IAccessor &tensor, const SimpleTensor &reference, const V ARM_COMPUTE_TEST_INFO(num_mismatches << " values (" << std::setprecision(2) << percent_mismatches << "%) mismatched (maximum tolerated " << std::setprecision(2) << tolerance_number << "%)"); - ARM_COMPUTE_EXPECT(num_mismatches <= absolute_tolerance_number); + ARM_COMPUTE_EXPECT(num_mismatches <= absolute_tolerance_number, framework::LogLevel::ERRORS); } } @@ -230,7 +231,7 @@ void validate(T target, T ref, U tolerance_abs_error, double tolerance_relative_ ARM_COMPUTE_TEST_INFO("reference = " << std::setprecision(5) << ref); ARM_COMPUTE_TEST_INFO("target = " << std::setprecision(5) << target); - ARM_COMPUTE_EXPECT(equal); + ARM_COMPUTE_EXPECT(equal, framework::LogLevel::ERRORS); } } // namespace validation } // namespace test -- cgit v1.2.1