static void bmk13_execute(void) { test_print("--- System: "); test_printn(sizeof(ReadyList) + sizeof(VTList) + PORT_IDLE_THREAD_STACK_SIZE + (sizeof(Thread) + sizeof(struct intctx) + sizeof(struct extctx) + PORT_INT_REQUIRED_STACK) * 2); test_println(" bytes"); test_print("--- Thread: "); test_printn(sizeof(Thread)); test_println(" bytes"); test_print("--- Timer : "); test_printn(sizeof(VirtualTimer)); test_println(" bytes"); #if CH_USE_SEMAPHORES || defined(__DOXYGEN__) test_print("--- Semaph: "); test_printn(sizeof(Semaphore)); test_println(" bytes"); #endif #if CH_USE_EVENTS || defined(__DOXYGEN__) test_print("--- EventS: "); test_printn(sizeof(EventSource)); test_println(" bytes"); test_print("--- EventL: "); test_printn(sizeof(EventListener)); test_println(" bytes"); #endif #if CH_USE_MUTEXES || defined(__DOXYGEN__) test_print("--- Mutex : "); test_printn(sizeof(Mutex)); test_println(" bytes"); #endif #if CH_USE_CONDVARS || defined(__DOXYGEN__) test_print("--- CondV.: "); test_printn(sizeof(CondVar)); test_println(" bytes"); #endif #if CH_USE_QUEUES || defined(__DOXYGEN__) test_print("--- Queue : "); test_printn(sizeof(GenericQueue)); test_println(" bytes"); #endif #if CH_USE_MAILBOXES || defined(__DOXYGEN__) test_print("--- MailB.: "); test_printn(sizeof(Mailbox)); test_println(" bytes"); #endif }
static void bmk9_execute(void) { uint32_t n; static uint8_t ib[16]; static InputQueue iq; chIQInit(&iq, ib, sizeof(ib), NULL); n = 0; test_wait_tick(); test_start_timer(1000); do { chIQPutI(&iq, 0); chIQPutI(&iq, 1); chIQPutI(&iq, 2); chIQPutI(&iq, 3); (void)chIQGet(&iq); (void)chIQGet(&iq); (void)chIQGet(&iq); (void)chIQGet(&iq); n++; #if defined(SIMULATOR) ChkIntSources(); #endif } while (!test_timer_done); test_print("--- Score : "); test_printn(n * 4); test_println(" bytes/S"); }
static void bmk7_execute(void) { uint32_t n; threads[0] = chThdCreateStatic(wa[0], WA_SIZE, chThdGetPriority()+5, thread3, NULL); threads[1] = chThdCreateStatic(wa[1], WA_SIZE, chThdGetPriority()+4, thread3, NULL); threads[2] = chThdCreateStatic(wa[2], WA_SIZE, chThdGetPriority()+3, thread3, NULL); threads[3] = chThdCreateStatic(wa[3], WA_SIZE, chThdGetPriority()+2, thread3, NULL); threads[4] = chThdCreateStatic(wa[4], WA_SIZE, chThdGetPriority()+1, thread3, NULL); n = 0; test_wait_tick(); test_start_timer(1000); do { chSemReset(&sem1, 0); n++; #if defined(SIMULATOR) ChkIntSources(); #endif } while (!test_timer_done); test_terminate_threads(); chSemReset(&sem1, 0); test_wait_threads(); test_print("--- Score : "); test_printn(n); test_print(" reschedules/S, "); test_printn(n * 6); test_println(" ctxswc/S"); }
static void bmk4_execute(void) { Thread *tp; uint32_t n; tp = threads[0] = chThdCreateStatic(wa[0], WA_SIZE, chThdGetPriority()+1, thread4, NULL); n = 0; test_wait_tick(); test_start_timer(1000); do { chSysLock(); chSchWakeupS(tp, RDY_OK); chSchWakeupS(tp, RDY_OK); chSchWakeupS(tp, RDY_OK); chSchWakeupS(tp, RDY_OK); chSysUnlock(); n += 4; #if defined(SIMULATOR) ChkIntSources(); #endif } while (!test_timer_done); chSysLock(); chSchWakeupS(tp, RDY_TIMEOUT); chSysUnlock(); test_wait_threads(); test_print("--- Score : "); test_printn(n * 2); test_println(" ctxswc/S"); }
void test_print_port_info(void) { #ifdef PORT_COMPILER_NAME test_print("*** Compiler: "); test_println(PORT_COMPILER_NAME); #endif test_print("*** Architecture: "); test_println(PORT_ARCHITECTURE_NAME); #ifdef PORT_CORE_VARIANT_NAME test_print("*** Core Variant: "); test_println(PORT_CORE_VARIANT_NAME); #endif #ifdef PORT_INFO test_print("*** Port Info: "); test_println(PORT_INFO); #endif }
static void bmk2_execute(void) { uint32_t n; threads[0] = chThdCreateStatic(wa[0], WA_SIZE, chThdGetPriority()+1, thread1, NULL); n = msg_loop_test(threads[0]); test_wait_threads(); test_print("--- Score : "); test_printn(n); test_print(" msgs/S, "); test_printn(n << 1); test_println(" ctxswc/S"); }
static void bmk6_execute(void) { uint32_t n = 0; void *wap = wa[0]; tprio_t prio = chThdGetPriority() + 1; test_wait_tick(); test_start_timer(1000); do { chThdCreateStatic(wap, WA_SIZE, prio, thread2, NULL); n++; #if defined(SIMULATOR) ChkIntSources(); #endif } while (!test_timer_done); test_print("--- Score : "); test_printn(n); test_println(" threads/S"); }
static void bmk8_execute(void) { uint32_t n; n = 0; test_wait_tick(); threads[0] = chThdCreateStatic(wa[0], WA_SIZE, chThdGetPriority()-1, thread8, (void *)&n); threads[1] = chThdCreateStatic(wa[1], WA_SIZE, chThdGetPriority()-1, thread8, (void *)&n); threads[2] = chThdCreateStatic(wa[2], WA_SIZE, chThdGetPriority()-1, thread8, (void *)&n); threads[3] = chThdCreateStatic(wa[3], WA_SIZE, chThdGetPriority()-1, thread8, (void *)&n); threads[4] = chThdCreateStatic(wa[4], WA_SIZE, chThdGetPriority()-1, thread8, (void *)&n); chThdSleepSeconds(1); test_terminate_threads(); test_wait_threads(); test_print("--- Score : "); test_printn(n); test_println(" ctxswc/S"); }
static void bmk10_execute(void) { static VirtualTimer vt1, vt2; uint32_t n = 0; test_wait_tick(); test_start_timer(1000); do { chSysLock(); chVTSetI(&vt1, 1, tmo, NULL); chVTSetI(&vt2, 10000, tmo, NULL); chVTResetI(&vt1); chVTResetI(&vt2); chSysUnlock(); n++; #if defined(SIMULATOR) ChkIntSources(); #endif } while (!test_timer_done); test_print("--- Score : "); test_printn(n * 2); test_println(" timers/S"); }
static void bmk12_execute(void) { uint32_t n = 0; test_wait_tick(); test_start_timer(1000); do { chMtxLock(&mtx1); chMtxUnlock(); chMtxLock(&mtx1); chMtxUnlock(); chMtxLock(&mtx1); chMtxUnlock(); chMtxLock(&mtx1); chMtxUnlock(); n++; #if defined(SIMULATOR) ChkIntSources(); #endif } while (!test_timer_done); test_print("--- Score : "); test_printn(n * 4); test_println(" lock+unlock/S"); }
static void bmk11_execute(void) { uint32_t n = 0; test_wait_tick(); test_start_timer(1000); do { chSemWait(&sem1); chSemSignal(&sem1); chSemWait(&sem1); chSemSignal(&sem1); chSemWait(&sem1); chSemSignal(&sem1); chSemWait(&sem1); chSemSignal(&sem1); n++; #if defined(SIMULATOR) ChkIntSources(); #endif } while (!test_timer_done); test_print("--- Score : "); test_printn(n * 4); test_println(" wait+signal/S"); }
/** * @brief Test execution thread function. * * @param[in] stream pointer to a @p BaseSequentialStream object for test * output * @return A failure boolean value casted to @p msg_t. * @retval FALSE if no errors occurred. * @retval TRUE if one or more tests failed. * * @api */ msg_t test_execute(BaseSequentialStream *stream) { int i, j; test_chp = stream; test_println(""); #if defined(TEST_SUITE_NAME) test_println("*** " TEST_SUITE_NAME); #else test_println("*** ChibiOS test suite"); #endif test_println("***"); test_print("*** Compiled: "); test_println(__DATE__ " - " __TIME__); #ifdef PLATFORM_NAME test_print("*** Platform: "); test_println(PLATFORM_NAME); #endif #ifdef BOARD_NAME test_print("*** Test Board: "); test_println(BOARD_NAME); #endif test_println(""); test_global_fail = FALSE; i = 0; while (test_suite[i]) { j = 0; while (test_suite[i][j]) { print_line(); test_print("--- Test Case "); test_printn(i + 1); test_print("."); test_printn(j + 1); test_print(" ("); test_print(test_suite[i][j]->name); test_println(")"); #if TEST_DELAY_BETWEEN_TESTS > 0 osalThreadSleepMilliseconds(TEST_DELAY_BETWEEN_TESTS); #endif execute_test(test_suite[i][j]); if (test_local_fail) { test_print("--- Result: FAILURE (#"); test_printn(test_step); test_print(" ["); print_tokens(); test_print("] \""); test_print(test_failure_message); test_println("\")"); } else test_println("--- Result: SUCCESS"); j++; } i++; } print_line(); test_println(""); test_print("Final result: "); if (test_global_fail) test_println("FAILURE"); else test_println("SUCCESS"); return (msg_t)test_global_fail; }
/** * @brief Test execution thread function. * * @param[in] p pointer to a @p BaseChannel object for test output * @return A failure boolean value. */ msg_t TestThread(void *p) { int i, j; chp = p; test_println(""); test_println("*** ChibiOS/RT test suite"); test_println("***"); test_print("*** Kernel: "); test_println(CH_KERNEL_VERSION); test_print("*** Compiled: "); test_println(__DATE__ " - " __TIME__); #ifdef PORT_COMPILER_NAME test_print("*** Compiler: "); test_println(PORT_COMPILER_NAME); #endif test_print("*** Architecture: "); test_println(PORT_ARCHITECTURE_NAME); #ifdef PORT_CORE_VARIANT_NAME test_print("*** Core Variant: "); test_println(PORT_CORE_VARIANT_NAME); #endif #ifdef PORT_INFO test_print("*** Port Info: "); test_println(PORT_INFO); #endif #ifdef PLATFORM_NAME test_print("*** Platform: "); test_println(PLATFORM_NAME); #endif #ifdef BOARD_NAME test_print("*** Test Board: "); test_println(BOARD_NAME); #endif test_println(""); global_fail = FALSE; i = 0; while (patterns[i]) { j = 0; while (patterns[i][j]) { print_line(); test_print("--- Test Case "); test_printn(i + 1); test_print("."); test_printn(j + 1); test_print(" ("); test_print(patterns[i][j]->name); test_println(")"); #if DELAY_BETWEEN_TESTS > 0 chThdSleepMilliseconds(DELAY_BETWEEN_TESTS); #endif execute_test(patterns[i][j]); if (local_fail) { test_print("--- Result: FAILURE (#"); test_printn(failpoint); test_print(" ["); print_tokens(); test_println("])"); } else test_println("--- Result: SUCCESS"); j++; } i++; } print_line(); test_println(""); test_print("Final result: "); if (global_fail) test_println("FAILURE"); else test_println("SUCCESS"); return (msg_t)global_fail; }
/** * @brief Test execution thread function. * * @param[in] stream pointer to a @p BaseSequentialStream object for test * output * @param[in] tsp test suite to execute * @return A failure boolean value casted to @p msg_t. * @retval false if no errors occurred. * @retval true if one or more tests failed. * * @api */ msg_t test_execute(BaseSequentialStream *stream, const testsuite_t *tsp) { int tseq, tcase; test_chp = stream; test_println(""); if (tsp->name != NULL) { test_print("*** "); test_println(tsp->name); } else { test_println("*** Test Suite"); } test_println("***"); test_print("*** Compiled: "); test_println(__DATE__ " - " __TIME__); #if defined(PLATFORM_NAME) test_print("*** Platform: "); test_println(PLATFORM_NAME); #endif #if defined(BOARD_NAME) test_print("*** Test Board: "); test_println(BOARD_NAME); #endif #if defined(TEST_SIZE_REPORT) { extern uint8_t __text_base, __text_end, _data_start, _data_end, _bss_start, _bss_end; test_println("***"); test_print("*** Text size: "); test_printn((uint32_t)(&__text_end - &__text_base)); test_println(" bytes"); test_print("*** Data size: "); test_printn((uint32_t)(&_data_end - &_data_start)); test_println(" bytes"); test_print("*** BSS size: "); test_printn((uint32_t)(&_bss_end - &_bss_start)); test_println(" bytes"); } #endif #if defined(TEST_REPORT_HOOK_HEADER) TEST_REPORT_HOOK_HEADER #endif test_println(""); test_global_fail = false; tseq = 0; while (tsp->sequences[tseq] != NULL) { #if TEST_SHOW_SEQUENCES == TRUE print_fat_line(); test_print("=== Test Sequence "); test_printn(tseq + 1); test_print(" ("); test_print(tsp->sequences[tseq]->name); test_println(")"); #endif tcase = 0; while (tsp->sequences[tseq]->cases[tcase] != NULL) { print_line(); test_print("--- Test Case "); test_printn(tseq + 1); test_print("."); test_printn(tcase + 1); test_print(" ("); test_print(tsp->sequences[tseq]->cases[tcase]->name); test_println(")"); #if TEST_DELAY_BETWEEN_TESTS > 0 osalThreadSleepMilliseconds(TEST_DELAY_BETWEEN_TESTS); #endif execute_test(tsp->sequences[tseq]->cases[tcase]); if (test_local_fail) { test_print("--- Result: FAILURE (#"); test_printn(test_step); test_print(" ["); print_tokens(); test_print("] \""); test_print(test_failure_message); test_println("\")"); } else { test_println("--- Result: SUCCESS"); } tcase++; } tseq++; } print_line(); test_println(""); test_print("Final result: "); if (test_global_fail) test_println("FAILURE"); else test_println("SUCCESS"); #if defined(TEST_REPORT_HOOK_END) TEST_REPORT_HOOK_END #endif return (msg_t)test_global_fail; }