12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- # SPDX-License-Identifier: GPL-2.0-or-later
- #!/bin/sh
- # Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved.
- # Copyright (c) 2017-2020 Petr Vorel <pvorel@suse.cz>
- SERVER=
- CLIENT=
- CLIENT_EXTRA_OPTS=
- CLEANER=
- # Program number to register the services to rpcbind
- PROGNUMNOSVC=536875000
- TST_TESTFUNC=do_test
- TST_USAGE=usage
- TST_OPTS="c:e:s:"
- TST_SETUP=setup
- TST_CLEANUP=cleanup
- TST_PARSE_ARGS=rpc_parse_args
- TST_NEEDS_CMDS="pkill rpcinfo"
- . rpc_lib.sh
- usage()
- {
- cat << EOF
- USAGE: $0 [-s sprog] -c clprog [ -e extra ]
- Connect to the remote host and start sprog.
- Then execute clprog and passing it the remote host value.
- -c clprog client program binary
- -s sprog server program binary
- -e extra extra client options
- EOF
- }
- rpc_parse_args()
- {
- case "$1" in
- c) CLIENT="$OPTARG" ;;
- e) tst_check_cmds sed
- CLIENT_EXTRA_OPTS="$(echo $OPTARG | sed 's/,/ /')" ;;
- s) SERVER="$OPTARG" ;;
- esac
- }
- setup()
- {
- check_portmap_rpcbind
- if [ -n "$SERVER" ]; then
- CLEANER="rpc_cleaner"
- if echo "$SERVER" | grep -q '^tirpc'; then
- CLEANER="tirpc_cleaner"
- fi
- fi
- [ -n "$CLIENT" ] || tst_brk TBROK "client program not set"
- tst_check_cmds $CLIENT $SERVER || tst_brk TCONF "LTP compiled without TI-RPC support?"
- tst_cmd_available ldd which || return
- if ldd $(which $CLIENT) |grep -q /libtirpc\.so; then
- tst_res TINFO "using libtirpc: yes"
- else
- tst_res TINFO "using libtirpc: no (probably using glibc)"
- fi
- }
- cleanup()
- {
- if [ "$SERVER_STARTED" ]; then
- pkill -13 -x $SERVER
- $CLEANER $PROGNUMNOSVC
- fi
- }
- do_test()
- {
- local i
- if [ -n "$SERVER" ]; then
- $SERVER $PROGNUMNOSVC &
- SERVER_STARTED=1
- for i in $(seq 1 10); do
- rpcinfo -p localhost | grep -q $PROGNUMNOSVC && break
- [ "$i" -eq 30 ] && tst_brk TBROK "server not registered"
- tst_sleep 100ms
- done
- fi
- EXPECT_RHOST_PASS $CLIENT $(tst_ipaddr) $PROGNUMNOSVC $CLIENT_EXTRA_OPTS
- }
- tst_run
|