• Athira Rajeev's avatar
    tools/perf: Handle perftool-testsuite_probe testcases fail when kernel debuginfo is not present · 90d32e92
    Athira Rajeev authored
    Running "perftool-testsuite_probe" fails as below:
    
    	./perf test -v "perftool-testsuite_probe"
    	83: perftool-testsuite_probe  : FAILED
    
    There are three fails:
    
    1. Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
       -- [ FAIL ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf probe -l (output regexp parsing)
    
    2. Regexp not found: "probe:vfs_mknod"
       Regexp not found: "probe:vfs_create"
       Regexp not found: "probe:vfs_rmdir"
       Regexp not found: "probe:vfs_link"
       Regexp not found: "probe:vfs_write"
       -- [ FAIL ] -- perf_probe :: test_adding_kernel :: wildcard adding support (command exitcode + output regexp parsing)
    
    3. Regexp not found: "Failed to find"
       Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
       Regexp not found: "in this function|at this address"
       Line did not match any pattern: "The /boot/vmlinux file has no debug information."
       Line did not match any pattern: "Rebuild with CONFIG_DEBUG_INFO=y, or install an appropriate debuginfo package."
    
    These three tests depends on kernel debug info.
    1. Fail 1 expects file name along with probe which needs debuginfo
    2. Fail 2 :
        perf probe -nf --max-probes=512 -a 'vfs_* $params'
        Debuginfo-analysis is not supported.
         Error: Failed to add events.
    
    3. Fail 3 :
       perf probe 'vfs_read somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64'
       Debuginfo-analysis is not supported.
       Error: Failed to add events.
    
    There is already helper function skip_if_no_debuginfo in
    lib/probe_vfs_getname.sh which does perf probe and returns
    "2" if debug info is not present. Use the skip_if_no_debuginfo
    function and skip only the three tests which needs debuginfo
    based on the result.
    
    With the patch:
    
        83: perftool-testsuite_probe:
       --- start ---
       test child forked, pid 3927
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission ::
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission :: -a
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe inode_permission :: --add
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing added probe :: perf list
       Regexp not found: "\s*probe:inode_permission(?:_\d+)?\s+\(on inode_permission(?:[:\+][0-9A-Fa-f]+)?@.+\)"
       -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 2 2 Skipped due to missing debuginfo :: testcase skipped
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: using added probe
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: deleting added probe
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing removed probe (should NOT be listed)
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: dry run :: adding probe
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding probes :: first probe adding
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding probes :: second probe adding (without force)
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding probes :: second probe adding (with force)
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: using doubled probe
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: removing multiple probes
       Regexp not found: "probe:vfs_mknod"
       Regexp not found: "probe:vfs_create"
       Regexp not found: "probe:vfs_rmdir"
       Regexp not found: "probe:vfs_link"
       Regexp not found: "probe:vfs_write"
       -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 2 2 Skipped due to missing debuginfo :: testcase skipped
       Regexp not found: "Failed to find"
       Regexp not found: "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
       Regexp not found: "in this function|at this address"
       Line did not match any pattern: "The /boot/vmlinux file has no debug information."
       Line did not match any pattern: "Rebuild with CONFIG_DEBUG_INFO=y, or install an appropriate debuginfo package."
       -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 2 2 Skipped due to missing debuginfo :: testcase skipped
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with retval :: add
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with retval :: record
       -- [ PASS ] -- perf_probe :: test_adding_kernel :: function argument probing :: script
       ## [ PASS ] ## perf_probe :: test_adding_kernel SUMMARY
       ---- end(0) ----
       83: perftool-testsuite_probe                                        : Ok
    
    Only the three specific tests are skipped and remaining
    ran successfully.
    Signed-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
    Reviewed-by: default avatarJames Clark <james.clark@arm.com>
    Cc: akanksha@linux.ibm.com
    Cc: kjain@linux.ibm.com
    Cc: maddy@linux.ibm.com
    Cc: disgoel@linux.vnet.ibm.com
    Cc: linuxppc-dev@lists.ozlabs.org
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20240617122121.7484-1-atrajeev@linux.vnet.ibm.com
    90d32e92
test_adding_kernel.sh 10.9 KB