1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/tests
2020-08-21 16:33:06 +02:00
..
backtrace
bench_msg_pingpong Merge pull request #14661 from bergzand/pr/tests/bench/Add_ticks_result 2020-08-06 13:50:11 +02:00
bench_mutex_pingpong Merge pull request #14661 from bergzand/pr/tests/bench/Add_ticks_result 2020-08-06 13:50:11 +02:00
bench_runtime_coreapis
bench_sched_nop bench_sched_nop: Add number of clock ticks per cycle 2020-08-06 11:54:24 +02:00
bench_sizeof_coretypes
bench_sys_base64 examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
bench_thread_flags_pingpong Merge pull request #14661 from bergzand/pr/tests/bench/Add_ticks_result 2020-08-06 13:50:11 +02:00
bench_thread_yield_pingpong Merge pull request #14661 from bergzand/pr/tests/bench/Add_ticks_result 2020-08-06 13:50:11 +02:00
bench_timers
bench_xtimer Merge pull request #14736 from gschorcht/boards/feather_m0/split_wifi_version 2020-08-09 20:58:10 +02:00
bench_xtimer_load
bitarithm_timings tests/bitarithm_timings: add bitarithm_test_and_clear() to the test 2020-07-21 16:03:59 +02:00
blob
bloom_bytes tests: remove obsolete msp430 blacklists 2020-08-05 14:32:58 +02:00
board_calliope-mini
board_microbit
build_system_cflags_spaces
build_system_utils
buttons
c11_atomics_cpp_compat tests/c11_atomics_cpp_compat: remove msp430 special case 2020-08-05 14:32:58 +02:00
can_trx
candev
cb_mux
cb_mux_bench
cond_order
conn_can tests: remove obsolete msp430 blacklists 2020-08-05 14:32:58 +02:00
cortexm_common_ldscript
cpp11_condition_variable
cpp11_mutex
cpp11_thread
cpp_ctors
cpp_exclude build system: Add libstdcpp feature and doc 2020-07-15 11:45:22 +02:00
cpp_ext build system: Add libstdcpp feature and doc 2020-07-15 11:45:22 +02:00
cpu_cortexm_address_check
cpu_efm32_features
devfs
disp_dev
driver_ad7746
driver_adcxx1c
driver_ads101x
driver_adt7310
driver_adxl345
driver_apa102
driver_apds99xx
driver_apds99xx_full
driver_at
driver_at24cxxx examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
driver_at24mac
driver_at25xxx
driver_at30tse75x
driver_at86rf2xx drivers/at86rf2xx: register driver with netdev 2020-08-17 22:53:51 +02:00
driver_at86rf2xx_aes drivers/at86rf2xx: register driver with netdev 2020-08-17 22:53:51 +02:00
driver_at86rf215 tests: update msp430 memory blacklists 2020-08-05 14:32:58 +02:00
driver_ata8520e
driver_atwinc15x0 examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
driver_bh1750
driver_bh1900nux
driver_bme680 examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
driver_bmp180
driver_bmx055
driver_bmx280
driver_cc110x tests: remove obsolete msp430 blacklists 2020-08-05 14:32:58 +02:00
driver_ccs811
driver_ccs811_full
driver_dcf77 tests: remove obsolete msp430 blacklists 2020-08-05 14:32:58 +02:00
driver_dfplayer
driver_dht
driver_dose
driver_ds18
driver_ds75lx
driver_ds1307 examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
driver_ds3234
driver_dsp0401
driver_dynamixel tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
driver_edbg_eui
driver_enc28j60 examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
driver_encx24j600 examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
driver_feetech tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
driver_fxos8700
driver_grove_ledbar
driver_hd44780
driver_hdc1000
driver_hih6130
driver_hmc5883l
driver_hts221
driver_ili9341
driver_ina2xx
driver_ina3221
driver_io1_xplained
driver_isl29020
driver_isl29125
driver_itg320x
driver_jc42
driver_kw2xrf
driver_l3g4200d
driver_lc709203f
driver_lis2dh12
driver_lis3dh
driver_lis3mdl
driver_lpd8808
driver_lpsxxx
driver_lsm6dsl
driver_lsm303dlhc
driver_ltc4150 examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
driver_mag3110
driver_mhz19
driver_mma8x5x
driver_mma7660
driver_motor_driver
driver_mpl3115a2
driver_mpu9x50
driver_mpu9150
driver_mq3
driver_mrf24j40
driver_my9221
driver_netdev_common
driver_nrf24l01p_lowlevel
driver_nrfmin
driver_nvram_spi
driver_opt3001
driver_pca9633 tests/driver_pca9633: fix conflict with libc function name 2020-07-10 14:46:29 +02:00
driver_pca9685
driver_pcd8544
driver_ph_oem
driver_pir
driver_pn532
driver_pulse_counter examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
driver_qmc5883l
driver_rn2xx3
driver_scd30 driver/scd30: Add driver for Sensirion SCD30 2020-07-28 10:38:01 +02:00
driver_sdcard_spi drivers/sdcard_spi: remove auto-init 2020-07-09 08:50:53 +02:00
driver_sdp3x driver/sdp3x: Resolved irq pin code used even if irq pin not connected 2020-07-30 16:35:35 +02:00
driver_sds011
driver_servo
driver_sht1x
driver_sht2x
driver_sht3x
driver_shtc1
driver_si70xx
driver_si114x
driver_soft_spi
driver_soft_uart tests/driver_soft_uart: Makefile.ci: add small stm32 boards 2020-08-09 22:55:22 +02:00
driver_sps30 examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
driver_srf02
driver_srf04
driver_srf08
driver_stmpe811 tests/driver_stmpe811: update application README 2020-07-22 09:59:39 +02:00
driver_sx127x Merge pull request #14509 from jia200x/pr/lora_implicit_mode 2020-07-29 12:52:00 +02:00
driver_tcs37727
driver_tmp00x
driver_tps6274x
driver_tsl2561 tests/driver_tsl2561: update to new API changes 2018-07-25 12:01:39 +02:00
driver_tsl4531x
driver_vcnl40x0
driver_veml6070
driver_w5100
driver_ws281x
driver_xbee
eepreg
embunit
emcute tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
event_threads
event_wait_timeout
events sys/event: Add multi-queue initializers 2020-08-05 11:59:40 +02:00
evtimer_mbox evtimer: add mbox support 2020-08-21 15:19:22 +02:00
evtimer_msg
evtimer_underflow
external_board_dirs
external_board_native
external_module_dirs
fault_handler
float tests/float: don't increase iterations for native 2020-07-29 13:25:55 +02:00
fmt_print
frac-config
gnrc_dhcpv6_client tests/gnrc_dhcpv6_client: fix expected output 2020-07-15 16:26:38 +02:00
gnrc_dhcpv6_client_6lbr examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
gnrc_gomach
gnrc_ipv6_ext examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
gnrc_ipv6_ext_frag examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
gnrc_ipv6_ext_opt examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
gnrc_ipv6_fwd_w_sub tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
gnrc_ipv6_nib tests: update msp430 memory blacklists 2020-08-05 14:32:58 +02:00
gnrc_ipv6_nib_6ln tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
gnrc_ipv6_nib_dns tests: update msp430 memory blacklists 2020-08-05 14:32:58 +02:00
gnrc_lwmac
gnrc_mac_timeout tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
gnrc_ndp tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
gnrc_netif tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
gnrc_netif_ieee802154
gnrc_rpl_p2p tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
gnrc_rpl_srh examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
gnrc_sixlowpan tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
gnrc_sixlowpan_frag
gnrc_sixlowpan_iphc_w_vrb tests: update msp430 memory blacklists 2020-08-05 14:32:58 +02:00
gnrc_sock_async_event
gnrc_sock_dns tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
gnrc_sock_ip tests: update msp430 memory blacklists 2020-08-05 14:32:58 +02:00
gnrc_sock_neterr
gnrc_sock_udp tests/gnrc_sock_udp: memory blacklist msb-430 msb-430h 2020-08-05 14:32:58 +02:00
gnrc_tcp gnrc_netif: replace GNRC_NETIF_SINGLE with gnrc_netif_single pseudo-module 2020-07-28 13:59:20 +02:00
gnrc_udp tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
heap_cmd
irq
irq_disable_restore
isr_yield_higher
kconfig
kconfig_features tests/kconfig_features: remove board whitelist 2020-07-17 09:42:57 +02:00
l2util
leds
libc_newlib
log_color
log_printfnoformat
lua_loader
lwip tests: add capability to provide make command via environment 2020-07-09 10:59:01 +02:00
lwip_sock_ip
lwip_sock_tcp tests/lwip_sock_tcp: fix -EADDRINUSE test 2020-07-31 12:49:36 +02:00
lwip_sock_udp
malloc tests/malloc: reduce chunk size to 128b 2020-07-23 12:50:32 +02:00
mcuboot
memarray
minimal
mpu_noexec_ram
mpu_stack_guard
msg_avail
msg_send_receive
msg_try_receive examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
mtd_at24cxxx
mtd_at25xxx
mtd_flashpage
mtd_mapper
mutex_order
mutex_unlock_and_sleep
nanocoap_cli tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
netdev_test
netstats_l2
nimble_autoconn_ccnl
nimble_autoconn_gnrc
nimble_l2cap tests/nimble_l2cap: adapt to l2cap API changes 2020-07-08 08:46:43 +02:00
nimble_l2cap_server tests/nimble_l2cap: increase NimBLEs msys bufsize 2020-07-08 08:46:43 +02:00
nimble_statconn_gnrc tests/nimble_statconn_gnrc: initial import 2020-07-06 08:14:09 +02:00
nordic_softdevice
od
periph_adc
periph_backup_ram
periph_cpuid
periph_dac
periph_dma
periph_eeprom
periph_flashpage
periph_gpio tests/periph_gpio: add automatic GPIO test cmd 2020-08-13 10:12:21 +02:00
periph_gpio_arduino
periph_hwrng
periph_i2c
periph_pm tests: remove obsolete msp430 blacklists 2020-08-05 14:32:58 +02:00
periph_pwm
periph_qdec
periph_rtc tests/periph_rtc: delay RTC init 2020-07-31 22:06:18 +02:00
periph_rtt
periph_spi
periph_spi_dma
periph_timer
periph_timer_periodic tests/periph_timer_periodic: lower CYCLE_MS 2020-08-09 22:55:22 +02:00
periph_timer_short_relative_set
periph_uart
periph_uart_mode
periph_uart_nonblocking
periph_wdt examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
phydat_dump
pipe
pkg_c25519 tests/pkg_c25519: increase test timeout (z1 needs >5min) 2020-08-05 14:32:58 +02:00
pkg_cayenne-lpp
pkg_cifra
pkg_cmsis-dsp
pkg_cmsis-nn
pkg_cn-cbor
pkg_cryptoauthlib_compare_sha256
pkg_cryptoauthlib_internal-tests
pkg_emlearn
pkg_fatfs examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
pkg_fatfs_vfs examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
pkg_flatbuffers
pkg_hacl
pkg_heatshrink
pkg_jsmn
pkg_libb2 tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
pkg_libbase58
pkg_libcoap tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
pkg_libcose tests/pkg_libcose: add missing unistd.h include 2020-07-23 14:43:55 +02:00
pkg_libfixmath
pkg_libfixmath_unittests
pkg_libhydrogen
pkg_littlefs tests: remove obsolete msp430 blacklists 2020-08-05 14:32:58 +02:00
pkg_littlefs2 examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
pkg_lora-serialization
pkg_lvgl tests/pkg_lvgl: adapt to new lvgl API 2020-08-11 15:39:01 +02:00
pkg_lvgl_touch tests/pkg_lvgl_touch: add lvgl sample with touch capabilities 2020-07-29 14:49:17 +02:00
pkg_micro-ecc
pkg_micro-ecc-with-hwrng
pkg_microcoap tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
pkg_minmea tests: remove obsolete msp430 blacklists 2020-08-05 14:32:58 +02:00
pkg_monocypher
pkg_nanocbor
pkg_nanopb
pkg_openwsn pkg/openwsn: bump version 2020-08-11 15:24:33 +02:00
pkg_qcbor
pkg_qdsa
pkg_relic tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
pkg_semtech-loramac
pkg_spiffs tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
pkg_tensorflow-lite
pkg_tiny-asn1 examples: test: remove remaining occurences of wsn430 2020-07-10 16:49:08 +02:00
pkg_tinycbor
pkg_tinycrypt
pkg_tinydtls_sock_async pkg/tinydtls: enforce the selection of a crypto secure PRNG 2020-08-21 08:39:34 +02:00
pkg_tweetnacl
pkg_u8g2 tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
pkg_ubasic
pkg_ucglib
pkg_umorse
pkg_utensor tests: exclude nucleo-f070rb where it doesn't fit in memory 2020-07-21 12:45:25 +02:00
pkg_wolfcrypt-ed25519-verify
pkg_wolfssl
pkg_yxml
posix_semaphore tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
posix_time
prng_sha1prng tests/prng_sha1prng: add test application 2020-07-22 12:25:09 +02:00
prng_sha256prng tests/prng_sha256prng: add test application 2020-07-22 12:25:09 +02:00
progress_bar
ps_schedstatistics tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
pthread
pthread_barrier
pthread_cleanup
pthread_condition_variable
pthread_cooperation
pthread_flood tests/pthread_flood: cleanup test 2020-07-23 10:05:37 +02:00
pthread_rwlock tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
pthread_tls
puf_sram
riotboot tests: add capability to provide make command via environment 2020-07-09 10:59:01 +02:00
riotboot_flashwrite tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
riotboot_hdr
rmutex
rmutex_cpp
rng Merge pull request #14488 from PeterKietzmann/pr_add_sha256prng 2020-07-29 11:20:55 +02:00
saul
sched_testing
shell tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
slip
sntp tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
socket_zep
ssp
stdin
stm32_bootloader
struct_tm_utility tests: remove obsolete msp430 blacklists 2020-08-05 14:32:58 +02:00
suit_manifest tests/suit_manifest: exclude nucleo-f031k6 2020-07-16 11:34:05 +02:00
sys_arduino
sys_arduino_analog
sys_arduino_lib
sys_crypto tests: update msp430 memory blacklists 2020-08-05 14:32:57 +02:00
sys_irq_handler
sys_stdio_semihosting
test_tools
thread_basic
thread_cooperation tests: update msp430 memory blacklists 2020-08-05 14:32:58 +02:00
thread_exit
thread_flags
thread_flags_xtimer
thread_float tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
thread_flood
thread_msg
thread_msg_block_race
thread_msg_block_w_queue examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
thread_msg_block_wo_queue examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
thread_msg_bus tests/thread_msg_bus: add check if all threads got the message 2020-07-22 16:11:36 +02:00
thread_msg_seq
thread_priority_inversion
thread_race
thread_zombie examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
touch_dev tests/touch_dev: adapt test application with new stmpe811 behavior 2020-07-29 14:30:03 +02:00
trace tests/trace: reduce trace buffer size 2020-07-23 12:45:43 +02:00
trickle tests/trickle: add message queue 2020-07-21 14:19:55 +02:00
unittests tests/unittests/tests-rtt_rtc: fix implicit integer conversions 2020-08-05 14:32:58 +02:00
usbus examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
usbus_cdc_acm_stdio
usbus_cdc_ecm
vfs_plus_stdio
warn_conflict Merge pull request #14459 from miri64/tools/enh/make-env 2020-07-09 12:20:09 +02:00
xtimer_drift
xtimer_hang
xtimer_longterm
xtimer_msg tests/xtimer_msg: check result of thread_create() 2020-08-11 12:12:08 +02:00
xtimer_msg_receive_timeout
xtimer_mutex_lock_timeout
xtimer_now32_overflow
xtimer_now64_continuity
xtimer_now_irq tests/xtimer_now_irq: don't fail for 32bit timers 2020-07-15 16:29:07 +02:00
xtimer_overhead
xtimer_periodic_wakeup tests, examples: remove chronos references 2020-08-05 14:32:58 +02:00
xtimer_remove
xtimer_reset
xtimer_rmutex_lock_timeout examples,tests: Updated Makefile.ci 2020-07-27 20:51:52 +02:00
xtimer_usleep
xtimer_usleep_short
ztimer_msg tests/ztimer_msg: check result of thread_create() 2020-08-11 12:12:14 +02:00
ztimer_overhead
ztimer_underflow
Makefile.tests_common
README.md

