191e6f1ceSSteven Rostedt (Red Hat)#!/bin/sh
291e6f1ceSSteven Rostedt (Red Hat)# description: Test creation and deletion of trace instances while setting an event
391e6f1ceSSteven Rostedt (Red Hat)
491e6f1ceSSteven Rostedt (Red Hat)if [ ! -d instances ] ; then
591e6f1ceSSteven Rostedt (Red Hat)    echo "no instance directory with this kernel"
691e6f1ceSSteven Rostedt (Red Hat)    exit_unsupported;
791e6f1ceSSteven Rostedt (Red Hat)fi
891e6f1ceSSteven Rostedt (Red Hat)
991e6f1ceSSteven Rostedt (Red Hat)fail() { # mesg
1091e6f1ceSSteven Rostedt (Red Hat)    rmdir foo 2>/dev/null
1191e6f1ceSSteven Rostedt (Red Hat)    echo $1
1291e6f1ceSSteven Rostedt (Red Hat)    set -e
1391e6f1ceSSteven Rostedt (Red Hat)    exit $FAIL
1491e6f1ceSSteven Rostedt (Red Hat)}
1591e6f1ceSSteven Rostedt (Red Hat)
1691e6f1ceSSteven Rostedt (Red Hat)cd instances
1791e6f1ceSSteven Rostedt (Red Hat)
1891e6f1ceSSteven Rostedt (Red Hat)# we don't want to fail on error
1991e6f1ceSSteven Rostedt (Red Hat)set +e
2091e6f1ceSSteven Rostedt (Red Hat)
2191e6f1ceSSteven Rostedt (Red Hat)mkdir x
2291e6f1ceSSteven Rostedt (Red Hat)rmdir x
2391e6f1ceSSteven Rostedt (Red Hat)result=$?
2491e6f1ceSSteven Rostedt (Red Hat)
2591e6f1ceSSteven Rostedt (Red Hat)if [ $result -ne 0 ]; then
2691e6f1ceSSteven Rostedt (Red Hat)    echo "instance rmdir not supported"
2791e6f1ceSSteven Rostedt (Red Hat)    exit_unsupported
2891e6f1ceSSteven Rostedt (Red Hat)fi
2991e6f1ceSSteven Rostedt (Red Hat)
3091e6f1ceSSteven Rostedt (Red Hat)instance_slam() {
3191e6f1ceSSteven Rostedt (Red Hat)        while :; do
3291e6f1ceSSteven Rostedt (Red Hat)                mkdir foo 2> /dev/null
3391e6f1ceSSteven Rostedt (Red Hat)                rmdir foo 2> /dev/null
3491e6f1ceSSteven Rostedt (Red Hat)        done
3591e6f1ceSSteven Rostedt (Red Hat)}
3691e6f1ceSSteven Rostedt (Red Hat)
3791e6f1ceSSteven Rostedt (Red Hat)instance_read() {
3891e6f1ceSSteven Rostedt (Red Hat)        while :; do
3991e6f1ceSSteven Rostedt (Red Hat)                cat foo/trace 1> /dev/null 2>&1
4091e6f1ceSSteven Rostedt (Red Hat)        done
4191e6f1ceSSteven Rostedt (Red Hat)}
4291e6f1ceSSteven Rostedt (Red Hat)
4391e6f1ceSSteven Rostedt (Red Hat)instance_set() {
4491e6f1ceSSteven Rostedt (Red Hat)        while :; do
4591e6f1ceSSteven Rostedt (Red Hat)                echo 1 > foo/events/sched/sched_switch
4691e6f1ceSSteven Rostedt (Red Hat)        done 2> /dev/null
4791e6f1ceSSteven Rostedt (Red Hat)}
4891e6f1ceSSteven Rostedt (Red Hat)
4991e6f1ceSSteven Rostedt (Red Hat)instance_slam &
5091e6f1ceSSteven Rostedt (Red Hat)p1=$!
5191e6f1ceSSteven Rostedt (Red Hat)echo $p1
5291e6f1ceSSteven Rostedt (Red Hat)
5391e6f1ceSSteven Rostedt (Red Hat)instance_set &
5491e6f1ceSSteven Rostedt (Red Hat)p2=$!
5591e6f1ceSSteven Rostedt (Red Hat)echo $p2
5691e6f1ceSSteven Rostedt (Red Hat)
5791e6f1ceSSteven Rostedt (Red Hat)instance_read &
5891e6f1ceSSteven Rostedt (Red Hat)p3=$!
5991e6f1ceSSteven Rostedt (Red Hat)echo $p3
6091e6f1ceSSteven Rostedt (Red Hat)
6191e6f1ceSSteven Rostedt (Red Hat)sleep 1
6291e6f1ceSSteven Rostedt (Red Hat)
6391e6f1ceSSteven Rostedt (Red Hat)kill -1 $p3
6491e6f1ceSSteven Rostedt (Red Hat)kill -1 $p2
6591e6f1ceSSteven Rostedt (Red Hat)kill -1 $p1
6691e6f1ceSSteven Rostedt (Red Hat)
6791e6f1ceSSteven Rostedt (Red Hat)echo "Wait for processes to finish"
6891e6f1ceSSteven Rostedt (Red Hat)wait $p1 $p2 $p3
6991e6f1ceSSteven Rostedt (Red Hat)echo "all processes finished, wait for cleanup"
7091e6f1ceSSteven Rostedt (Red Hat)sleep 1
7191e6f1ceSSteven Rostedt (Red Hat)
7291e6f1ceSSteven Rostedt (Red Hat)mkdir foo
7391e6f1ceSSteven Rostedt (Red Hat)ls foo > /dev/null
7491e6f1ceSSteven Rostedt (Red Hat)rmdir foo
7591e6f1ceSSteven Rostedt (Red Hat)if [ -d foo ]; then
7691e6f1ceSSteven Rostedt (Red Hat)        fail "foo still exists"
7791e6f1ceSSteven Rostedt (Red Hat)fi
7891e6f1ceSSteven Rostedt (Red Hat)
79b172296bSNaveen N. Raomkdir foo
80b172296bSNaveen N. Raoecho "schedule:enable_event:sched:sched_switch" > foo/set_ftrace_filter
81b172296bSNaveen N. Raormdir foo
82b172296bSNaveen N. Raoif [ -d foo ]; then
83b172296bSNaveen N. Rao        fail "foo still exists"
84b172296bSNaveen N. Raofi
8591e6f1ceSSteven Rostedt (Red Hat)
8691e6f1ceSSteven Rostedt (Red Hat)
8791e6f1ceSSteven Rostedt (Red Hat)instance_slam() {
8891e6f1ceSSteven Rostedt (Red Hat)    while :; do
8991e6f1ceSSteven Rostedt (Red Hat)	mkdir x
9091e6f1ceSSteven Rostedt (Red Hat)	mkdir y
9191e6f1ceSSteven Rostedt (Red Hat)	mkdir z
9291e6f1ceSSteven Rostedt (Red Hat)	rmdir x
9391e6f1ceSSteven Rostedt (Red Hat)	rmdir y
9491e6f1ceSSteven Rostedt (Red Hat)	rmdir z
9591e6f1ceSSteven Rostedt (Red Hat)    done 2>/dev/null
9691e6f1ceSSteven Rostedt (Red Hat)}
9791e6f1ceSSteven Rostedt (Red Hat)
9891e6f1ceSSteven Rostedt (Red Hat)instance_slam &
9997f8827aSSteven Rostedt (Red Hat)p1=$!
10091e6f1ceSSteven Rostedt (Red Hat)echo $p1
10191e6f1ceSSteven Rostedt (Red Hat)
10291e6f1ceSSteven Rostedt (Red Hat)instance_slam &
10397f8827aSSteven Rostedt (Red Hat)p2=$!
10491e6f1ceSSteven Rostedt (Red Hat)echo $p2
10591e6f1ceSSteven Rostedt (Red Hat)
10691e6f1ceSSteven Rostedt (Red Hat)instance_slam &
10797f8827aSSteven Rostedt (Red Hat)p3=$!
10891e6f1ceSSteven Rostedt (Red Hat)echo $p3
10991e6f1ceSSteven Rostedt (Red Hat)
11091e6f1ceSSteven Rostedt (Red Hat)instance_slam &
11197f8827aSSteven Rostedt (Red Hat)p4=$!
11291e6f1ceSSteven Rostedt (Red Hat)echo $p4
11391e6f1ceSSteven Rostedt (Red Hat)
11491e6f1ceSSteven Rostedt (Red Hat)instance_slam &
11597f8827aSSteven Rostedt (Red Hat)p5=$!
11691e6f1ceSSteven Rostedt (Red Hat)echo $p5
11791e6f1ceSSteven Rostedt (Red Hat)
11891e6f1ceSSteven Rostedt (Red Hat)ls -lR >/dev/null
11991e6f1ceSSteven Rostedt (Red Hat)sleep 1
12091e6f1ceSSteven Rostedt (Red Hat)
12191e6f1ceSSteven Rostedt (Red Hat)kill -1 $p1
12291e6f1ceSSteven Rostedt (Red Hat)kill -1 $p2
12391e6f1ceSSteven Rostedt (Red Hat)kill -1 $p3
12491e6f1ceSSteven Rostedt (Red Hat)kill -1 $p4
12591e6f1ceSSteven Rostedt (Red Hat)kill -1 $p5
12691e6f1ceSSteven Rostedt (Red Hat)
12791e6f1ceSSteven Rostedt (Red Hat)echo "Wait for processes to finish"
12891e6f1ceSSteven Rostedt (Red Hat)wait $p1 $p2 $p3 $p4 $p5
12991e6f1ceSSteven Rostedt (Red Hat)echo "all processes finished, wait for cleanup"
13091e6f1ceSSteven Rostedt (Red Hat)
13191e6f1ceSSteven Rostedt (Red Hat)mkdir x y z
13291e6f1ceSSteven Rostedt (Red Hat)ls x y z
13391e6f1ceSSteven Rostedt (Red Hat)rmdir x y z
13491e6f1ceSSteven Rostedt (Red Hat)for d in x y z; do
13591e6f1ceSSteven Rostedt (Red Hat)        if [ -d $d ]; then
13691e6f1ceSSteven Rostedt (Red Hat)                fail "instance $d still exists"
13791e6f1ceSSteven Rostedt (Red Hat)        fi
13891e6f1ceSSteven Rostedt (Red Hat)done
13991e6f1ceSSteven Rostedt (Red Hat)
14091e6f1ceSSteven Rostedt (Red Hat)set -e
14191e6f1ceSSteven Rostedt (Red Hat)
14291e6f1ceSSteven Rostedt (Red Hat)exit 0
143