1 #ifndef _TCUAPP_HPP 2 #define _TCUAPP_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 Tester application. 24 * 25 * Platform port (see tcuPlatform.hpp) must create App and issue calls to 26 * App::iterate() until it signals that test execution is completed. 27 *//*--------------------------------------------------------------------*/ 28 29 #include "tcuDefs.hpp" 30 #include "qpWatchDog.h" 31 #include "qpCrashHandler.h" 32 #include "deMutex.hpp" 33 34 namespace tcu 35 { 36 37 class Archive; 38 class Platform; 39 class TestContext; 40 class TestExecutor; 41 class CommandLine; 42 class TestLog; 43 44 // Defined in tcuTestExecutor.hpp 45 class TestRunResult; 46 47 /*--------------------------------------------------------------------*//*! 48 * \brief Test application 49 * 50 * Test application encapsulates full test execution logic. Platform port 51 * must create App object and repeately call iterate() until it returns 52 * false. 53 * 54 * On systems where main loop is not in control of application (such as 55 * Android or iOS) iterate() should be called in application update/draw 56 * callback. 57 * 58 * App is responsible of setting up crash handler (qpCrashHandler) and 59 * watchdog (qpWatchDog). 60 * 61 * See tcuMain.cpp for example on how to implement application stub. 62 *//*--------------------------------------------------------------------*/ 63 class App 64 { 65 public: 66 App (Platform& platform, Archive& archive, TestLog& log, const CommandLine& cmdLine); 67 virtual ~App (void); 68 69 bool iterate (void); 70 71 const TestRunResult& getResult (void) const; 72 73 void onWatchdogTimeout (void); 74 void onCrash (void); 75 76 protected: 77 Platform& m_platform; 78 qpWatchDog* m_watchDog; 79 qpCrashHandler* m_crashHandler; 80 de::Mutex m_crashLock; 81 bool m_crashed; 82 83 TestContext* m_testCtx; 84 TestExecutor* m_testExecutor; 85 }; 86 87 } // tcu 88 89 #endif // _TCUAPP_HPP 90