aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>2016-05-09 18:10:00 -0400
committerSteven Rostedt <rostedt@goodmis.org>2016-05-09 18:10:00 -0400
commit91e6f1ce8657795cec83a81090c20cbaa8337c68 (patch)
tree8830de1d0111997629a84e55ba9b95c5e59fcc22
parent0fc1b09ff1ff404ddf753f5ffa5cd0adc8fdcdc9 (diff)
ftracetest: Add instance created, delete, read and enable event test
Add a new ftrace test that creates three threads. One that creates and removes an ftrace instance, one that reads the instance, and one that enables and disables events in the instance. This is a stress test for accessing and removing instances at the same time. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--tools/testing/selftests/ftrace/test.d/instances/instance-event.tc143
1 files changed, 143 insertions, 0 deletions
diff --git a/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc b/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc
new file mode 100644
index 000000000000..5f2abd03f16b
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc
@@ -0,0 +1,143 @@
1#!/bin/sh
2# description: Test creation and deletion of trace instances while setting an event
3
4if [ ! -d instances ] ; then
5 echo "no instance directory with this kernel"
6 exit_unsupported;
7fi
8
9fail() { # mesg
10 rmdir foo 2>/dev/null
11 echo $1
12 set -e
13 exit $FAIL
14}
15
16cd instances
17
18# we don't want to fail on error
19set +e
20
21mkdir x
22rmdir x
23result=$?
24
25if [ $result -ne 0 ]; then
26 echo "instance rmdir not supported"
27 exit_unsupported
28fi
29
30instance_slam() {
31 while :; do
32 mkdir foo 2> /dev/null
33 rmdir foo 2> /dev/null
34 done
35}
36
37instance_read() {
38 while :; do
39 cat foo/trace 1> /dev/null 2>&1
40 done
41}
42
43instance_set() {
44 while :; do
45 echo 1 > foo/events/sched/sched_switch
46 done 2> /dev/null
47}
48
49instance_slam &
50p1=$!
51echo $p1
52
53instance_set &
54p2=$!
55echo $p2
56
57instance_read &
58p3=$!
59echo $p3
60
61sleep 1
62
63kill -1 $p3
64kill -1 $p2
65kill -1 $p1
66
67echo "Wait for processes to finish"
68wait $p1 $p2 $p3
69echo "all processes finished, wait for cleanup"
70sleep 1
71
72mkdir foo
73ls foo > /dev/null
74rmdir foo
75if [ -d foo ]; then
76 fail "foo still exists"
77fi
78exit 0
79
80
81
82
83instance_slam() {
84 while :; do
85 mkdir x
86 mkdir y
87 mkdir z
88 rmdir x
89 rmdir y
90 rmdir z
91 done 2>/dev/null
92}
93
94instance_slam &
95x=`jobs -l`
96p1=`echo $x | cut -d' ' -f2`
97echo $p1
98
99instance_slam &
100x=`jobs -l | tail -1`
101p2=`echo $x | cut -d' ' -f2`
102echo $p2
103
104instance_slam &
105x=`jobs -l | tail -1`
106p3=`echo $x | cut -d' ' -f2`
107echo $p3
108
109instance_slam &
110x=`jobs -l | tail -1`
111p4=`echo $x | cut -d' ' -f2`
112echo $p4
113
114instance_slam &
115x=`jobs -l | tail -1`
116p5=`echo $x | cut -d' ' -f2`
117echo $p5
118
119ls -lR >/dev/null
120sleep 1
121
122kill -1 $p1
123kill -1 $p2
124kill -1 $p3
125kill -1 $p4
126kill -1 $p5
127
128echo "Wait for processes to finish"
129wait $p1 $p2 $p3 $p4 $p5
130echo "all processes finished, wait for cleanup"
131
132mkdir x y z
133ls x y z
134rmdir x y z
135for d in x y z; do
136 if [ -d $d ]; then
137 fail "instance $d still exists"
138 fi
139done
140
141set -e
142
143exit 0