mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
b7cecbea22
Calling src/<file> without path '$here' may cause the problem that
the file cannot be found.
For example, Running generic/192 with overlayfs(Let ubifs as base
fs) yields the following output:
generic/192 - output mismatch
QA output created by 192
sleep for 5 seconds
test
+./common/rc: line 316: src/t_dir_type: No such file or directory
delta1 is in range
delta2 is in range
...
When the use case fails, the call stack in generic/192 is:
local unknowns=$(src/t_dir_type $dir u | wc -l) common/rc
_supports_filetype common/rc
_overlay_mount common/overlay
_overlay_test_mount common/overlay
_test_mount common/rc
_test_cycle_mount generic/192
Before _test_cycle_mount() being invoked, generic/192 executed 'cd
/' to change work dir from 'xfstests-dev' to '/', so src/t_dir_type
was not found.
[Eryu: some tests run src/<file> as regular user, don't add $here
prefix in such case, as a regular user may have no search permission
on $here]
Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
96 lines
1.8 KiB
Plaintext
96 lines
1.8 KiB
Plaintext
##/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
# Copyright (c) 2019 Intel Corp, All Rights Reserved
|
|
|
|
SERVER_LOG=$TEST_DIR/server.out
|
|
SERVER_PORT=$TEST_DIR/server.port
|
|
CLIENT_LOG=$TEST_DIR/client.out
|
|
TESTFILE=$TEST_DIR/lock_file
|
|
client_pid=""
|
|
server_pid=""
|
|
|
|
_cleanup()
|
|
{
|
|
kill $client_pid > /dev/null 2>&1
|
|
kill $server_pid > /dev/null 2>&1
|
|
rm -f $TESTFILE
|
|
}
|
|
|
|
_dump_logs_fail()
|
|
{
|
|
fail_str=$1
|
|
|
|
echo " ***** Client log *****" >> $seqres.full
|
|
cat $CLIENT_LOG >> $seqres.full
|
|
echo " ***** Server log *****" >> $seqres.full
|
|
cat $SERVER_LOG >> $seqres.full
|
|
echo " ***** End file details *****" >> $seqres.full
|
|
ls -la $TESTFILE >> $seqres.full
|
|
_fail $fail_str
|
|
exit 1
|
|
}
|
|
|
|
|
|
_run_generic() {
|
|
mode=$1
|
|
|
|
# set up log files
|
|
rm -f $SERVER_LOG
|
|
touch $SERVER_LOG
|
|
rm -f $SERVER_PORT
|
|
touch $SERVER_PORT
|
|
rm -f $CLIENT_LOG
|
|
touch $CLIENT_LOG
|
|
|
|
touch $TESTFILE
|
|
|
|
# Start the server
|
|
$here/src/locktest $mode $TESTFILE 2> $SERVER_LOG 1> $SERVER_PORT &
|
|
server_pid=$!
|
|
|
|
timeout=30
|
|
while [ $timeout -gt 0 ]; do
|
|
sleep 1
|
|
|
|
PORT=$(cat $SERVER_PORT | grep "^server port: " | awk '{print $3}')
|
|
if [ -n "$PORT" ]; then
|
|
break
|
|
fi
|
|
|
|
# check the existence of server process
|
|
if ! kill -s 0 $server_pid >/dev/null 2>&1; then
|
|
_dump_logs_fail "Server died abnormally"
|
|
fi
|
|
|
|
let timeout=timeout-1
|
|
done
|
|
|
|
if [ -z "$PORT" ]; then
|
|
_dump_logs_fail "Could not get server port"
|
|
fi
|
|
|
|
# Start the client
|
|
|
|
$here/src/locktest $mode -p $PORT -h localhost $TESTFILE 2> $CLIENT_LOG
|
|
client_result=$?
|
|
client_pid=$!
|
|
if [ $client_result -ne 0 ]; then
|
|
_dump_logs_fail "Client reported failure ($client_result)"
|
|
fi
|
|
wait $server_pid
|
|
server_result=$?
|
|
if [ $server_result -ne 0 ]; then
|
|
_dump_logs_fail "Server reported failure ($server_result)"
|
|
fi
|
|
echo success!
|
|
status=0
|
|
}
|
|
|
|
_run_locktest() {
|
|
_run_generic ""
|
|
}
|
|
|
|
_run_leasetest() {
|
|
_run_generic "-L"
|
|
}
|