2017-03-28 10:16:58 +00:00
|
|
|
#!/bin/sh
|
2017-09-13 23:31:41 +00:00
|
|
|
|
2020-05-06 16:35:26 +00:00
|
|
|
owndir="$(dirname -- "$0")"
|
|
|
|
|
2017-09-13 23:31:41 +00:00
|
|
|
echo 'creating files'
|
2017-05-04 12:48:49 +00:00
|
|
|
dir="$(mktemp -d)"
|
|
|
|
n1="long name"
|
|
|
|
f1="$dir/$n1"
|
|
|
|
touch "$f1"
|
|
|
|
n2="shorter"
|
|
|
|
f2="$dir/$n2"
|
|
|
|
touch "$f2"
|
|
|
|
sync
|
2017-09-13 23:31:41 +00:00
|
|
|
|
|
|
|
echo 'launch a program that locks a given file, it will create $dir/lock_test'
|
2020-05-06 16:35:26 +00:00
|
|
|
python3 $owndir/lock_test_help.py "$dir" "$n1" &
|
2017-09-13 23:31:41 +00:00
|
|
|
|
|
|
|
echo 'wait until this lock_test lock file was created by program'
|
2017-05-04 12:48:49 +00:00
|
|
|
while [ ! -f "$dir/lock_test" ]; do
|
|
|
|
sleep .1
|
|
|
|
done
|
2017-09-13 23:31:41 +00:00
|
|
|
sync
|
|
|
|
|
|
|
|
echo 'expecting the lock file to reflect "long name"'
|
2017-05-10 11:46:11 +00:00
|
|
|
echo "launched first, locked by: '$(cat "$dir/lock_test")'"
|
2017-09-13 23:31:41 +00:00
|
|
|
|
|
|
|
echo 'launching second program, should find the lock intact and wait'
|
2020-05-06 16:35:26 +00:00
|
|
|
python3 $owndir/lock_test_help.py "$dir" "$n2" &
|
2017-09-13 23:31:41 +00:00
|
|
|
while [ ! -f "$f2.ready" ]; do
|
|
|
|
sleep .1
|
|
|
|
done
|
|
|
|
sleep 1
|
|
|
|
sync
|
2017-05-10 11:46:11 +00:00
|
|
|
echo "launched second, locked by: '$(cat "$dir/lock_test")'"
|
2017-09-13 23:31:41 +00:00
|
|
|
|
|
|
|
echo 'drop the first lock, $f1 removal signals the first process to stop locking'
|
2017-05-04 12:48:49 +00:00
|
|
|
rm "$f1"
|
2017-09-13 23:31:41 +00:00
|
|
|
|
|
|
|
echo 'wait for first program to carry out the lock release'
|
2017-05-04 12:48:49 +00:00
|
|
|
while [ ! -f "$f1.done" ]; do
|
|
|
|
sleep .1
|
|
|
|
done
|
2017-09-13 23:31:41 +00:00
|
|
|
|
|
|
|
echo 'now expecting second program to lock'
|
2017-05-10 11:46:11 +00:00
|
|
|
echo "waited, locked by: '$(cat "$dir/lock_test")'"
|
2017-09-13 23:31:41 +00:00
|
|
|
|
|
|
|
echo 'release the second program also'
|
2017-05-04 12:48:49 +00:00
|
|
|
rm "$f2"
|
|
|
|
while [ ! -f "$f2.done" ]; do
|
|
|
|
sleep .1
|
|
|
|
done
|
2017-09-13 23:31:41 +00:00
|
|
|
|
|
|
|
echo 'expecting the lock to be gone'
|
2017-05-10 11:46:11 +00:00
|
|
|
echo "waited more, locked by: '$(cat "$dir/lock_test")'"
|
2017-05-04 12:48:49 +00:00
|
|
|
rm -rf "$dir"
|