xref: /OK3568_Linux_fs/yocto/poky/meta/lib/oeqa/runtime/cases/stap.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1#
2# SPDX-License-Identifier: MIT
3#
4
5import os
6
7from oeqa.runtime.case import OERuntimeTestCase
8from oeqa.core.decorator.data import skipIfNotFeature
9from oeqa.runtime.decorator.package import OEHasPackage
10
11class StapTest(OERuntimeTestCase):
12    @skipIfNotFeature('tools-profile', 'Test requires tools-profile to be in IMAGE_FEATURES')
13    @OEHasPackage(['systemtap'])
14    @OEHasPackage(['gcc-symlinks'])
15    @OEHasPackage(['kernel-devsrc'])
16    def test_stap(self):
17        try:
18            cmd = 'make -j -C /usr/src/kernel scripts prepare'
19            status, output = self.target.run(cmd, 900)
20            self.assertEqual(status, 0, msg='\n'.join([cmd, output]))
21
22            cmd = 'stap -v -p4 -m stap-hello --disable-cache -DSTP_NO_VERREL_CHECK -e \'probe oneshot { print("Hello, "); println("SystemTap!") }\''
23            status, output = self.target.run(cmd, 900)
24            self.assertEqual(status, 0, msg='\n'.join([cmd, output]))
25
26            cmd = 'staprun -v -R -b1 stap-hello.ko'
27            self.assertEqual(status, 0, msg='\n'.join([cmd, output]))
28            self.assertIn('Hello, SystemTap!', output, msg='\n'.join([cmd, output]))
29        except:
30            status, dmesg = self.target.run('dmesg')
31            if status == 0:
32                print(dmesg)
33