Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2013-09-02 23:34:56 +0200
committerArthur de Jong <arthur@arthurdejong.org>2013-09-02 23:34:56 +0200
commit560e5de575720c13d9085fe1014cb0377c9ccd12 (patch)
tree3dc811e57e1d0959cf0a7dbf28b649b0989a6354 /tests
parentdb5382ec111ba1080cf7a5b2d6a4c881ec04bc5d (diff)
Add a test for tio timeout calculations
This test checks whether the proposed remaining time to sleep is reasonable.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am6
-rw-r--r--tests/test_tio_timeout.c50
2 files changed, 54 insertions, 2 deletions
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 <assert.h>
+
+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;
+}