From 560e5de575720c13d9085fe1014cb0377c9ccd12 Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Mon, 2 Sep 2013 23:34:56 +0200 Subject: Add a test for tio timeout calculations This test checks whether the proposed remaining time to sleep is reasonable. --- tests/Makefile.am | 6 ++++-- tests/test_tio_timeout.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 tests/test_tio_timeout.c (limited to 'tests') diff --git a/tests/Makefile.am b/tests/Makefile.am index 45f73fc..e8a5680 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -20,7 +20,7 @@ TESTS = test_dict test_set test_tio test_expr test_getpeercred test_cfg \ test_myldap.sh test_common test_nsscmds.sh test_pamcmds.sh \ - test_manpages.sh test_clock + test_manpages.sh test_clock test_tio_timeout if HAVE_PYTHON TESTS += test_pycompile.sh test_pylint.sh endif @@ -31,7 +31,7 @@ endif AM_TESTS_ENVIRONMENT = PYTHON='@PYTHON@'; export PYTHON; check_PROGRAMS = test_dict test_set test_tio test_expr test_getpeercred \ - test_cfg test_myldap test_common test_clock \ + test_cfg test_myldap test_common test_clock test_tio_timeout \ lookup_netgroup lookup_shadow EXTRA_DIST = nslcd-test.conf usernames.txt in_testenv.sh test_myldap.sh \ @@ -87,6 +87,8 @@ test_common_LDADD = ../nslcd/cfg.o $(common_nslcd_LDADD) test_clock_SOURCES = test_clock.c +test_tio_timeout_SOURCES = test_tio_timeout.c ../common/tio.h + lookup_netgroup_SOURCES = lookup_netgroup.c lookup_shadow_SOURCES = lookup_shadow.c diff --git a/tests/test_tio_timeout.c b/tests/test_tio_timeout.c new file mode 100644 index 0000000..18d8d4f --- /dev/null +++ b/tests/test_tio_timeout.c @@ -0,0 +1,50 @@ +/* + test_tio_timeout.c - tests for tio deadline calculations + This file is part of the nss-pam-ldapd library. + + Copyright (C) 2013 Arthur de Jong + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ + +/* we include the source because we want to test static methods */ +#include "../common/tio.c" + +#include + +int main(int UNUSED(argc), char UNUSED(*argv[])) +{ + struct timespec deadline = {0, 0}; + int timeout = 100 * 1000; + int sleeptime = 1000; + int low = -100; + int high = 200; + int res; + int ok; + /* initialise deadline */ + assert(tio_time_remaining(&deadline, timeout) == timeout); + /* wait one second */ + sleep(sleeptime / 1000); + /* re-calculate the deadline */ + res = tio_time_remaining(&deadline, timeout); + /* it should be timeout - sleeptime */ + res = timeout - sleeptime - res; + ok = (res > low) && (res < high); + printf("%s: %d msec difference (%swithin %d...%d msec)\n", + ok ? "OK" : "FAIL", res, ok ? "" : "NOT ", + low, high); + return !ok; +} -- cgit v1.2.3