socket-util: Work around Unix domain socket path name limits on Linux.
[sliver-openvswitch.git] / tests / library.at
index eab1424..cab8e2c 100644 (file)
@@ -2,40 +2,66 @@ AT_BANNER([library unit tests])
 
 AT_SETUP([test flow extractor])
 AT_CHECK([$PERL `which flowgen.pl` >/dev/null 3>flows 4>pcap])
-OVS_CHECK_LCOV([test-flows <flows 3<pcap], [0], [checked 247 packets, 0 errors
+AT_CHECK([test-flows <flows 3<pcap], [0], [checked 247 packets, 0 errors
 ])
 AT_CLEANUP
 
 AT_SETUP([test TCP/IP checksumming])
-OVS_CHECK_LCOV([test-csum], [0], [ignore])
-AT_CLEANUP
-
-AT_SETUP([test flow classifier])
-AT_KEYWORDS([slow])
-OVS_CHECK_LCOV([test-classifier], [0], [ignore])
+AT_CHECK([test-csum], [0], [ignore])
 AT_CLEANUP
 
 AT_SETUP([test hash functions])
-OVS_CHECK_LCOV([test-hash], [0], [ignore])
+AT_CHECK([test-hash], [0], [ignore])
 AT_CLEANUP
 
 AT_SETUP([test hash map])
-OVS_CHECK_LCOV([test-hmap], [0], [ignore])
+AT_CHECK([test-hmap], [0], [ignore])
 AT_CLEANUP
 
 AT_SETUP([test linked lists])
-OVS_CHECK_LCOV([test-list], [0], [ignore])
+AT_CHECK([test-list], [0], [ignore])
 AT_CLEANUP
 
 AT_SETUP([test SHA-1])
-OVS_CHECK_LCOV([test-sha1], [0], [ignore])
+AT_CHECK([test-sha1], [0], [ignore])
 AT_CLEANUP
 
 AT_SETUP([test type properties])
-OVS_CHECK_LCOV([test-type-props], [0], [ignore])
+AT_CHECK([test-type-props], [0], [ignore])
 AT_CLEANUP
 
-AT_SETUP([test vconn library])
-AT_CHECK([cp $abs_top_srcdir/tests/testpki*.pem .])
-OVS_CHECK_LCOV([test-vconn], [0], [], [ignore])
+AT_SETUP([test strtok_r bug fix])
+AT_CHECK([test-strtok_r], [0], [ignore])
+AT_CLEANUP
+
+AT_SETUP([test byte order conversion])
+AT_KEYWORDS([byte order])
+AT_CHECK([test-byte-order], [0], [ignore])
+AT_CLEANUP
+
+AT_SETUP([test unix socket -- short pathname])
+AT_CHECK([test-unix-socket x])
+AT_CLEANUP
+
+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/<dirfd>.  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
+])
+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_CLEANUP