TestManager.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*
  2. * Copyright (c) 2017-2018,2020 The Linux Foundation. All rights reserved.
  3. *
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions are
  6. * met:
  7. * * Redistributions of source code must retain the above copyright
  8. * notice, this list of conditions and the following disclaimer.
  9. * * Redistributions in binary form must reproduce the above
  10. * copyright notice, this list of conditions and the following
  11. * disclaimer in the documentation and/or other materials provided
  12. * with the distribution.
  13. * * Neither the name of The Linux Foundation nor the names of its
  14. * contributors may be used to endorse or promote products derived
  15. * from this software without specific prior written permission.
  16. *
  17. * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
  18. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  19. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
  20. * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
  21. * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  22. * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  23. * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  24. * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  25. * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
  26. * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
  27. * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28. */
  29. #ifndef _TEST_MANAGER_H_
  30. #define _TEST_MANAGER_H_
  31. #include "TestBase.h"
  32. #include <vector>
  33. #include <string>
  34. #include "linux/msm_ipa.h"
  35. #ifdef HAVE_LIBXML
  36. #include <libxml/parser.h>
  37. #include <libxml/tree.h>
  38. #endif
  39. using namespace std;
  40. class TestsXMLResult
  41. {
  42. public:
  43. TestsXMLResult();
  44. ~TestsXMLResult();
  45. void AddTestcase(const string &suite_nm, const string &test_nm,
  46. double runtime, bool pass);
  47. void GenerateXMLReport(void);
  48. private:
  49. #ifdef HAVE_LIBXML
  50. xmlNodePtr GetSuiteElement(const string& suite_name);
  51. xmlDocPtr m_XML_doc_ptr;
  52. #endif
  53. };
  54. class TestManager /* Singleton */
  55. {
  56. public:
  57. static TestManager *GetInstance(
  58. const char* nat_mem_type_ptr = DFLT_NAT_MEM_TYPE);
  59. ~TestManager();
  60. void Register(TestBase & test);
  61. bool Setup();
  62. /* This is the place to put initialization
  63. * for the whole test framework
  64. */
  65. bool Run(vector <string> testSuiteList,
  66. vector <string> testNameList);
  67. /* This function will run all the tests in the system */
  68. bool Teardown();
  69. /* This is the place to put tear-down for the whole test framework */
  70. vector < TestBase * > m_testList;
  71. /* Holds pointers to all of the tests in the system */
  72. enum ipa_hw_type GetIPAHwType() {return m_IPAHwType;}
  73. const char* GetMemType() { return m_nat_mem_type_ptr; }
  74. private:
  75. TestManager(
  76. const char* nat_mem_type_ptr = DFLT_NAT_MEM_TYPE);
  77. TestManager(TestManager const &);
  78. TestManager & operator = (TestManager const &);
  79. void PrintSeparator(size_t len);
  80. void PrintRegisteredTests();
  81. void BuildRegressionTestSuite();
  82. void FetchIPAHwType();
  83. static TestManager *m_instance;
  84. size_t m_numTestsRun;
  85. size_t m_numTestsFailed;
  86. enum ipa_hw_type m_IPAHwType;
  87. const char* m_nat_mem_type_ptr;
  88. vector < string > m_failedTestsNames;
  89. };
  90. #endif