Add a simple sub-test to the "Miscellaneous Intel PT testing" test to check pause / resume.
Unified · Split
| @@ -644,6 +644,33 @@ test_pipe() · 643 unmodified lines | ||
| 644 | 644 | return 0 |
| 645 | 645 | } |
| 646 | 646 | |
| 647 | +test_pause_resume() | |
| 648 | +{ | |
| 649 | + echo "--- Test with pause / resume ---" | |
| 650 | + if ! perf_record_no_decode -o "${perfdatafile}" -e intel_pt/aux-action=start-paused/u uname ; then | |
| 651 | + echo "SKIP: pause / resume is not supported" | |
| 652 | + return 2 | |
| 653 | + fi | |
| 654 | + if ! perf_record_no_bpf -o "${perfdatafile}" \ | |
| 655 | + -e intel_pt/aux-action=start-paused/u \ | |
| 656 | + -e instructions/period=50000,aux-action=resume,name=Resume/u \ | |
| 657 | + -e instructions/period=100000,aux-action=pause,name=Pause/u uname ; then | |
| 658 | + echo "perf record with pause / resume failed" | |
| 659 | + return 1 | |
| 660 | + fi | |
| 661 | + if ! perf script -i "${perfdatafile}" --itrace=b -Fperiod,event | \ | |
| 662 | + awk 'BEGIN {paused=1;branches=0} | |
| 663 | + /Resume/ {paused=0} | |
| 664 | + /branches/ {if (paused) exit 1;branches=1} | |
| 665 | + /Pause/ {paused=1} | |
| 666 | + END {if (!branches) exit 1}' ; then | |
| 667 | + echo "perf record with pause / resume failed" | |
| 668 | + return 1 | |
| 669 | + fi | |
| 670 | + echo OK | |
| 671 | + return 0 | |
| 672 | +} | |
| 673 | + | |
| 647 | 674 | count_result() |
| 648 | 675 | { |
| 649 | 676 | if [ "$1" -eq 2 ] ; then |
| @@ -672,6 +699,7 @@ test_power_event || ret=$? ; count_result $ret ; ret=0 · 22 unmodified lines | ||
| 672 | 699 | test_no_tnt || ret=$? ; count_result $ret ; ret=0 |
| 673 | 700 | test_event_trace || ret=$? ; count_result $ret ; ret=0 |
| 674 | 701 | test_pipe || ret=$? ; count_result $ret ; ret=0 |
| 702 | +test_pause_resume || ret=$? ; count_result $ret ; ret=0 | |
| 675 | 703 | |
| 676 | 704 | cleanup |
| 677 | 705 | |