/
sample.sh
executable file
·98 lines (92 loc) · 2.3 KB
/
sample.sh
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/bash
# Created by Christian Goetze - http://blog.fortified-bikesheds.com/ - and released under
# the terms of the CC0 1.0 Universal legal code:
#
# http://creativecommons.org/publicdomain/zero/1.0/legalcode
# This sample script is used by the 04-Cleanup test. Modifying it will
# likely break it.
here="${here:-"$(dirname "$0")"}"
owner=cg # $(whoami)
logdir="${testpath:-"$here"}"
grab()
{
local resource="$1"
echo "Waiting for $resource"
if "$here"/grab.py\
--ppid=$$\
--verbose\
--owner="$owner"\
grab "$resource"
then
echo Grabbed - Starting keepalive
"$here"/grab.py\
--ppid=$$\
--verbose\
--owner="$owner"\
--cleanup="sh -c 'echo Hello I crashed or got killed. >> \"$logdir/actual_cleanup.log\"'"\
keepalive "$resource" >>"$logdir"/actual_keepalive.log 2>&1 &
export keepalive_pid=$!
elif "$here"/grab.py\
--ppid=$$\
--verbose\
--owner="$owner"\
dump
then
echo "Resource $resource is being hogged"
return 1
else
echo "Failed to grab resource $resource; Grab Daemon down?"
return 1
fi
echo "Done waiting for $resource"
}
release()
{
local resource="$1"
echo "Releasing $resource"
if [ -n "$keepalive_pid" ] && ps "$keepalive_pid" >/dev/null 2>&1
then
# unconditionally kill it dead, it isn't doing anything stateful
kill -9 "$keepalive_pid"
echo "Keepalive log"
cat "$logdir"/actual_keepalive.log
elif [ -r "$logdir"/actual_keepalive.log ]
then
echo Keepalive died on its own
cat "$logdir"/actual_keepalive.log
else
echo No keepalive process used
fi
rm -f "$logdir"/actual_keepalive.log
if "$here"/grab.py\
--ppid=$$\
--verbose\
--owner="$owner"\
--cleanup="sh -c 'echo Hello I terminated normally. >> \"$logdir/actual_cleanup.log\"'"\
release "$resource"
then
echo Released
elif "$here"/grab.py\
--verbose\
--owner="$owner"\
dump
then
echo "Failed to release resource $resource"
return 1
else
echo "Failed to release resource $resource; Grab Daemon down?"
return 1
fi
echo "Done releasing $resource"
}
grab path/to/my/resource || exit 1
# Do something with it
sleep 10
echo doing...
sleep 10
echo doing...
sleep 10
echo doing...
sleep 10
echo done.
release path/to/my/resource || exit 1