From 77242b1e219b79d39a2695e5f75f08d6eb92ae6f Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Fri, 23 Oct 2015 20:13:00 +0200 Subject: Provide tests for thread-safety These scripts currently produce HTML output that is directly piped into an HTML file on alioth. There are three categories. The first two check external library calls to use the ones specified by POSIX to be thread-safe. The main profile excludes functions that are thread-safe on Linux or glibc in general, while the portable output strictly follows posix. The internal.html output lists internal function calls, such as configuration setting. This is supposed to be automated further at some point, so we can automatically check for regressions. --- test/thread-safety/not-thread-safe.sh | 7 +++ test/thread-safety/thread-check-internal.txt | 3 + test/thread-safety/thread-check.txt | 91 ++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100755 test/thread-safety/not-thread-safe.sh create mode 100644 test/thread-safety/thread-check-internal.txt create mode 100644 test/thread-safety/thread-check.txt (limited to 'test') diff --git a/test/thread-safety/not-thread-safe.sh b/test/thread-safety/not-thread-safe.sh new file mode 100755 index 000000000..12ac3f398 --- /dev/null +++ b/test/thread-safety/not-thread-safe.sh @@ -0,0 +1,7 @@ +git grep -p --color -n -E "$(grep -v ^# thread-check.txt | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \ + apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/index.html' +git grep -p --color -n -E "$(grep ^# thread-check.txt | cut -f2 -d# | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \ + apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/portable.html' + +git grep -p --color -n -E "$(grep -v ^# thread-check-internal.txt | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \ + apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/internal.html' diff --git a/test/thread-safety/thread-check-internal.txt b/test/thread-safety/thread-check-internal.txt new file mode 100644 index 000000000..c55985fa0 --- /dev/null +++ b/test/thread-safety/thread-check-internal.txt @@ -0,0 +1,3 @@ +CndSet() +Set() +Clear() diff --git a/test/thread-safety/thread-check.txt b/test/thread-safety/thread-check.txt new file mode 100644 index 000000000..ed00965bd --- /dev/null +++ b/test/thread-safety/thread-check.txt @@ -0,0 +1,91 @@ +asctime() +basename() +catgets() +crypt() +ctermid() if passed a non-NULL argument +ctime() +dbm_clearerr() +dbm_close() +dbm_delete() +dbm_error() +dbm_fetch() +dbm_firstkey() +dbm_nextkey() +dbm_open() +dbm_store() +dirname() +dlerror() +drand48() +ecvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)] +encrypt() +endgrent() +endpwent() +endutxent() +fcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)] +ftw() +gcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)] +getc_unlocked() +getchar_unlocked() +getdate() +#getenv() +getgrent() +getgrgid() +getgrnam() +gethostbyaddr() [POSIX.1-2001 only (function removed in POSIX.1-2008)] +gethostbyname() [POSIX.1-2001 only (function removed in POSIX.1-2008)] +gethostent() +getlogin() +getnetbyaddr() +getnetbyname() +getnetent() +getopt() +getprotobyname() +getprotobynumber() +getprotoent() +getpwent() +getpwnam() +getpwuid() +getservbyname() +getservbyport() +getservent() +getutxent() +getutxid() +getutxline() +gmtime() +hcreate() +hdestroy() +hsearch() +inet_ntoa() +l64a() +lgamma() +lgammaf() +lgammal() +localeconv() +localtime() +lrand48() +mrand48() +nftw() +#nl_langinfo() +ptsname() +putc_unlocked() +putchar_unlocked() +putenv() +pututxline() +rand() +#readdir() +setenv() +setgrent() +setkey() +setpwent() +setutxent() +#strerror() +strsignal() [Added in POSIX.1-2008] +strtok() +#system() [Added in POSIX.1-2008] +tmpnam() if passed a non-NULL argument +ttyname() +unsetenv() +wcrtomb() if its final argument is NULL +wcsrtombs() if its final argument is NULL +wcstombs() +wctomb() -- cgit v1.2.3