| import os |
| |
| import infra.basetest |
| |
| |
| class TestTraceCmd(infra.basetest.BRTest): |
| # A specific configuration is needed for testing trace-cmd. |
| # The function tracer need to be enabled in the Kernel. |
| kern_fragment = \ |
| infra.filepath("tests/package/test_trace_cmd/linux-ftrace.fragment") |
| config = \ |
| f""" |
| BR2_aarch64=y |
| BR2_TOOLCHAIN_EXTERNAL=y |
| BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" |
| BR2_LINUX_KERNEL=y |
| BR2_LINUX_KERNEL_CUSTOM_VERSION=y |
| BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.74" |
| BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y |
| BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" |
| BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kern_fragment}" |
| BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y |
| BR2_PACKAGE_TRACE_CMD=y |
| BR2_TARGET_ROOTFS_CPIO=y |
| BR2_TARGET_ROOTFS_CPIO_GZIP=y |
| # BR2_TARGET_ROOTFS_TAR is not set |
| """ |
| |
| def test_run(self): |
| img = os.path.join(self.builddir, "images", "rootfs.cpio.gz") |
| kern = os.path.join(self.builddir, "images", "Image") |
| self.emulator.boot(arch="aarch64", |
| kernel=kern, |
| kernel_cmdline=["console=ttyAMA0"], |
| options=["-M", "virt", |
| "-cpu", "cortex-a57", |
| "-m", "256M", |
| "-initrd", img]) |
| self.emulator.login() |
| |
| # Record calls to kmalloc() from a simple command. |
| self.assertRunOk("trace-cmd record -e kmalloc ls -l /") |
| |
| # Show information about the trace.dat file. |
| self.assertRunOk("trace-cmd dump") |
| |
| # Generate a text report of the trace. |
| self.assertRunOk("trace-cmd report > trace.txt") |
| |
| # Check we have occurrences of "kmalloc:" in the trace report. |
| cmd = "grep -Fc kmalloc: trace.txt" |
| output, exit_code = self.emulator.run(cmd) |
| self.assertEqual(exit_code, 0) |
| self.assertTrue(int(output[0]) > 0) |