diff options
-rwxr-xr-x | tests/features/ipc.t | 18 | ||||
-rwxr-xr-x | tests/features/ipctest.py | 8 |
2 files changed, 23 insertions, 3 deletions
diff --git a/tests/features/ipc.t b/tests/features/ipc.t index 2aaca6620bf..55ce8c871c1 100755 --- a/tests/features/ipc.t +++ b/tests/features/ipc.t @@ -13,9 +13,23 @@ TEST $CLI volume info; TEST $CLI volume create $V0 $H0:$B0/1 TEST $CLI volume start $V0 +# Find OS-dependent EOPNOTSUPP value from system headers +EOPNOTSUPP=$( echo '#include <errno.h>\\EOPNOTSUPP\\' | tr '\\' '\n' | \ + cc -E -c - | tail -1 ) + +# liglusterfs embbeds its own UUID implementation. The function name +# may be the same as in built(in implementation from libc, but with +# different prototype. In that case, we must make sure python will +# use libglusterfs's version, and dlopen() does not make any guarantee +# on this. By preloading libglusterfs.so before launching python, we +# ensure libglusterfs's UUID functions will be used. +LD_PRELOAD=${prefix}/lib/libglusterfs.so +export LD_PRELOAD + # This is a pretty lame test. Basically we just want to make sure that we # get all the way through the translator stacks on client and server to get a -# simple error (95 = EOPNOTUPP) instead of a crash, RPC error, etc. -EXPECT 95 $PYTHON $(dirname $0)/ipctest.py $H0 $V0 +# simple error (EOPNOTSUPP) instead of a crash, RPC error, etc. +EXPECT ${EOPNOTSUPP} $PYTHON $(dirname $0)/ipctest.py $H0 $V0 +unset LD_PRELOAD cleanup; diff --git a/tests/features/ipctest.py b/tests/features/ipctest.py index 0592bae3bbc..857225fe0a5 100755 --- a/tests/features/ipctest.py +++ b/tests/features/ipctest.py @@ -3,7 +3,13 @@ import ctypes import ctypes.util -api = ctypes.CDLL(ctypes.util.find_library("gfapi")) +# find_library does not lookup LD_LIBRARY_PATH and may miss the +# function. In that case, retry with less portable but explicit name. +libgfapi = ctypes.util.find_library("gfapi") +if libgfapi == None: + libgfapi = "libgfapi.so" +api = ctypes.CDLL(libgfapi,mode=ctypes.RTLD_GLOBAL) + api.glfs_ipc.argtypes = [ ctypes.c_void_p, ctypes.c_int ] api.glfs_ipc.restype = ctypes.c_int |