X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=tests%2Flibrary.at;h=d82113fbb739c1d149b880e471644b2d88b5ae4e;hb=d5da6c53ca75df14d698c5355afb492057e2b814;hp=0765c3f3f55d99c31ba21de1193bbe8334f394b2;hpb=a656cb7736fd9f5926c2b1bdd6f50dafc3aa796a;p=cascardo%2Fovs.git diff --git a/tests/library.at b/tests/library.at index 0765c3f3f..d82113fbb 100644 --- a/tests/library.at +++ b/tests/library.at @@ -2,35 +2,52 @@ AT_BANNER([library unit tests]) AT_SETUP([test flow extractor]) AT_CHECK([$PERL `which flowgen.pl` >/dev/null 3>flows 4>pcap]) -AT_CHECK([test-flows . We do not have a workaround +dnl for other platforms, so we skip the test there. +AT_SETUP([test unix socket, long pathname - C]) +AT_SKIP_IF([test "$IS_WIN32" = "yes"]) +dnl Linux sockaddr_un has a 108-byte limit, so this needs to be longer. +dnl Linux "ecryptfs" has a 143-byte limit, so we use that many bytes. +longname=01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 + +dnl Skip the test if the directory can't be created (presumably the file +dnl system doesn't support such long names). +AT_CHECK([mkdir $longname || exit 77]) + +AT_CHECK([cd $longname && ovstest test-unix-socket ../$longname/socket socket]) AT_CLEANUP +m4_define([UNIX_SOCKET_SHORT_PATHNAME_PYN], + [AT_SETUP([test unix socket, short pathname - $1]) + AT_SKIP_IF([test $2 = no || test "$IS_WIN32" = "yes"]) + AT_KEYWORDS([python unixsocket]) + AT_CHECK([$3 $srcdir/test-unix-socket.py x]) + AT_CLEANUP]) + +UNIX_SOCKET_SHORT_PATHNAME_PYN([Python2], [$HAVE_PYTHON], [$PYTHON]) +UNIX_SOCKET_SHORT_PATHNAME_PYN([Python3], [$HAVE_PYTHON3], [$PYTHON3]) + dnl Unix sockets with long names are problematic because the name has to dnl go in a fixed-length field in struct sockaddr_un. Generally the limit dnl is about 100 bytes. On Linux, we work around this by indirecting through dnl a directory fd using /proc/self/fd/. We do not have a workaround dnl for other platforms, so we skip the test there. -AT_SETUP([test unix socket -- long pathname]) -AT_CHECK([dnl - case `uname` in dnl ( - *[[lL]]inux*) - exit 0 - ;; dnl ( - *) - dnl Magic exit code to tell Autotest to skip this test. - exit 77 - ;; - esac +m4_define([UNIX_SOCKET_LONG_PATHNAME_PYN], + [AT_SETUP([test unix socket, long pathname - $1]) + AT_SKIP_IF([test $2 = no || test "$IS_WIN32" = "yes"]) + AT_KEYWORDS([python unixsocket]) + dnl Linux sockaddr_un has a 108-byte limit, so this needs to be longer. + dnl Linux "ecryptfs" has a 143-byte limit, so we use that many bytes. + longname=01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 + + dnl Skip the test if the directory can't be created (presumably the file + dnl system doesn't support such long names). + AT_CHECK([mkdir $longname || exit 77]) + AT_CHECK([cd $longname && $3 $abs_srcdir/test-unix-socket.py ../$longname/socket socket]) + AT_CLEANUP]) + +UNIX_SOCKET_LONG_PATHNAME_PYN([Python2], [$HAVE_PYTHON], [$PYTHON]) +UNIX_SOCKET_LONG_PATHNAME_PYN([Python3], [$HAVE_PYTHON3], [$PYTHON3]) + +AT_SETUP([ovs_assert]) +if test "$IS_WIN32" = "yes"; then + exit_status=9 +else + # SIGABRT + 128 + exit_status=134 +fi +AT_CHECK([ovstest test-util -voff -vfile:info '-vPATTERN:file:%c|%p|%m' --log-file assert], + [$exit_status], [], [stderr]) + +AT_CHECK([sed 's/\(opened log file\) .*/\1/ +s/|[[^|]]*: /|/' test-util.log], [0], [dnl +vlog|INFO|opened log file +util|EMER|assertion false failed in test_assert() ]) -dnl Linux has a 108 byte limit; this is 150 bytes long. -mkdir 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 -cd 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 -AT_CHECK([test-unix-socket ../012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789/socket socket]) + +AT_CHECK([sed 's/.*: // +1q' stderr], [0], + [assertion false failed in test_assert() +]) + +AT_CLEANUP + +AT_SETUP([snprintf]) +AT_CHECK([ovstest test-util snprintf]) +AT_CLEANUP + +AT_SETUP([test bitmap functions]) +AT_CHECK([ovstest test-bitmap check], [0], [.. +]) +AT_CLEANUP + +AT_SETUP([use of public headers]) +AT_CHECK([test-lib], [0], []) +AT_CLEANUP + +AT_SETUP([test ofpbuf module]) +AT_CHECK([ovstest test-ofpbuf], [0], []) AT_CLEANUP