set test "flightrec1" if {![installtest_p]} { untested $test; return } # Make sure we start with a clean slate. catch {exec rm -f $test.out*} # run stapio in background mode spawn stap -u -F -o $test.out -we {probe begin {}} # check whether stap outputs stapio pid set pid 0 expect { -timeout 240 -re {([0-9]+)\r\n} { pass "$test (flight recorder option)" set pid $expect_out(1,string) exp_continue} timeout { fail "$test (timeout)" } eof { } } # Here we're waiting on the parent stap process to finish. Stapio will # still be running in the background. catch { close }; catch { wait } if {$pid == 0} { fail "$test (no pid)" return -1 } # check whether stapio is running in background spawn ps -o cmd hc $pid expect { -timeout 10 "stapio" {pass "$test (stapio in background)"} # don't contine timeout { fail "$test (timeout)"} eof { fail "$test (stapio was not found)" } } catch { close }; catch { wait } # switch file exec sleep 2 kill -USR2 $pid # check output file exec sleep 2 if {[catch {exec rm $test.out}]} { fail "$test (no output file)" return -1 } else { pass "$test (output file)" } # Kill the background stapio process. kill -TERM $pid 5 # check switched output file if {[catch {exec rm $test.out.1}]} { fail "$test (failed to switch output file)" return -1 } else { pass "$test (switch output file)" }