From 24ce427a3af15b10f19d65f5908896f2ab761668 Mon Sep 17 00:00:00 2001 From: Oleg Hahm Date: Sat, 14 Nov 2015 20:33:39 +0100 Subject: [PATCH] tests: added test for xtimer_msg_receive_timeout --- tests/xtimer_msg_receive_timeout/Makefile | 7 +++ tests/xtimer_msg_receive_timeout/main.c | 44 +++++++++++++++++++ .../tests/01-run.py | 39 ++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 tests/xtimer_msg_receive_timeout/Makefile create mode 100644 tests/xtimer_msg_receive_timeout/main.c create mode 100755 tests/xtimer_msg_receive_timeout/tests/01-run.py diff --git a/tests/xtimer_msg_receive_timeout/Makefile b/tests/xtimer_msg_receive_timeout/Makefile new file mode 100644 index 0000000000..8b5b8e937f --- /dev/null +++ b/tests/xtimer_msg_receive_timeout/Makefile @@ -0,0 +1,7 @@ +APPLICATION = xtimer_msg_receive_timeout +include ../Makefile.tests_common + +FEATURES_REQUIRED += periph_timer +USEMODULE += xtimer + +include $(RIOTBASE)/Makefile.include diff --git a/tests/xtimer_msg_receive_timeout/main.c b/tests/xtimer_msg_receive_timeout/main.c new file mode 100644 index 0000000000..47ebfd1d97 --- /dev/null +++ b/tests/xtimer_msg_receive_timeout/main.c @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2015 INRIA + * + * 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. + */ + +/** + * @ingroup tests + * @{ + * + * @file + * @brief test application for xtimer_msg_receive_timeout() + * + * @author Oliver Hahm + * + * @} + */ + +#include "thread.h" +#include "msg.h" +#include "xtimer.h" +#include "timex.h" + +int main(void) +{ + msg_t m, tmsg; + xtimer_t t; + int64_t offset = -1000; + tmsg.type = 44; + + for (int i = 0; i < 10; i++) { + xtimer_set_msg(&t, SEC_IN_USEC + offset, &tmsg, sched_active_pid); + if (xtimer_msg_receive_timeout(&m, SEC_IN_USEC) < 0) { + puts("Timeout!"); + } + else { + printf("Message received: %" PRIu16 "\n", m.type); + } + offset = (offset < 0) ? 1000 : -1000; + } + return 0; +} diff --git a/tests/xtimer_msg_receive_timeout/tests/01-run.py b/tests/xtimer_msg_receive_timeout/tests/01-run.py new file mode 100755 index 0000000000..aad13d9567 --- /dev/null +++ b/tests/xtimer_msg_receive_timeout/tests/01-run.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python + +# Copyright (C) 2015 INRIA +# +# 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. + +import os, signal, sys +from pexpect import TIMEOUT, EOF +if sys.version_info[0] == 2: + from pexpect import spawn +else: + from pexpect import spawnu as spawn + +DEFAULT_TIMEOUT = 2 + +def main(): + p = None + + try: + p = spawn("make term", timeout=DEFAULT_TIMEOUT) + p.logfile = sys.stdout + + for i in range(10): + p.expect("Message received: 44") + p.expect("Timeout") + except TIMEOUT as exc: + print(exc) + return 1 + finally: + if p and not p.terminate(): + print("SUCCESS") + os.killpg(p.pid, signal.SIGKILL) + + return 0 + +if __name__ == "__main__": + sys.exit(main())