5 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
30 EXIT_STATUS_TESTCASE_SUCCEEDED, // 0
31 EXIT_STATUS_TESTCASE_FAILED, // 1
32 EXIT_STATUS_TESTCASE_ABORTED, // 2
33 EXIT_STATUS_FORK_FAILED, // 3
34 EXIT_STATUS_WAITPID_FAILED, // 4
35 EXIT_STATUS_BAD_ARGUMENT, // 5
36 EXIT_STATUS_TESTCASE_NOT_FOUND // 6
39 const int32_t MAX_NUM_CHILDREN(16);
45 std::chrono::steady_clock::time_point startTime;
46 std::chrono::system_clock::time_point startSystemTime;
52 TestCase(int32_t index, testcase* testCase)
73 TestCase(int32_t tc, const char* name)
83 TestCase(const TestCase& rhs)
84 : testCase(rhs.testCase),
86 startTime(rhs.startTime),
87 startSystemTime(rhs.startSystemTime),
89 childPid(rhs.childPid),
93 TestCase& operator=(const TestCase& rhs)
95 testCase = rhs.testCase;
97 startTime = rhs.startTime;
98 startSystemTime = rhs.startSystemTime;
100 childPid = rhs.childPid;
108 * @param[in] testCase The Testkit-lite test case to run
110 int32_t RunTestCase(struct testcase_s& testCase);
113 * Run all test cases in parallel
114 * @param[in] processName The name of this process
115 * @param[in] tc_array The array of auto-generated testkit-lite test cases
116 * @param[in] reRunFailed True if failed test cases should be re-run
117 * @return 0 on success
119 int32_t RunAllInParallel(const char* processName, testcase tc_array[], bool reRunFailed);
122 * Run all test cases in serial
123 * @param[in] processName The name of this process
124 * @param[in] tc_array The array of auto-generated testkit-lite test cases
125 * @return 0 on success
127 int32_t RunAll(const char* processName, testcase tc_array[]);
130 * Find the named test case in the given array, and run it
131 * @param[in] tc_array The array of auto-generated testkit-lite test cases
132 * @param[in] testCaseName the name of the test case to run
133 * @return 0 on success
135 int32_t FindAndRunTestCase(::testcase tc_array[], const char* testCaseName);
138 * Display usage instructions for this program
139 * @param[in] program The name of this program
141 void Usage(const char* program);
145 * @param[in] argc Argument count
146 * @param[in] argv Argument vector
147 * @param[in] tc_array Array of test cases
149 int RunTests(int argc, char* const argv[], ::testcase tc_array[]);
151 } // namespace TestHarness