diff options
Diffstat (limited to 'meta/lib/oeqa/runtime/cases')
-rw-r--r-- | meta/lib/oeqa/runtime/cases/buildcpio.py | 4 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/buildlzip.py | 2 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/ethernet_ip_connman.py | 21 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/ltp.py | 2 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/parselogs-ignores-mipsarch.txt | 17 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/parselogs-ignores-qemuall.txt | 8 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/parselogs.py | 2 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/ping.py | 10 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/scp.py | 2 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/skeletoninit.py | 3 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/ssh.py | 34 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/stap.py | 5 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/systemd.py | 23 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/cases/uki.py | 16 |
14 files changed, 102 insertions, 47 deletions
diff --git a/meta/lib/oeqa/runtime/cases/buildcpio.py b/meta/lib/oeqa/runtime/cases/buildcpio.py index 7be734cb4f..0c9c57a3cb 100644 --- a/meta/lib/oeqa/runtime/cases/buildcpio.py +++ b/meta/lib/oeqa/runtime/cases/buildcpio.py | |||
@@ -29,6 +29,6 @@ class BuildCpioTest(OERuntimeTestCase): | |||
29 | @OEHasPackage(['autoconf']) | 29 | @OEHasPackage(['autoconf']) |
30 | def test_cpio(self): | 30 | def test_cpio(self): |
31 | self.project.download_archive() | 31 | self.project.download_archive() |
32 | self.project.run_configure() | 32 | self.project.run_configure(configure_args="CFLAGS='-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration'") |
33 | self.project.run_make() | 33 | self.project.run_make(make_args="CFLAGS='-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration'") |
34 | self.project.run_install() | 34 | self.project.run_install() |
diff --git a/meta/lib/oeqa/runtime/cases/buildlzip.py b/meta/lib/oeqa/runtime/cases/buildlzip.py index 44f4f1be71..921a0bca61 100644 --- a/meta/lib/oeqa/runtime/cases/buildlzip.py +++ b/meta/lib/oeqa/runtime/cases/buildlzip.py | |||
@@ -15,7 +15,7 @@ class BuildLzipTest(OERuntimeTestCase): | |||
15 | @classmethod | 15 | @classmethod |
16 | def setUpClass(cls): | 16 | def setUpClass(cls): |
17 | uri = 'http://downloads.yoctoproject.org/mirror/sources' | 17 | uri = 'http://downloads.yoctoproject.org/mirror/sources' |
18 | uri = '%s/lzip-1.19.tar.gz' % uri | 18 | uri = '%s/lzip-1.25.tar.gz' % uri |
19 | cls.project = TargetBuildProject(cls.tc.target, | 19 | cls.project = TargetBuildProject(cls.tc.target, |
20 | uri, | 20 | uri, |
21 | dl_dir = cls.tc.td['DL_DIR']) | 21 | dl_dir = cls.tc.td['DL_DIR']) |
diff --git a/meta/lib/oeqa/runtime/cases/ethernet_ip_connman.py b/meta/lib/oeqa/runtime/cases/ethernet_ip_connman.py index eac8f2d082..c3be60f006 100644 --- a/meta/lib/oeqa/runtime/cases/ethernet_ip_connman.py +++ b/meta/lib/oeqa/runtime/cases/ethernet_ip_connman.py | |||
@@ -9,26 +9,7 @@ from oeqa.core.decorator.data import skipIfQemu | |||
9 | 9 | ||
10 | class Ethernet_Test(OERuntimeTestCase): | 10 | class Ethernet_Test(OERuntimeTestCase): |
11 | 11 | ||
12 | def set_ip(self, x): | ||
13 | x = x.split(".") | ||
14 | sample_host_address = '150' | ||
15 | x[3] = sample_host_address | ||
16 | x = '.'.join(x) | ||
17 | return x | ||
18 | |||
19 | @skipIfQemu() | 12 | @skipIfQemu() |
20 | @OETestDepends(['ssh.SSHTest.test_ssh']) | ||
21 | def test_set_virtual_ip(self): | ||
22 | (status, output) = self.target.run("ifconfig eth0 | grep 'inet ' | awk '{print $2}'") | ||
23 | self.assertEqual(status, 0, msg='Failed to get ip address. Make sure you have an ethernet connection on your device, output: %s' % output) | ||
24 | original_ip = output | ||
25 | virtual_ip = self.set_ip(original_ip) | ||
26 | |||
27 | (status, output) = self.target.run("ifconfig eth0:1 %s netmask 255.255.255.0 && sleep 2 && ping -c 5 %s && ifconfig eth0:1 down" % (virtual_ip,virtual_ip)) | ||
28 | self.assertEqual(status, 0, msg='Failed to create virtual ip address, output: %s' % output) | ||
29 | |||
30 | @skipIfQemu() | ||
31 | @OETestDepends(['ethernet_ip_connman.Ethernet_Test.test_set_virtual_ip']) | ||
32 | def test_get_ip_from_dhcp(self): | 13 | def test_get_ip_from_dhcp(self): |
33 | (status, output) = self.target.run("connmanctl services | grep -E '*AO Wired|*AR Wired' | awk '{print $3}'") | 14 | (status, output) = self.target.run("connmanctl services | grep -E '*AO Wired|*AR Wired' | awk '{print $3}'") |
34 | self.assertEqual(status, 0, msg='No wired interfaces are detected, output: %s' % output) | 15 | self.assertEqual(status, 0, msg='No wired interfaces are detected, output: %s' % output) |
@@ -39,4 +20,4 @@ class Ethernet_Test(OERuntimeTestCase): | |||
39 | default_gateway = output | 20 | default_gateway = output |
40 | 21 | ||
41 | (status, output) = self.target.run("connmanctl config %s --ipv4 dhcp && sleep 2 && ping -c 5 %s" % (wired_interfaces,default_gateway)) | 22 | (status, output) = self.target.run("connmanctl config %s --ipv4 dhcp && sleep 2 && ping -c 5 %s" % (wired_interfaces,default_gateway)) |
42 | self.assertEqual(status, 0, msg='Failed to get dynamic IP address via DHCP in connmand, output: %s' % output) \ No newline at end of file | 23 | self.assertEqual(status, 0, msg='Failed to get dynamic IP address via DHCP in connmand, output: %s' % output) |
diff --git a/meta/lib/oeqa/runtime/cases/ltp.py b/meta/lib/oeqa/runtime/cases/ltp.py index f588a93200..e81360670c 100644 --- a/meta/lib/oeqa/runtime/cases/ltp.py +++ b/meta/lib/oeqa/runtime/cases/ltp.py | |||
@@ -57,7 +57,7 @@ class LtpTestBase(OERuntimeTestCase): | |||
57 | 57 | ||
58 | class LtpTest(LtpTestBase): | 58 | class LtpTest(LtpTestBase): |
59 | 59 | ||
60 | ltp_groups = ["math", "syscalls", "dio", "io", "mm", "ipc", "sched", "nptl", "pty", "containers", "controllers", "filecaps", "cap_bounds", "fcntl-locktests", "commands", "net.ipv6_lib", "input","fs_perms_simple", "cve", "crypto", "ima", "net.nfs", "net_stress.ipsec_icmp", "net.ipv6", "numa", "uevent", "ltp-aiodio.part1", "ltp-aiodio.part2", "ltp-aiodio.part3", "ltp-aiodio.part4"] | 60 | ltp_groups = ["math", "syscalls", "dio", "mm", "ipc", "sched", "nptl", "pty", "containers", "controllers", "fcntl-locktests", "commands", "net.ipv6_lib", "input","fs_perms_simple", "cve", "crypto", "ima", "net.nfs", "net_stress.ipsec_icmp", "net.ipv6", "numa", "uevent", "ltp-aiodio.part1", "ltp-aiodio.part2", "ltp-aiodio.part3", "ltp-aiodio.part4"] |
61 | 61 | ||
62 | ltp_fs = ["fs", "fs_bind"] | 62 | ltp_fs = ["fs", "fs_bind"] |
63 | # skip kernel cpuhotplug | 63 | # skip kernel cpuhotplug |
diff --git a/meta/lib/oeqa/runtime/cases/parselogs-ignores-mipsarch.txt b/meta/lib/oeqa/runtime/cases/parselogs-ignores-mipsarch.txt index 2c0bd9a247..156b0f9c10 100644 --- a/meta/lib/oeqa/runtime/cases/parselogs-ignores-mipsarch.txt +++ b/meta/lib/oeqa/runtime/cases/parselogs-ignores-mipsarch.txt | |||
@@ -1,2 +1,19 @@ | |||
1 | # These should be reviewed to see if they are still needed | 1 | # These should be reviewed to see if they are still needed |
2 | cacheinfo: Failed to find cpu0 device node | 2 | cacheinfo: Failed to find cpu0 device node |
3 | |||
4 | # 6.10 restructures sysctl registration such that mips | ||
5 | # registers an empty table and generates harmless warnings: | ||
6 | # failed when register_sysctl_sz sched_fair_sysctls to kernel | ||
7 | # failed when register_sysctl_sz sched_core_sysctls to kernel | ||
8 | failed when register_sysctl_sz sched | ||
9 | |||
10 | # With qemu 9.1.0 | ||
11 | # pci 0000:00:00.0: BAR 2: can't handle BAR above 4GB (bus address 0x1f00000010) | ||
12 | # pci 0000:00:00.0: BAR 5: error updating (0x1105d034 != 0x0100d034) | ||
13 | BAR 0: error updating | ||
14 | BAR 1: error updating | ||
15 | BAR 2: error updating | ||
16 | BAR 3: error updating | ||
17 | BAR 4: error updating | ||
18 | BAR 5: error updating | ||
19 | : can't handle BAR above 4GB | ||
diff --git a/meta/lib/oeqa/runtime/cases/parselogs-ignores-qemuall.txt b/meta/lib/oeqa/runtime/cases/parselogs-ignores-qemuall.txt index b0c0fc9ddf..143db40d63 100644 --- a/meta/lib/oeqa/runtime/cases/parselogs-ignores-qemuall.txt +++ b/meta/lib/oeqa/runtime/cases/parselogs-ignores-qemuall.txt | |||
@@ -13,6 +13,14 @@ FBIOPUT_VSCREENINFO failed, double buffering disabled | |||
13 | # pci 0000:00:00.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size) | 13 | # pci 0000:00:00.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size) |
14 | # pci 0000:00:00.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size) | 14 | # pci 0000:00:00.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size) |
15 | invalid BAR (can't size) | 15 | invalid BAR (can't size) |
16 | # 6.10+ the invalid BAR warnings are of this format: | ||
17 | # pci 0000:00:00.0: [Firmware Bug]: BAR 0: invalid; can't size | ||
18 | # pci 0000:00:00.0: [Firmware Bug]: BAR 1: invalid; can't size | ||
19 | # pci 0000:00:00.0: [Firmware Bug]: BAR 2: invalid; can't size | ||
20 | # pci 0000:00:00.0: [Firmware Bug]: BAR 3: invalid; can't size | ||
21 | # pci 0000:00:00.0: [Firmware Bug]: BAR 4: invalid; can't size | ||
22 | # pci 0000:00:00.0: [Firmware Bug]: BAR 5: invalid; can't size | ||
23 | invalid; can't size | ||
16 | 24 | ||
17 | # These should be reviewed to see if they are still needed | 25 | # These should be reviewed to see if they are still needed |
18 | wrong ELF class | 26 | wrong ELF class |
diff --git a/meta/lib/oeqa/runtime/cases/parselogs.py b/meta/lib/oeqa/runtime/cases/parselogs.py index 6966923c94..47c77fccd5 100644 --- a/meta/lib/oeqa/runtime/cases/parselogs.py +++ b/meta/lib/oeqa/runtime/cases/parselogs.py | |||
@@ -34,7 +34,7 @@ class ParseLogsTest(OERuntimeTestCase): | |||
34 | log_locations = ["/var/log/", "/var/log/dmesg", "/tmp/dmesg_output.log"] | 34 | log_locations = ["/var/log/", "/var/log/dmesg", "/tmp/dmesg_output.log"] |
35 | 35 | ||
36 | # The keywords that identify error messages in the log files | 36 | # The keywords that identify error messages in the log files |
37 | errors = ["error", "cannot", "can't", "failed"] | 37 | errors = ["error", "cannot", "can't", "failed", "---[ cut here ]---", "No irq handler for vector"] |
38 | 38 | ||
39 | # A list of error messages that should be ignored | 39 | # A list of error messages that should be ignored |
40 | ignore_errors = [] | 40 | ignore_errors = [] |
diff --git a/meta/lib/oeqa/runtime/cases/ping.py b/meta/lib/oeqa/runtime/cases/ping.py index f72460e7f3..efb91d4cc9 100644 --- a/meta/lib/oeqa/runtime/cases/ping.py +++ b/meta/lib/oeqa/runtime/cases/ping.py | |||
@@ -7,7 +7,7 @@ | |||
7 | from subprocess import Popen, PIPE | 7 | from subprocess import Popen, PIPE |
8 | from time import sleep | 8 | from time import sleep |
9 | 9 | ||
10 | from oeqa.runtime.case import OERuntimeTestCase | 10 | from oeqa.runtime.case import OERuntimeTestCase, run_network_serialdebug |
11 | from oeqa.core.decorator.oetimeout import OETimeout | 11 | from oeqa.core.decorator.oetimeout import OETimeout |
12 | from oeqa.core.exception import OEQATimeoutError | 12 | from oeqa.core.exception import OEQATimeoutError |
13 | 13 | ||
@@ -18,6 +18,13 @@ class PingTest(OERuntimeTestCase): | |||
18 | output = '' | 18 | output = '' |
19 | count = 0 | 19 | count = 0 |
20 | self.assertNotEqual(len(self.target.ip), 0, msg="No target IP address set") | 20 | self.assertNotEqual(len(self.target.ip), 0, msg="No target IP address set") |
21 | |||
22 | # If the target IP is localhost (because user-space networking is being used), | ||
23 | # then there's no point in pinging it. | ||
24 | if self.target.ip.startswith("127.0.0.") or self.target.ip in ("localhost", "::1"): | ||
25 | print("runtime/ping: localhost detected, not pinging") | ||
26 | return | ||
27 | |||
21 | try: | 28 | try: |
22 | while count < 5: | 29 | while count < 5: |
23 | cmd = 'ping -c 1 %s' % self.target.ip | 30 | cmd = 'ping -c 1 %s' % self.target.ip |
@@ -29,6 +36,7 @@ class PingTest(OERuntimeTestCase): | |||
29 | count = 0 | 36 | count = 0 |
30 | sleep(1) | 37 | sleep(1) |
31 | except OEQATimeoutError: | 38 | except OEQATimeoutError: |
39 | run_network_serialdebug(self.target.runner) | ||
32 | self.fail("Ping timeout error for address %s, count %s, output: %s" % (self.target.ip, count, output)) | 40 | self.fail("Ping timeout error for address %s, count %s, output: %s" % (self.target.ip, count, output)) |
33 | msg = ('Expected 5 consecutive, got %d.\n' | 41 | msg = ('Expected 5 consecutive, got %d.\n' |
34 | 'ping output is:\n%s' % (count,output)) | 42 | 'ping output is:\n%s' % (count,output)) |
diff --git a/meta/lib/oeqa/runtime/cases/scp.py b/meta/lib/oeqa/runtime/cases/scp.py index ee97b8ef66..364264369a 100644 --- a/meta/lib/oeqa/runtime/cases/scp.py +++ b/meta/lib/oeqa/runtime/cases/scp.py | |||
@@ -25,7 +25,7 @@ class ScpTest(OERuntimeTestCase): | |||
25 | os.remove(cls.tmp_path) | 25 | os.remove(cls.tmp_path) |
26 | 26 | ||
27 | @OETestDepends(['ssh.SSHTest.test_ssh']) | 27 | @OETestDepends(['ssh.SSHTest.test_ssh']) |
28 | @OEHasPackage(['openssh-scp']) | 28 | @OEHasPackage({'openssh-scp', 'openssh-sftp-server'}) |
29 | def test_scp_file(self): | 29 | def test_scp_file(self): |
30 | dst = '/tmp/test_scp_file' | 30 | dst = '/tmp/test_scp_file' |
31 | 31 | ||
diff --git a/meta/lib/oeqa/runtime/cases/skeletoninit.py b/meta/lib/oeqa/runtime/cases/skeletoninit.py index d0fdcbded9..be7b39a9a3 100644 --- a/meta/lib/oeqa/runtime/cases/skeletoninit.py +++ b/meta/lib/oeqa/runtime/cases/skeletoninit.py | |||
@@ -4,8 +4,7 @@ | |||
4 | # SPDX-License-Identifier: MIT | 4 | # SPDX-License-Identifier: MIT |
5 | # | 5 | # |
6 | 6 | ||
7 | # This test should cover https://bugzilla.yoctoproject.org/tr_show_case.cgi?case_id=284 | 7 | # Image under test must have meta-skeleton layer in bblayers and |
8 | # testcase. Image under test must have meta-skeleton layer in bblayers and | ||
9 | # IMAGE_INSTALL:append = " service" in local.conf | 8 | # IMAGE_INSTALL:append = " service" in local.conf |
10 | from oeqa.runtime.case import OERuntimeTestCase | 9 | from oeqa.runtime.case import OERuntimeTestCase |
11 | from oeqa.core.decorator.depends import OETestDepends | 10 | from oeqa.core.decorator.depends import OETestDepends |
diff --git a/meta/lib/oeqa/runtime/cases/ssh.py b/meta/lib/oeqa/runtime/cases/ssh.py index cdbef59500..b632a29a01 100644 --- a/meta/lib/oeqa/runtime/cases/ssh.py +++ b/meta/lib/oeqa/runtime/cases/ssh.py | |||
@@ -4,7 +4,10 @@ | |||
4 | # SPDX-License-Identifier: MIT | 4 | # SPDX-License-Identifier: MIT |
5 | # | 5 | # |
6 | 6 | ||
7 | from oeqa.runtime.case import OERuntimeTestCase | 7 | import time |
8 | import signal | ||
9 | |||
10 | from oeqa.runtime.case import OERuntimeTestCase, run_network_serialdebug | ||
8 | from oeqa.core.decorator.depends import OETestDepends | 11 | from oeqa.core.decorator.depends import OETestDepends |
9 | from oeqa.runtime.decorator.package import OEHasPackage | 12 | from oeqa.runtime.decorator.package import OEHasPackage |
10 | 13 | ||
@@ -13,12 +16,23 @@ class SSHTest(OERuntimeTestCase): | |||
13 | @OETestDepends(['ping.PingTest.test_ping']) | 16 | @OETestDepends(['ping.PingTest.test_ping']) |
14 | @OEHasPackage(['dropbear', 'openssh-sshd']) | 17 | @OEHasPackage(['dropbear', 'openssh-sshd']) |
15 | def test_ssh(self): | 18 | def test_ssh(self): |
16 | (status, output) = self.target.run('sleep 20', timeout=2) | 19 | for i in range(5): |
17 | msg='run() timed out but return code was zero.' | 20 | status, output = self.target.run("uname -a", timeout=30) |
18 | self.assertNotEqual(status, 0, msg=msg) | 21 | if status == 0: |
19 | (status, output) = self.target.run('uname -a') | 22 | break |
20 | self.assertEqual(status, 0, msg='SSH Test failed: %s' % output) | 23 | elif status == 255 or status == -signal.SIGTERM: |
21 | (status, output) = self.target.run('cat /etc/controllerimage') | 24 | # ssh returns 255 only if a ssh error occurs. This could |
22 | msg = "This isn't the right image - /etc/controllerimage " \ | 25 | # be an issue with "Connection refused" because the port |
23 | "shouldn't be here %s" % output | 26 | # isn't open yet, and this could check explicitly for that |
24 | self.assertEqual(status, 1, msg=msg) | 27 | # here. However, let's keep it simple and just retry for |
28 | # all errors a limited amount of times with a sleep to | ||
29 | # give it time for the port to open. | ||
30 | # We sometimes see -15 (SIGTERM) on slow emulation machines too, likely | ||
31 | # from boot/init not being 100% complete, retry for these too. | ||
32 | time.sleep(5) | ||
33 | continue | ||
34 | else: | ||
35 | run_network_serialdebug(self.target.runner) | ||
36 | self.fail("uname failed with \"%s\" (exit code %s)" % (output, status)) | ||
37 | if status != 0: | ||
38 | self.fail("ssh failed with \"%s\" (exit code %s)" % (output, status)) | ||
diff --git a/meta/lib/oeqa/runtime/cases/stap.py b/meta/lib/oeqa/runtime/cases/stap.py index 3be4162108..6b55e7de50 100644 --- a/meta/lib/oeqa/runtime/cases/stap.py +++ b/meta/lib/oeqa/runtime/cases/stap.py | |||
@@ -21,11 +21,12 @@ class StapTest(OERuntimeTestCase): | |||
21 | status, output = self.target.run(cmd, 900) | 21 | status, output = self.target.run(cmd, 900) |
22 | self.assertEqual(status, 0, msg='\n'.join([cmd, output])) | 22 | self.assertEqual(status, 0, msg='\n'.join([cmd, output])) |
23 | 23 | ||
24 | cmd = 'stap -v -p4 -m stap-hello --disable-cache -DSTP_NO_VERREL_CHECK -e \'probe oneshot { print("Hello, "); println("SystemTap!") }\'' | 24 | cmd = 'stap -v -p4 -m stap_hello --disable-cache -DSTP_NO_VERREL_CHECK -e \'probe oneshot { print("Hello, "); println("SystemTap!") }\'' |
25 | status, output = self.target.run(cmd, 900) | 25 | status, output = self.target.run(cmd, 900) |
26 | self.assertEqual(status, 0, msg='\n'.join([cmd, output])) | 26 | self.assertEqual(status, 0, msg='\n'.join([cmd, output])) |
27 | 27 | ||
28 | cmd = 'staprun -v -R -b1 stap-hello.ko' | 28 | cmd = 'staprun -v -R -b1 stap_hello.ko' |
29 | status, output = self.target.run(cmd, 60) | ||
29 | self.assertEqual(status, 0, msg='\n'.join([cmd, output])) | 30 | self.assertEqual(status, 0, msg='\n'.join([cmd, output])) |
30 | self.assertIn('Hello, SystemTap!', output, msg='\n'.join([cmd, output])) | 31 | self.assertIn('Hello, SystemTap!', output, msg='\n'.join([cmd, output])) |
31 | except: | 32 | except: |
diff --git a/meta/lib/oeqa/runtime/cases/systemd.py b/meta/lib/oeqa/runtime/cases/systemd.py index 5481e1d840..640f28abe9 100644 --- a/meta/lib/oeqa/runtime/cases/systemd.py +++ b/meta/lib/oeqa/runtime/cases/systemd.py | |||
@@ -145,18 +145,29 @@ class SystemdServiceTests(SystemdTest): | |||
145 | Verify that call-stacks generated by systemd-coredump contain symbolicated call-stacks, | 145 | Verify that call-stacks generated by systemd-coredump contain symbolicated call-stacks, |
146 | extracted from the minidebuginfo metadata (.gnu_debugdata elf section). | 146 | extracted from the minidebuginfo metadata (.gnu_debugdata elf section). |
147 | """ | 147 | """ |
148 | t_thread = threading.Thread(target=self.target.run, args=("ulimit -c unlimited && sleep 1000",)) | 148 | # use "env sleep" instead of "sleep" to avoid calling the shell builtin function |
149 | t_thread = threading.Thread(target=self.target.run, args=("ulimit -c unlimited && env sleep 1000",)) | ||
149 | t_thread.start() | 150 | t_thread.start() |
150 | time.sleep(1) | 151 | time.sleep(1) |
151 | 152 | ||
152 | status, output = self.target.run('pidof sleep') | 153 | status, sleep_pid = self.target.run('pidof sleep') |
153 | # cause segfault on purpose | 154 | # cause segfault on purpose |
154 | self.target.run('kill -SEGV %s' % output) | 155 | self.target.run('kill -SEGV %s' % sleep_pid) |
155 | self.assertEqual(status, 0, msg = 'Not able to find process that runs sleep, output : %s' % output) | 156 | self.assertEqual(status, 0, msg = 'Not able to find process that runs sleep, output : %s' % sleep_pid) |
156 | 157 | ||
157 | (status, output) = self.target.run('coredumpctl info') | 158 | # Give some time to systemd-coredump@.service to process the coredump |
159 | for x in range(20): | ||
160 | status, output = self.target.run('coredumpctl list %s' % sleep_pid) | ||
161 | if status == 0: | ||
162 | break | ||
163 | time.sleep(1) | ||
164 | else: | ||
165 | self.fail("Timed out waiting for coredump creation") | ||
166 | |||
167 | (status, output) = self.target.run('coredumpctl info %s' % sleep_pid) | ||
158 | self.assertEqual(status, 0, msg='MiniDebugInfo Test failed: %s' % output) | 168 | self.assertEqual(status, 0, msg='MiniDebugInfo Test failed: %s' % output) |
159 | self.assertEqual('sleep_for_duration (busybox.nosuid' in output, True, msg='Call stack is missing minidebuginfo symbols (functions shown as "n/a"): %s' % output) | 169 | self.assertEqual('sleep_for_duration (busybox.nosuid' in output or 'xnanosleep (sleep.coreutils' in output, |
170 | True, msg='Call stack is missing minidebuginfo symbols (functions shown as "n/a"): %s' % output) | ||
160 | 171 | ||
161 | class SystemdJournalTests(SystemdTest): | 172 | class SystemdJournalTests(SystemdTest): |
162 | 173 | ||
diff --git a/meta/lib/oeqa/runtime/cases/uki.py b/meta/lib/oeqa/runtime/cases/uki.py new file mode 100644 index 0000000000..77bc5b9791 --- /dev/null +++ b/meta/lib/oeqa/runtime/cases/uki.py | |||
@@ -0,0 +1,16 @@ | |||
1 | # SPDX-License-Identifier: MIT | ||
2 | # | ||
3 | |||
4 | from oeqa.runtime.case import OERuntimeTestCase | ||
5 | from oeqa.core.decorator.data import skipIfNotInDataVar | ||
6 | |||
7 | class UkiTest(OERuntimeTestCase): | ||
8 | |||
9 | @skipIfNotInDataVar('IMAGE_CLASSES', 'uki', 'Test case uki is for images which use uki.bbclass') | ||
10 | def test_uki(self): | ||
11 | uki_filename = self.td.get('UKI_FILENAME') | ||
12 | status, output = self.target.run('ls /boot/EFI/Linux/%s' % uki_filename) | ||
13 | self.assertEqual(status, 0, output) | ||
14 | |||
15 | status, output = self.target.run('echo $( cat /sys/firmware/efi/efivars/LoaderEntrySelected-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f ) | grep %s' % uki_filename) | ||
16 | self.assertEqual(status, 0, output) | ||