Running and creating tests

There are a number of tests included in RIOT. They are located in the tests folder. These tests allow basic functionality to be verified as well as provide an example of usage.

Implementing automated tests

The goal is to be able to run all tests in a sequential way for as many targets as possible.

As some board can't be reset without a manual trigger tests should be implemented with some kind of synchronization. This can be done in two ways:

  • use test_utils_interactive_sync when uart input/output does not need to be disabled for the test. This is enabled by default.
  • set up the test in a loop so the test script will be able so sync with some kind of start condition in the test.

The module for the first option is test_utils_interactive_sync and is set as a default module in Makefile.tests_common. It can be disabled by setting in the application makefile DISABLE_MODULE += test_utils_interactive_sync. The python test script will adapt to it automatically.

When using the shell module, test_utils_interactive_sync will use the shell itself to synchronize, and will not use test_utils_interactive_sync(); function to synchronize. Some times you will want to synchronize before the start of the script and use test_utils_interactive_sync(); function (e.g.: tests/ps_schedstatistics). For these cases you can disable test_utils_interactive_sync_shell module in the application Makefile: DISABLE_MODULE += test_utils_interactive_sync_shell.

Running automated tests

Some tests can be performed automatically. The test automation scripts are defined in the <test_application>/tests/ folder. They are written in python and interact through the uart with the test application code running on a board to do the validation. It is recommended to flash the board with the test just before running it because some platforms cannot be reset while testing.

