Half of the test in instance-event.tc was updated to use $! to find the PID of the previous background process that was launched, but the second part of the test still used the parsing of "jobs", which does not work on all shells like $! does. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
139 lines
1.8 KiB
Bash
139 lines
1.8 KiB
Bash
#!/bin/sh
|
|
# description: Test creation and deletion of trace instances while setting an event
|
|
|
|
if [ ! -d instances ] ; then
|
|
echo "no instance directory with this kernel"
|
|
exit_unsupported;
|
|
fi
|
|
|
|
fail() { # mesg
|
|
rmdir foo 2>/dev/null
|
|
echo $1
|
|
set -e
|
|
exit $FAIL
|
|
}
|
|
|
|
cd instances
|
|
|
|
# we don't want to fail on error
|
|
set +e
|
|
|
|
mkdir x
|
|
rmdir x
|
|
result=$?
|
|
|
|
if [ $result -ne 0 ]; then
|
|
echo "instance rmdir not supported"
|
|
exit_unsupported
|
|
fi
|
|
|
|
instance_slam() {
|
|
while :; do
|
|
mkdir foo 2> /dev/null
|
|
rmdir foo 2> /dev/null
|
|
done
|
|
}
|
|
|
|
instance_read() {
|
|
while :; do
|
|
cat foo/trace 1> /dev/null 2>&1
|
|
done
|
|
}
|
|
|
|
instance_set() {
|
|
while :; do
|
|
echo 1 > foo/events/sched/sched_switch
|
|
done 2> /dev/null
|
|
}
|
|
|
|
instance_slam &
|
|
p1=$!
|
|
echo $p1
|
|
|
|
instance_set &
|
|
p2=$!
|
|
echo $p2
|
|
|
|
instance_read &
|
|
p3=$!
|
|
echo $p3
|
|
|
|
sleep 1
|
|
|
|
kill -1 $p3
|
|
kill -1 $p2
|
|
kill -1 $p1
|
|
|
|
echo "Wait for processes to finish"
|
|
wait $p1 $p2 $p3
|
|
echo "all processes finished, wait for cleanup"
|
|
sleep 1
|
|
|
|
mkdir foo
|
|
ls foo > /dev/null
|
|
rmdir foo
|
|
if [ -d foo ]; then
|
|
fail "foo still exists"
|
|
fi
|
|
exit 0
|
|
|
|
|
|
|
|
|
|
instance_slam() {
|
|
while :; do
|
|
mkdir x
|
|
mkdir y
|
|
mkdir z
|
|
rmdir x
|
|
rmdir y
|
|
rmdir z
|
|
done 2>/dev/null
|
|
}
|
|
|
|
instance_slam &
|
|
p1=$!
|
|
echo $p1
|
|
|
|
instance_slam &
|
|
p2=$!
|
|
echo $p2
|
|
|
|
instance_slam &
|
|
p3=$!
|
|
echo $p3
|
|
|
|
instance_slam &
|
|
p4=$!
|
|
echo $p4
|
|
|
|
instance_slam &
|
|
p5=$!
|
|
echo $p5
|
|
|
|
ls -lR >/dev/null
|
|
sleep 1
|
|
|
|
kill -1 $p1
|
|
kill -1 $p2
|
|
kill -1 $p3
|
|
kill -1 $p4
|
|
kill -1 $p5
|
|
|
|
echo "Wait for processes to finish"
|
|
wait $p1 $p2 $p3 $p4 $p5
|
|
echo "all processes finished, wait for cleanup"
|
|
|
|
mkdir x y z
|
|
ls x y z
|
|
rmdir x y z
|
|
for d in x y z; do
|
|
if [ -d $d ]; then
|
|
fail "instance $d still exists"
|
|
fi
|
|
done
|
|
|
|
set -e
|
|
|
|
exit 0
|