From d6be707394a02f586f148b72139b51eebd7030b8 Mon Sep 17 00:00:00 2001 From: Marcin Niesluchowski Date: Wed, 15 Oct 2014 19:26:08 +0200 Subject: [PATCH] Create class for test result Change-Id: I5da9105e4577805230929ca7c0057f456ef76090 --- src/framework/include/dpl/test/statistic.h | 12 ++-- src/framework/include/dpl/test/test_result.h | 72 ++++++++++++++++++++++ .../include/dpl/test/test_results_collector.h | 14 +---- .../dpl/test/test_results_collector_console.h | 5 +- .../include/dpl/test/test_results_collector_html.h | 5 +- .../dpl/test/test_results_collector_summary.h | 5 +- .../include/dpl/test/test_results_collector_xml.h | 5 +- src/framework/include/dpl/test/test_runner.h | 8 +-- .../src/test_results_collector_console.cpp | 24 ++++---- src/framework/src/test_results_collector_html.cpp | 24 ++++---- .../src/test_results_collector_summary.cpp | 9 +-- src/framework/src/test_results_collector_xml.cpp | 21 +++---- src/framework/src/test_runner.cpp | 31 +++------- 13 files changed, 134 insertions(+), 101 deletions(-) create mode 100644 src/framework/include/dpl/test/test_result.h diff --git a/src/framework/include/dpl/test/statistic.h b/src/framework/include/dpl/test/statistic.h index fe550bd..4990ffd 100644 --- a/src/framework/include/dpl/test/statistic.h +++ b/src/framework/include/dpl/test/statistic.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2014-2015 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ #include #include -#include +#include namespace DPL { namespace Test { @@ -42,15 +42,15 @@ class Statistic m_count(0) {} - void AddTest(TestResultsCollectorBase::FailStatus status) + void AddTest(TestResult::FailStatus status) { ++m_count; switch (status) { - case TestResultsCollectorBase::FailStatus::FAILED: ++m_failed; + case TestResult::FailStatus::FAILED: ++m_failed; break; - case TestResultsCollectorBase::FailStatus::IGNORED: ++m_ignored; + case TestResult::FailStatus::IGNORED: ++m_ignored; break; - case TestResultsCollectorBase::FailStatus::NONE: ++m_passed; + case TestResult::FailStatus::NONE: ++m_passed; break; default: Assert(false && "Bad FailStatus"); diff --git a/src/framework/include/dpl/test/test_result.h b/src/framework/include/dpl/test/test_result.h new file mode 100644 index 0000000..e2810d6 --- /dev/null +++ b/src/framework/include/dpl/test/test_result.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file test_result.h + * @author Marcin Niesluchowski (m.niesluchow@samsung.com) + * @author Lukasz Wrzosek (l.wrzosek@samsung.com) + * @version 1.0 + * @brief Header file with declaration of TestResult class + */ + +#ifndef DPL_TEST_RESULT_H +#define DPL_TEST_RESULT_H + +#include + +#include + +namespace DPL { +namespace Test { + +class TestResult +{ +public: + enum class FailStatus + { + NONE, + FAILED, + IGNORED + }; + + TestResult(FailStatus status, + const std::string& reason = std::string(), + ConstPerformanceResultPtr performanceResult = nullptr) + : m_failStatus(status) + , m_reason(reason) + , m_performanceResult(performanceResult) {} + + FailStatus GetFailStatus() const { + return m_failStatus; + } + + const std::string& GetReason() const { + return m_reason; + } + + ConstPerformanceResultPtr GetPerformanceResult() const { + return m_performanceResult; + } + +private: + const FailStatus m_failStatus; + const std::string m_reason; + ConstPerformanceResultPtr m_performanceResult; +}; + +} // namespace Test +} // namespace DPL + +#endif // DPL_TEST_RESULT_H diff --git a/src/framework/include/dpl/test/test_results_collector.h b/src/framework/include/dpl/test/test_results_collector.h index 6b1f6fe..08099f4 100644 --- a/src/framework/include/dpl/test/test_results_collector.h +++ b/src/framework/include/dpl/test/test_results_collector.h @@ -15,6 +15,7 @@ */ /* * @file test_results_collector.h + * @author Marcin Niesluchowski (m.niesluchow@samsung.com) * @author Lukasz Wrzosek (l.wrzosek@samsung.com) * @version 1.0 * @brief Header file with declaration of TestResultsCollectorBase @@ -24,7 +25,7 @@ #define DPL_TEST_RESULTS_COLLECTOR_H #include -#include +#include #include #include @@ -44,12 +45,6 @@ class TestResultsCollectorBase : public: typedef TestResultsCollectorBase* (*CollectorConstructorFunc)(); typedef std::list TestCaseIdList; - enum class FailStatus - { - NONE, - FAILED, - IGNORED - }; virtual ~TestResultsCollectorBase() {} @@ -63,10 +58,7 @@ class TestResultsCollectorBase : {} virtual void CollectTestsCasesList(const TestCaseIdList& /*list*/) {} - virtual void CollectResult(const std::string& id, - const FailStatus status = FailStatus::NONE, - const std::string& reason = "", - const ConstPerformanceResultPtr &performanceResult = nullptr) = 0; + virtual void CollectResult(const std::string& id, const TestResult &result) = 0; virtual std::string CollectorSpecificHelp() const { return ""; diff --git a/src/framework/include/dpl/test/test_results_collector_console.h b/src/framework/include/dpl/test/test_results_collector_console.h index d56ccfa..8f43d75 100644 --- a/src/framework/include/dpl/test/test_results_collector_console.h +++ b/src/framework/include/dpl/test/test_results_collector_console.h @@ -43,10 +43,7 @@ private: virtual bool ParseCollectorSpecificArg(const std::string& arg); virtual std::string CollectorSpecificHelp() const; virtual void CollectCurrentTestGroupName(const std::string& name); - virtual void CollectResult(const std::string& id, - const FailStatus status = FailStatus::NONE, - const std::string& reason = "", - const ConstPerformanceResultPtr &performanceResult = nullptr); + virtual void CollectResult(const std::string& id, const TestResult &result); virtual void Finish(); void PrintfErrorMessage(const char* type, const std::string& message); diff --git a/src/framework/include/dpl/test/test_results_collector_html.h b/src/framework/include/dpl/test/test_results_collector_html.h index 8efe6d2..122d3f9 100644 --- a/src/framework/include/dpl/test/test_results_collector_html.h +++ b/src/framework/include/dpl/test/test_results_collector_html.h @@ -46,10 +46,7 @@ private: virtual bool Configure(); virtual void Start(); virtual void CollectCurrentTestGroupName(const std::string& name); - virtual void CollectResult(const std::string& id, - const FailStatus status = FailStatus::NONE, - const std::string& reason = "", - const ConstPerformanceResultPtr &performanceResult = nullptr); + virtual void CollectResult(const std::string& id, const TestResult &result); virtual void Finish(); void PrintfErrorMessage(const char* type, const std::string& message); diff --git a/src/framework/include/dpl/test/test_results_collector_summary.h b/src/framework/include/dpl/test/test_results_collector_summary.h index ffc8769..8f83a71 100644 --- a/src/framework/include/dpl/test/test_results_collector_summary.h +++ b/src/framework/include/dpl/test/test_results_collector_summary.h @@ -45,10 +45,7 @@ private: virtual std::string CollectorSpecificHelp() const; virtual bool ParseCollectorSpecificArg(const std::string& arg); virtual void Start(); - virtual void CollectResult(const std::string& id, - const FailStatus status = FailStatus::NONE, - const std::string& reason = "", - const ConstPerformanceResultPtr &performanceResult = nullptr); + virtual void CollectResult(const std::string& id, const TestResult &result); virtual void Finish(); void writeStats(bool segfault); diff --git a/src/framework/include/dpl/test/test_results_collector_xml.h b/src/framework/include/dpl/test/test_results_collector_xml.h index 49ea795..60e8aca 100644 --- a/src/framework/include/dpl/test/test_results_collector_xml.h +++ b/src/framework/include/dpl/test/test_results_collector_xml.h @@ -44,10 +44,7 @@ private: virtual bool Configure(); virtual void Start(); virtual void CollectCurrentTestGroupName(const std::string& name); - virtual void CollectResult(const std::string& id, - const FailStatus status = FailStatus::NONE, - const std::string& reason = "", - const ConstPerformanceResultPtr &performanceResult = nullptr); + virtual void CollectResult(const std::string& id, const TestResult &result); virtual void Finish(); void GroupStart(const std::size_t pos, const std::string& name); diff --git a/src/framework/include/dpl/test/test_runner.h b/src/framework/include/dpl/test/test_runner.h index 063fafb..a95ac48 100644 --- a/src/framework/include/dpl/test/test_runner.h +++ b/src/framework/include/dpl/test/test_runner.h @@ -42,6 +42,7 @@ #include #include #include +#include #include namespace DPL { @@ -135,11 +136,8 @@ class TestRunner std::string getConcatedFailReason(const std::string &reason); - void CollectResult(const std::string& id, - const TestResultsCollectorBase::FailStatus status - = TestResultsCollectorBase::FailStatus::NONE, - const std::string& reason = std::string(), - const ConstPerformanceResultPtr &performance = nullptr); + void CollectResult(const std::string& id, const TestResult &result); + public: class TestFailed { diff --git a/src/framework/src/test_results_collector_console.cpp b/src/framework/src/test_results_collector_console.cpp index 2c3a737..dab84f8 100644 --- a/src/framework/src/test_results_collector_console.cpp +++ b/src/framework/src/test_results_collector_console.cpp @@ -70,17 +70,17 @@ void ConsoleCollector::Finish() PrintStats("All tests together", m_stats); } -void ConsoleCollector::CollectResult(const std::string& id, - const FailStatus status, - const std::string& reason, - const ConstPerformanceResultPtr &performanceResult) +void ConsoleCollector::CollectResult(const std::string& id, const TestResult &result) { using namespace DPL::Colors::Text; std::string tmp = "'" + id + "' ..."; printf("Running test case %-60s", tmp.c_str()); - switch (status) { - case FailStatus::NONE: + + ConstPerformanceResultPtr performanceResult; + switch (result.GetFailStatus()) { + case TestResult::FailStatus::NONE: + performanceResult = result.GetPerformanceResult(); if (!performanceResult) { printf(GREEN_RESULT_OK); break; @@ -100,17 +100,17 @@ void ConsoleCollector::CollectResult(const std::string& id, get_milliseconds(performanceResult->GetDuration()), get_milliseconds(performanceResult->GetMaxDuration()))); break; - case FailStatus::FAILED: - PrintfErrorMessage(" FAILED ", reason); + case TestResult::FailStatus::FAILED: + PrintfErrorMessage(" FAILED ", result.GetReason()); break; - case FailStatus::IGNORED: - PrintfIgnoredMessage("Ignored ", reason); + case TestResult::FailStatus::IGNORED: + PrintfIgnoredMessage("Ignored ", result.GetReason()); break; default: Assert(false && "Bad status"); } - m_stats.AddTest(status); - m_groupsStats[m_currentGroup].AddTest(status); + m_stats.AddTest(result.GetFailStatus()); + m_groupsStats[m_currentGroup].AddTest(result.GetFailStatus()); } void ConsoleCollector::PrintfErrorMessage(const char* type, const std::string& message) diff --git a/src/framework/src/test_results_collector_html.cpp b/src/framework/src/test_results_collector_html.cpp index eb39010..86fce37 100644 --- a/src/framework/src/test_results_collector_html.cpp +++ b/src/framework/src/test_results_collector_html.cpp @@ -105,17 +105,17 @@ bool HtmlCollector::ParseCollectorSpecificArg(const std::string& arg) return ParseCollectorFileArg(arg, m_filename) || ParseCollectorNoVerboseArg(arg, m_verbosity); } -void HtmlCollector::CollectResult(const std::string& id, - const FailStatus status, - const std::string& reason, - const ConstPerformanceResultPtr &performanceResult) +void HtmlCollector::CollectResult(const std::string& id, const TestResult &result) { using namespace DPL::Colors::Html; std::string tmp = "'" + id + "' ..."; fprintf(m_fp.Get(), "Running test case %-100s", tmp.c_str()); - switch (status) { - case FailStatus::NONE: + + ConstPerformanceResultPtr performanceResult; + switch (result.GetFailStatus()) { + case TestResult::FailStatus::NONE: + performanceResult = result.GetPerformanceResult(); if (!performanceResult) { fprintf(m_fp.Get(), GREEN_RESULT_OK); break; @@ -135,17 +135,17 @@ void HtmlCollector::CollectResult(const std::string& id, get_milliseconds(performanceResult->GetDuration()), get_milliseconds(performanceResult->GetMaxDuration()))); break; - case FailStatus::FAILED: - PrintfErrorMessage(" FAILED ", reason); + case TestResult::FailStatus::FAILED: + PrintfErrorMessage(" FAILED ", result.GetReason()); break; - case FailStatus::IGNORED: - PrintfIgnoredMessage("Ignored ", reason); + case TestResult::FailStatus::IGNORED: + PrintfIgnoredMessage("Ignored ", result.GetReason()); break; default: Assert(false && "Bad status"); } - m_groupsStats[m_currentGroup].AddTest(status); - m_stats.AddTest(status); + m_groupsStats[m_currentGroup].AddTest(result.GetFailStatus()); + m_stats.AddTest(result.GetFailStatus()); } void HtmlCollector::PrintfErrorMessage(const char* type, const std::string& message) diff --git a/src/framework/src/test_results_collector_summary.cpp b/src/framework/src/test_results_collector_summary.cpp index 39789a8..efcaa31 100644 --- a/src/framework/src/test_results_collector_summary.cpp +++ b/src/framework/src/test_results_collector_summary.cpp @@ -61,16 +61,11 @@ void SummaryCollector::Start() writeStats(true); } -void SummaryCollector::CollectResult(const std::string& id, - const FailStatus status, - const std::string& reason, - const ConstPerformanceResultPtr &performanceResult) +void SummaryCollector::CollectResult(const std::string& id, const TestResult &result) { DPL_UNUSED_PARAM(id); - DPL_UNUSED_PARAM(reason); - DPL_UNUSED_PARAM(performanceResult); - m_stats.AddTest(status); + m_stats.AddTest(result.GetFailStatus()); writeStats(true); } diff --git a/src/framework/src/test_results_collector_xml.cpp b/src/framework/src/test_results_collector_xml.cpp index fe661aa..6ad2fce 100644 --- a/src/framework/src/test_results_collector_xml.cpp +++ b/src/framework/src/test_results_collector_xml.cpp @@ -124,10 +124,7 @@ bool XmlCollector::ParseCollectorSpecificArg(const std::string& arg) return ParseCollectorFileArg(arg, m_filename) || ParseCollectorNoVerboseArg(arg, m_verbosity); } -void XmlCollector::CollectResult(const std::string& id, - const FailStatus status, - const std::string& reason, - const ConstPerformanceResultPtr &performanceResult) +void XmlCollector::CollectResult(const std::string& id, const TestResult &result) { m_resultBuffer.erase(); m_resultBuffer.append("\t\t\n"); break; @@ -157,14 +156,14 @@ void XmlCollector::CollectResult(const std::string& id, m_resultBuffer.append(ostr.str()); m_resultBuffer.append("\"/>\n"); break; - case FailStatus::FAILED: + case TestResult::FailStatus::FAILED: m_resultBuffer.append(" status=\"FAILED\">\n"); - PrintfErrorMessage("FAILED", EscapeSpecialCharacters(reason)); + PrintfErrorMessage("FAILED", EscapeSpecialCharacters(result.GetReason())); m_resultBuffer.append("\t\t\n"); break; - case FailStatus::IGNORED: + case TestResult::FailStatus::IGNORED: m_resultBuffer.append(" status=\"Ignored\">\n"); - PrintfIgnoredMessage("Ignored", EscapeSpecialCharacters(reason)); + PrintfIgnoredMessage("Ignored", EscapeSpecialCharacters(result.GetReason())); m_resultBuffer.append("\t\t\n"); break; default: @@ -183,7 +182,7 @@ void XmlCollector::CollectResult(const std::string& id, } m_outputBuffer.insert(last_case_pos - 2, m_resultBuffer); - m_stats.AddTest(status); + m_stats.AddTest(result.GetFailStatus()); UpdateGroupHeader(group_pos, m_stats.GetTotal() + 1, // include SegFault diff --git a/src/framework/src/test_runner.cpp b/src/framework/src/test_runner.cpp index dd64968..5d82330 100644 --- a/src/framework/src/test_runner.cpp +++ b/src/framework/src/test_runner.cpp @@ -251,8 +251,8 @@ TestRunner::Status TestRunner::RunTestCase(const TestCaseStruct& testCase) } catch (const TestFailed &e) { // Simple test failure CollectResult(testCase.name, - TestResultsCollectorBase::FailStatus::FAILED, - getConcatedFailReason(e.GetMessage())); + TestResult(TestResult::FailStatus::FAILED, + getConcatedFailReason(e.GetMessage()))); setCurrentTestCase(nullptr); return FAILED; @@ -260,8 +260,7 @@ TestRunner::Status TestRunner::RunTestCase(const TestCaseStruct& testCase) if (m_runIgnored) { // Simple test have to be implemented CollectResult(testCase.name, - TestResultsCollectorBase::FailStatus::IGNORED, - e.GetMessage()); + TestResult(TestResult::FailStatus::IGNORED, e.GetMessage())); } setCurrentTestCase(nullptr); @@ -269,25 +268,22 @@ TestRunner::Status TestRunner::RunTestCase(const TestCaseStruct& testCase) } catch (const std::exception &) { // std exception failure CollectResult(testCase.name, - TestResultsCollectorBase::FailStatus::FAILED, - "std exception"); + TestResult(TestResult::FailStatus::FAILED, "std exception")); setCurrentTestCase(nullptr); return FAILED; } catch (...) { // Unknown exception failure CollectResult(testCase.name, - TestResultsCollectorBase::FailStatus::FAILED, - "unknown exception"); - + TestResult(TestResult::FailStatus::FAILED, "unknown exception")); setCurrentTestCase(nullptr); return FAILED; } CollectResult(testCase.name, - TestResultsCollectorBase::FailStatus::NONE, - std::string(), - testCase.performance); + TestResult(TestResult::FailStatus::NONE, + std::string(), + testCase.performance)); setCurrentTestCase(nullptr); // Everything OK @@ -411,20 +407,13 @@ std::string TestRunner::getConcatedFailReason(const std::string &reason) return reason + ret; } -void TestRunner::CollectResult( - const std::string& id, - const TestResultsCollectorBase::FailStatus status, - const std::string& reason, - const ConstPerformanceResultPtr &performance) +void TestRunner::CollectResult(const std::string& id, const TestResult& result) { std::for_each(m_collectors.begin(), m_collectors.end(), [&](const TestResultsCollectors::value_type & collector) { - collector.second->CollectResult(id, - status, - reason, - performance); + collector.second->CollectResult(id, result); }); } -- 2.7.4