1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#!/bin/bash
DATAFILE=$(mktemp)
DAVDIR=$(mktemp -d)
testclient=${0%/*}/testclient.py
numbytes=512
U=$1
P=$2
if [ "x${P}" = "x" ]; then
P=$(openssl rand -base64 8)
fi
openssl rand -out "${DATAFILE}" ${numbytes}
ls -l "${DATAFILE}"
echo "Starting WebDAV server in ${DAVDIR}"
if [ "x${U}" = "x" ]; then
python3 -m pywebdav -l ERROR -P 0 -D "${DAVDIR}" -n 2>&1 &
SERVER_PID=$!
else
python3 -m pywebdav -l ERROR -P 0 -D "${DAVDIR}" -u "${U}" -p "${P}" 2>&1 &
SERVER_PID=$!
fi
#echo "server running as PID ${SERVER_PID}"
sleep 1
port=$(lsof -p ${SERVER_PID} 2>/dev/null | egrep "TCP localhost:.*LISTEN" | sed -e 's|.*TCP localhost:||' -e 's| .*||')
echo "connecting to port:${port}"
if [ "x${port}" = "x" ]; then
echo "unable to find listening port of WebDAV-server running as ${SERVER_PID}"
echo "skipping test."
lsof -p ${SERVER_PID} 2>/dev/null | egrep "TCP.*LISTEN"
exit 77
fi
if [ "x${U}" = "x" ]; then
${testclient} -P "${port}" "${DATAFILE}"
else
${testclient} -P "${port}" -u "${U}" -p "${P}" "${DATAFILE}"
fi
RETVAL=$?
kill $SERVER_PID
RETKILL=$?
rm -vrf "${DATAFILE}" "${DAVDIR}"
if [ "x${RETKILL}" != "x0" ]; then
echo "server killing failed with ${RETKILL}, skipping test"
exit 77
fi
exit $RETVAL
|