Create class for test result 99/28799/15
authorMarcin Niesluchowski <m.niesluchow@samsung.com>
Wed, 15 Oct 2014 17:26:08 +0000 (19:26 +0200)
committerRadoslaw Bartosiak <r.bartosiak@samsung.com>
Tue, 24 Mar 2015 11:53:40 +0000 (12:53 +0100)
Change-Id: I5da9105e4577805230929ca7c0057f456ef76090

13 files changed:
src/framework/include/dpl/test/statistic.h
src/framework/include/dpl/test/test_result.h [new file with mode: 0644]
src/framework/include/dpl/test/test_results_collector.h
src/framework/include/dpl/test/test_results_collector_console.h
src/framework/include/dpl/test/test_results_collector_html.h
src/framework/include/dpl/test/test_results_collector_summary.h
src/framework/include/dpl/test/test_results_collector_xml.h
src/framework/include/dpl/test/test_runner.h
src/framework/src/test_results_collector_console.cpp
src/framework/src/test_results_collector_html.cpp
src/framework/src/test_results_collector_summary.cpp
src/framework/src/test_results_collector_xml.cpp
src/framework/src/test_runner.cpp

index fe550bd..4990ffd 100644 (file)
@@ -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 <cstddef>
 
 #include <dpl/assert.h>
-#include <dpl/test/test_results_collector.h>
+#include <dpl/test/test_result.h>
 
 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 (file)
index 0000000..e2810d6
--- /dev/null
@@ -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 <dpl/test/performance_result.h>
+
+#include <string>
+
+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
index 6b1f6fe..08099f4 100644 (file)
@@ -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 <dpl/noncopyable.h>
-#include <dpl/test/performance_result.h>
+#include <dpl/test/test_result.h>
 
 #include <vector>
 #include <list>
@@ -44,12 +45,6 @@ class TestResultsCollectorBase :
   public:
     typedef TestResultsCollectorBase* (*CollectorConstructorFunc)();
     typedef std::list<std::string> 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 "";
index d56ccfa..8f43d75 100644 (file)
@@ -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);
index 8efe6d2..122d3f9 100644 (file)
@@ -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);
index ffc8769..8f83a71 100644 (file)
@@ -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);
index 49ea795..60e8aca 100644 (file)
@@ -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);
index 063fafb..a95ac48 100644 (file)
@@ -42,6 +42,7 @@
 #include <dpl/gdbbacktrace.h>
 #include <dpl/singleton.h>
 #include <dpl/test/performance_result.h>
+#include <dpl/test/test_result.h>
 #include <dpl/test/test_results_collector.h>
 
 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
     {
index 2c3a737..dab84f8 100644 (file)
@@ -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)
index eb39010..86fce37 100644 (file)
@@ -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)
index 39789a8..efcaa31 100644 (file)
@@ -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);
 }
 
index fe661aa..6ad2fce 100644 (file)
@@ -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<testcase name=\"");
@@ -135,8 +132,10 @@ void XmlCollector::CollectResult(const std::string& id,
     m_resultBuffer.append("\"");
 
     std::ostringstream ostr;
-    switch (status) {
-    case FailStatus::NONE:
+    ConstPerformanceResultPtr performanceResult;
+    switch (result.GetFailStatus()) {
+    case TestResult::FailStatus::NONE:
+        performanceResult = result.GetPerformanceResult();
         if (!performanceResult) {
             m_resultBuffer.append(" status=\"OK\"/>\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</testcase>\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</testcase>\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
index dd64968..5d82330 100644 (file)
@@ -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);
                   });
 }