From b00a6e3885a39290f52b3b37e65053a580788bf8 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 31 Oct 2013 12:44:48 +0100 Subject: tests: Add a test for ssh_channel(). --- tests/unittests/CMakeLists.txt | 2 ++ tests/unittests/torture_channel.c | 48 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 tests/unittests/torture_channel.c diff --git a/tests/unittests/CMakeLists.txt b/tests/unittests/CMakeLists.txt index d8a6125..3820399 100644 --- a/tests/unittests/CMakeLists.txt +++ b/tests/unittests/CMakeLists.txt @@ -13,4 +13,6 @@ if (UNIX AND NOT WIN32) add_cmocka_test(torture_pki torture_pki.c ${TORTURE_LIBRARY}) # requires pthread add_cmocka_test(torture_rand torture_rand.c ${TORTURE_LIBRARY}) + # requires /dev/null + add_cmocka_test(torture_channel torture_channel.c ${TORTURE_LIBRARY}) endif (UNIX AND NOT WIN32) diff --git a/tests/unittests/torture_channel.c b/tests/unittests/torture_channel.c new file mode 100644 index 0000000..5bf34fd --- /dev/null +++ b/tests/unittests/torture_channel.c @@ -0,0 +1,48 @@ +#define LIBSSH_STATIC +#include + +#include +#include +#include + +#include "torture.h" +#include "channels.c" + +static void torture_channel_select(void **state) +{ + fd_set readfds; + int fd; + int rc; + int i; + + (void)state; /* unused */ + + fd = open("/dev/null", 0); + assert_true(fd > 2); + + FD_SET(fd, &readfds); + + for (i = 0; i < 10; i++) { + ssh_channel cin[1] = { NULL, }; + ssh_channel cout[1] = { NULL, }; + struct timeval tv = { .tv_sec = 0, .tv_usec = 1000 }; + + rc = ssh_select(cin, cout, fd + 1, &readfds, &tv); + assert_int_equal(rc, SSH_OK); + } + + close(fd); +} + +int torture_run_tests(void) { + int rc; + const UnitTest tests[] = { + unit_test(torture_channel_select), + }; + + ssh_init(); + rc = run_tests(tests); + ssh_finalize(); + + return rc; +} -- cgit