Rtos API example

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers utest_greentea_handlers.cpp Source File

utest_greentea_handlers.cpp

00001 /****************************************************************************
00002  * Copyright (c) 2015, ARM Limited, All Rights Reserved
00003  * SPDX-License-Identifier: Apache-2.0
00004  *
00005  * Licensed under the Apache License, Version 2.0 (the "License"); you may
00006  * not use this file except in compliance with the License.
00007  * You may obtain a copy of the License at
00008  *
00009  * http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
00013  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  ****************************************************************************
00017  */
00018 
00019 #include "utest/utest_default_handlers.h"
00020 #include "utest/utest_case.h"
00021 #include "greentea-client/test_env.h"
00022 #include "utest/utest_stack_trace.h"
00023 #include "utest/utest_serial.h"
00024 
00025 using namespace utest::v1;
00026 
00027 static void selftest_failure_handler(const failure_t);
00028 static void test_failure_handler(const failure_t);
00029 
00030 
00031 const handlers_t utest::v1::greentea_abort_handlers = {
00032     default_greentea_test_setup_handler,
00033     greentea_test_teardown_handler,
00034     test_failure_handler,
00035     greentea_case_setup_handler,
00036     greentea_case_teardown_handler,
00037     greentea_case_failure_abort_handler
00038 };
00039 
00040 const handlers_t utest::v1::greentea_continue_handlers = {
00041     default_greentea_test_setup_handler,
00042     greentea_test_teardown_handler,
00043     test_failure_handler,
00044     greentea_case_setup_handler,
00045     greentea_case_teardown_handler,
00046     greentea_case_failure_continue_handler
00047 };
00048 
00049 const handlers_t utest::v1::selftest_handlers = {
00050     default_greentea_test_setup_handler,
00051     greentea_test_teardown_handler,
00052     selftest_failure_handler,
00053     greentea_case_setup_handler,
00054     greentea_case_teardown_handler,
00055     greentea_case_failure_continue_handler
00056 };
00057 
00058 
00059 // --- SPECIAL HANDLERS ---
00060 
00061 static void selftest_failure_handler(const failure_t failure) {
00062     UTEST_LOG_FUNCTION();
00063     if (failure.location == LOCATION_TEST_SETUP || failure.location == LOCATION_TEST_TEARDOWN || failure.reason == REASON_ASSERTION) {
00064         verbose_test_failure_handler(failure);
00065     }
00066     if (failure.reason == REASON_ASSERTION) {
00067         UTEST_DUMP_TRACE
00068         GREENTEA_TESTSUITE_RESULT(false);
00069         while(1) ;
00070     }
00071 }
00072 
00073 static void test_failure_handler(const failure_t failure) {
00074     UTEST_LOG_FUNCTION();
00075     if (failure.location == LOCATION_TEST_SETUP || failure.location == LOCATION_TEST_TEARDOWN) {
00076         verbose_test_failure_handler(failure);
00077         GREENTEA_TESTSUITE_RESULT(false);
00078         while(1) ;
00079     }
00080 }
00081 
00082 // --- GREENTEA HANDLERS ---
00083 
00084 void utest::v1::greentea_testcase_notification_handler(const char *testcase)
00085 {
00086     UTEST_LOG_FUNCTION();
00087     greentea_send_kv(GREENTEA_TEST_ENV_TESTCASE_NAME, testcase);
00088 }
00089 
00090 utest::v1::status_t utest::v1::default_greentea_test_setup_handler(const size_t number_of_cases)
00091 {
00092     UTEST_LOG_FUNCTION();
00093     GREENTEA_SETUP(UTEST_DEFAULT_GREENTEA_TIMEOUT, UTEST_DEFAULT_HOST_TEST_NAME);
00094     return greentea_test_setup_handler(number_of_cases);
00095 }
00096 
00097 
00098 utest::v1::status_t utest::v1::greentea_test_setup_handler(const size_t number_of_cases)
00099 {
00100     UTEST_LOG_FUNCTION();
00101     greentea_send_kv(TEST_ENV_TESTCASE_COUNT, number_of_cases);
00102     return verbose_test_setup_handler(number_of_cases);
00103 }
00104 
00105 void utest::v1::greentea_test_teardown_handler(const size_t passed, const size_t failed, const failure_t failure)
00106 {
00107     UTEST_LOG_FUNCTION();
00108     verbose_test_teardown_handler(passed, failed, failure);
00109     greentea_send_kv(TEST_ENV_TESTCASE_SUMMARY, passed, failed);
00110     int result = !(failed || (failure.reason && !(failure.reason & REASON_IGNORE)));
00111     GREENTEA_TESTSUITE_RESULT(result);
00112 }
00113 
00114 void utest::v1::greentea_test_failure_handler(const failure_t failure)
00115 {
00116     UTEST_LOG_FUNCTION();
00117     verbose_test_failure_handler(failure);
00118 }
00119 
00120 // --- GREENTEA CASE HANDLERS ---
00121 utest::v1::status_t utest::v1::greentea_case_setup_handler(const Case *const source, const size_t index_of_case)
00122 {
00123     UTEST_LOG_FUNCTION();
00124     utest::v1::status_t status = verbose_case_setup_handler(source, index_of_case);
00125     greentea_send_kv(TEST_ENV_TESTCASE_START, source->get_description ());
00126     return status;
00127 }
00128 
00129 utest::v1::status_t utest::v1::greentea_case_teardown_handler(const Case *const source, const size_t passed, const size_t failed, const failure_t failure)
00130 {
00131     UTEST_LOG_FUNCTION();
00132     greentea_send_kv(TEST_ENV_TESTCASE_FINISH, source->get_description (), passed, failed);
00133     return verbose_case_teardown_handler(source, passed, failed, failure);
00134 }
00135 
00136 utest::v1::status_t utest::v1::greentea_case_failure_abort_handler(const Case *const source, const failure_t failure)
00137 {
00138     UTEST_LOG_FUNCTION();
00139     utest::v1::status_t status = verbose_case_failure_handler(source, failure);
00140     return (status == STATUS_IGNORE) ? STATUS_IGNORE : STATUS_ABORT;
00141 }
00142 
00143 utest::v1::status_t utest::v1::greentea_case_failure_continue_handler(const Case *const source, const failure_t failure)
00144 {
00145     UTEST_LOG_FUNCTION();
00146     return verbose_case_failure_handler(source, failure);
00147 }