1#ifndef _TCUTESTSESSIONEXECUTOR_HPP 2#define _TCUTESTSESSIONEXECUTOR_HPP 3/*------------------------------------------------------------------------- 4 * drawElements Quality Program Tester Core 5 * ---------------------------------------- 6 * 7 * Copyright 2014 The Android Open Source Project 8 * 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 * 21 *//*! 22 * \file 23 * \brief Test executor. 24 *//*--------------------------------------------------------------------*/ 25 26#include "tcuDefs.hpp" 27#include "tcuTestContext.hpp" 28#include "tcuTestCase.hpp" 29#include "tcuTestPackage.hpp" 30#include "tcuTestHierarchyIterator.hpp" 31#include "deUniquePtr.hpp" 32 33namespace tcu 34{ 35 36//! Test run summary. 37class TestRunStatus 38{ 39public: 40 TestRunStatus (void) { clear(); } 41 42 void clear (void) 43 { 44 numExecuted = 0; 45 numPassed = 0; 46 numFailed = 0; 47 numNotSupported = 0; 48 numWarnings = 0; 49 isComplete = false; 50 } 51 52 int numExecuted; //!< Total number of cases executed. 53 int numPassed; //!< Number of cases passed. 54 int numFailed; //!< Number of cases failed. 55 int numNotSupported; //!< Number of cases not supported. 56 int numWarnings; //!< Number of QualityWarning / CompatibilityWarning results. 57 bool isComplete; //!< Is run complete. 58}; 59 60class TestSessionExecutor 61{ 62public: 63 TestSessionExecutor (TestPackageRoot& root, TestContext& testCtx); 64 ~TestSessionExecutor(void); 65 66 bool iterate (void); 67 68 bool isInTestCase (void) const { return m_isInTestCase; } 69 const TestRunStatus& getStatus (void) const { return m_status; } 70 71private: 72 void enterTestPackage (TestPackage* testPackage); 73 void leaveTestPackage (TestPackage* testPackage); 74 75 bool enterTestCase (TestCase* testCase, const std::string& casePath); 76 TestCase::IterateResult iterateTestCase (TestCase* testCase); 77 void leaveTestCase (TestCase* testCase); 78 79 enum State 80 { 81 STATE_TRAVERSE_HIERARCHY = 0, 82 STATE_EXECUTE_TEST_CASE, 83 84 STATE_LAST 85 }; 86 87 TestContext& m_testCtx; 88 89 DefaultHierarchyInflater m_inflater; 90 TestHierarchyIterator m_iterator; 91 92 de::MovePtr<TestCaseExecutor> m_caseExecutor; 93 TestRunStatus m_status; 94 State m_state; 95 bool m_abortSession; 96 bool m_isInTestCase; 97 deUint64 m_testStartTime; 98}; 99 100} // tcu 101 102#endif // _TCUTESTSESSIONEXECUTOR_HPP 103