From the test application directory run:

BOARD=<board_of_your_choice> make flash test

An automated way of knowing if a test is available is to execute the 'test/available' target from the test application directory. It executes without error if tests run by 'make test' are present.

make test/available

Automated Tests Guidelines

When using pexpect $ is useless for matching the end of a line, instead use \r\n(pexpect end-of-line).

Beware of + and * at the end of patterns. These patterns will always get a minimal match (non-greedy).(pexpect end-of-patterns) This can be an issue when matching groups and using the matched groups to verify some kind of behavior since * could return an empty match and + only a subset.

This is especially prevalent since printf() is buffered so the output might not arrive in a single read to pexpect.

To avoid this make sure to match a non-ambiguous character at the end of the pattern like \r\n, \s, \), etc..

don't:

    child.expect(r'some string: (\d+)')

do:

    child.expect(r'some string: (\d+)\r\n')
    child.expect(r'some string: (\d+)\s')
    child.expect(r'some string: (\d+) ,')

Use expect() instead of assert()

In order to make a test application functional in all cases, use expect() instead of assert(). The former works like the latter, but will still be compiled in if NDEBUG is defined. This is useful to keep a test application working even when compiling with -DNDEBUG, allowing for the code-under-test to be compiled with that flag. Otherwise, the application would force compiling all tested code with assertions enabled. expect() is defined in the header test_utils/expect.h.

Interaction through the uart

Tests implemented with testrunner use the cleanterm target that provides an interaction without adding extra text output or input handling. It can currently be expected to have unmodified line based interaction with the board.

The expected behavior is verified with the test in tests/test_tools.

Tests cannot rely on having on all boards and terminal programs:

  • unbuffered input
  • allowing sending special characters like ctrl+c/ctrl+d