mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-17 18:12:46 +01:00
test_utils_interactive_sync: add a helper for synchronizing tests
Add an implementation that waits for 's' to print 'START' and return. If 'r' is given is prints 'READY' to allow querying for state. The help and answered string have to be different to not match the other. Using puts/getchar was smaller than using `stdio_read/stdio_write` on the example I tested with `esp32`.
This commit is contained in:
parent
3e753834e7
commit
027426793c
@ -25,6 +25,9 @@ endif
|
|||||||
ifneq (,$(filter shell_commands,$(USEMODULE)))
|
ifneq (,$(filter shell_commands,$(USEMODULE)))
|
||||||
DIRS += shell/commands
|
DIRS += shell/commands
|
||||||
endif
|
endif
|
||||||
|
ifneq (,$(filter test_utils_interactive_sync,$(USEMODULE)))
|
||||||
|
DIRS += test_utils/interactive_sync
|
||||||
|
endif
|
||||||
ifneq (,$(filter net_help,$(USEMODULE)))
|
ifneq (,$(filter net_help,$(USEMODULE)))
|
||||||
DIRS += net/crosslayer/net_help
|
DIRS += net/crosslayer/net_help
|
||||||
endif
|
endif
|
||||||
|
@ -9,3 +9,5 @@ endif
|
|||||||
ifneq (,$(filter prng_fortuna,$(USEMODULE)))
|
ifneq (,$(filter prng_fortuna,$(USEMODULE)))
|
||||||
CFLAGS += -DCRYPTO_AES
|
CFLAGS += -DCRYPTO_AES
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
include $(RIOTBASE)/sys/test_utils/Makefile.dep
|
||||||
|
42
sys/include/test_utils/interactive_sync.h
Normal file
42
sys/include/test_utils/interactive_sync.h
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Freie Universität Berlin
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU Lesser
|
||||||
|
* General Public License v2.1. See the file LICENSE in the top level
|
||||||
|
* directory for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup test_utils_interactive_sync Test interactive synchronization
|
||||||
|
* @ingroup sys
|
||||||
|
* @brief Utility function for synchronizing before a test
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
* @file
|
||||||
|
* @brief Synchronization for normally non interactive tests
|
||||||
|
*
|
||||||
|
* @author Gaëtan Harter <gaetan.harter@fu-berlin.de>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TEST_UTILS_INTERACTIVE_SYNC_H
|
||||||
|
#define TEST_UTILS_INTERACTIVE_SYNC_H
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Wait for the tester to start test
|
||||||
|
*
|
||||||
|
* @details Wait for a 's' character to return
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void test_utils_interactive_sync(void);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* TEST_UTILS_INTERACTIVE_SYNC_H */
|
||||||
|
/** @} */
|
3
sys/test_utils/Makefile.dep
Normal file
3
sys/test_utils/Makefile.dep
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
ifneq (,$(filter test_utils_interactive_sync,$(USEMODULE)))
|
||||||
|
USEMODULE += stdin
|
||||||
|
endif
|
3
sys/test_utils/interactive_sync/Makefile
Normal file
3
sys/test_utils/interactive_sync/Makefile
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
MODULE = test_utils_interactive_sync
|
||||||
|
|
||||||
|
include $(RIOTBASE)/Makefile.base
|
20
sys/test_utils/interactive_sync/interactive_sync.c
Normal file
20
sys/test_utils/interactive_sync/interactive_sync.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "test_utils/interactive_sync.h"
|
||||||
|
|
||||||
|
void test_utils_interactive_sync(void)
|
||||||
|
{
|
||||||
|
char c = '\0'; /* Print help on first loop */
|
||||||
|
do {
|
||||||
|
if (c == 'r') {
|
||||||
|
/* This one should have a different case than the help message
|
||||||
|
* otherwise we match it when using 'expect' */
|
||||||
|
puts("READY");
|
||||||
|
}
|
||||||
|
else if (c != '\n' && c != '\r') {
|
||||||
|
puts("Help: Press s to start test, r to print it is ready");
|
||||||
|
}
|
||||||
|
c = getchar();
|
||||||
|
} while (c != 's');
|
||||||
|
|
||||||
|
puts("START");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user