summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa
diff options
context:
space:
mode:
authorAdrian Freihofer <adrian.freihofer@gmail.com>2024-02-25 21:47:03 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-02-27 11:38:46 +0000
commitea5a74cc675d104afedc4428c710091a56817e10 (patch)
tree881c277334ea63da6ca7c31f8c0792acd41507e9 /meta/lib/oeqa
parentc82c57621be1447ff2bceb89f232de05b2b6f3a3 (diff)
downloadpoky-ea5a74cc675d104afedc4428c710091a56817e10.tar.gz
oe-selftest devtool: ide-sdk tests
Improve the GDB related tests. Verify GDB finds the correct source files. (From OE-Core rev: 67eed460c0bf18d23f2c9180f195417895acfd55) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa')
-rw-r--r--meta/lib/oeqa/selftest/cases/devtool.py42
1 files changed, 33 insertions, 9 deletions
diff --git a/meta/lib/oeqa/selftest/cases/devtool.py b/meta/lib/oeqa/selftest/cases/devtool.py
index d37848bdef..ecff3a9ebd 100644
--- a/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/meta/lib/oeqa/selftest/cases/devtool.py
@@ -2544,6 +2544,10 @@ class DevtoolIdeSdkTests(DevtoolBase):
2544 self.assertEqual(status, 0, msg="%s failed: %s" % (ptest_cmd, output)) 2544 self.assertEqual(status, 0, msg="%s failed: %s" % (ptest_cmd, output))
2545 self.assertIn("PASS: cpp-example-lib", output) 2545 self.assertIn("PASS: cpp-example-lib", output)
2546 2546
2547 # Verify remote debugging works
2548 self._gdb_cross_debugging(
2549 qemu, recipe_name, example_exe, MAGIC_STRING_ORIG)
2550
2547 # Replace the Magic String in the code, compile and deploy to Qemu 2551 # Replace the Magic String in the code, compile and deploy to Qemu
2548 cpp_example_lib_hpp = os.path.join(tempdir, 'cpp-example-lib.hpp') 2552 cpp_example_lib_hpp = os.path.join(tempdir, 'cpp-example-lib.hpp')
2549 with open(cpp_example_lib_hpp, 'r') as file: 2553 with open(cpp_example_lib_hpp, 'r') as file:
@@ -2565,6 +2569,10 @@ class DevtoolIdeSdkTests(DevtoolBase):
2565 self.assertEqual(status, 0, msg="%s failed: %s" % (ptest_cmd, output)) 2569 self.assertEqual(status, 0, msg="%s failed: %s" % (ptest_cmd, output))
2566 self.assertIn("PASS: cpp-example-lib", output) 2570 self.assertIn("PASS: cpp-example-lib", output)
2567 2571
2572 # Verify remote debugging works wit the modified magic string
2573 self._gdb_cross_debugging(
2574 qemu, recipe_name, example_exe, MAGIC_STRING_NEW)
2575
2568 def _gdb_cross(self): 2576 def _gdb_cross(self):
2569 """Verify gdb-cross is provided by devtool ide-sdk""" 2577 """Verify gdb-cross is provided by devtool ide-sdk"""
2570 target_arch = self.td["TARGET_ARCH"] 2578 target_arch = self.td["TARGET_ARCH"]
@@ -2578,13 +2586,22 @@ class DevtoolIdeSdkTests(DevtoolBase):
2578 self.assertEqual(r.status, 0) 2586 self.assertEqual(r.status, 0)
2579 self.assertIn("GNU gdb", r.output) 2587 self.assertIn("GNU gdb", r.output)
2580 2588
2581 def _gdb_cross_debugging(self, qemu, recipe_name, example_exe): 2589 def _gdb_cross_debugging(self, qemu, recipe_name, example_exe, magic_string):
2582 """Verify gdb-cross is working 2590 """Verify gdb-cross is working
2583 2591
2584 Test remote debugging: 2592 Test remote debugging:
2585 break main 2593 break main
2586 run 2594 run
2587 continue 2595 continue
2596 break CppExample::print_json()
2597 continue
2598 print CppExample::test_string.compare("cpp-example-lib Magic: 123456789")
2599 $1 = 0
2600 print CppExample::test_string.compare("cpp-example-lib Magic: 123456789aaa")
2601 $2 = -3
2602 list cpp-example-lib.hpp:13,13
2603 13 inline static const std::string test_string = "cpp-example-lib Magic: 123456789";
2604 continue
2588 """ 2605 """
2589 sshargs = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' 2606 sshargs = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
2590 gdbserver_script = os.path.join(self._workspace_scripts_dir( 2607 gdbserver_script = os.path.join(self._workspace_scripts_dir(
@@ -2609,10 +2626,21 @@ class DevtoolIdeSdkTests(DevtoolBase):
2609 self.assertIn("gdbserver", r.output) 2626 self.assertIn("gdbserver", r.output)
2610 2627
2611 # Test remote debugging works 2628 # Test remote debugging works
2612 r = runCmd( 2629 gdb_batch_cmd = " --batch -ex 'break main' -ex 'run'"
2613 gdb_script + " --batch -ex 'break main' --ex 'run' -ex 'continue'") 2630 gdb_batch_cmd += " -ex 'break CppExample::print_json()' -ex 'continue'"
2631 gdb_batch_cmd += " -ex 'print CppExample::test_string.compare(\"cpp-example-lib %s\")'" % magic_string
2632 gdb_batch_cmd += " -ex 'print CppExample::test_string.compare(\"cpp-example-lib %saaa\")'" % magic_string
2633 gdb_batch_cmd += " -ex 'list cpp-example-lib.hpp:13,13'"
2634 gdb_batch_cmd += " -ex 'continue'"
2635 r = runCmd(gdb_script + gdb_batch_cmd)
2636 self.logger.debug("%s %s returned: %s", gdb_script,
2637 gdb_batch_cmd, r.output)
2614 self.assertEqual(r.status, 0) 2638 self.assertEqual(r.status, 0)
2615 self.assertIn("Breakpoint 1, main", r.output) 2639 self.assertIn("Breakpoint 1, main", r.output)
2640 self.assertIn("$1 = 0", r.output) # test.string.compare equal
2641 self.assertIn("$2 = -3", r.output) # test.string.compare longer
2642 self.assertIn(
2643 'inline static const std::string test_string = "cpp-example-lib %s";' % magic_string, r.output)
2616 self.assertIn("exited normally", r.output) 2644 self.assertIn("exited normally", r.output)
2617 2645
2618 # Stop the gdbserver 2646 # Stop the gdbserver
@@ -2689,14 +2717,12 @@ class DevtoolIdeSdkTests(DevtoolBase):
2689 bitbake_sdk_cmd = 'devtool ide-sdk %s %s -t root@%s -c --ide=none' % ( 2717 bitbake_sdk_cmd = 'devtool ide-sdk %s %s -t root@%s -c --ide=none' % (
2690 recipe_name, testimage, qemu.ip) 2718 recipe_name, testimage, qemu.ip)
2691 runCmd(bitbake_sdk_cmd) 2719 runCmd(bitbake_sdk_cmd)
2720 self._gdb_cross()
2692 self._verify_cmake_preset(tempdir) 2721 self._verify_cmake_preset(tempdir)
2693 self._devtool_ide_sdk_qemu(tempdir, qemu, recipe_name, example_exe) 2722 self._devtool_ide_sdk_qemu(tempdir, qemu, recipe_name, example_exe)
2694 # Verify the oe-scripts sym-link is valid 2723 # Verify the oe-scripts sym-link is valid
2695 self.assertEqual(self._workspace_scripts_dir( 2724 self.assertEqual(self._workspace_scripts_dir(
2696 recipe_name), self._sources_scripts_dir(tempdir)) 2725 recipe_name), self._sources_scripts_dir(tempdir))
2697 # Verify GDB is working after devtool ide-sdk
2698 self._gdb_cross()
2699 self._gdb_cross_debugging(qemu, recipe_name, example_exe)
2700 2726
2701 # meson-example recipe 2727 # meson-example recipe
2702 recipe_name = "meson-example" 2728 recipe_name = "meson-example"
@@ -2707,13 +2733,11 @@ class DevtoolIdeSdkTests(DevtoolBase):
2707 bitbake_sdk_cmd = 'devtool ide-sdk %s %s -t root@%s -c --ide=none' % ( 2733 bitbake_sdk_cmd = 'devtool ide-sdk %s %s -t root@%s -c --ide=none' % (
2708 recipe_name, testimage, qemu.ip) 2734 recipe_name, testimage, qemu.ip)
2709 runCmd(bitbake_sdk_cmd) 2735 runCmd(bitbake_sdk_cmd)
2736 self._gdb_cross()
2710 self._devtool_ide_sdk_qemu(tempdir, qemu, recipe_name, example_exe) 2737 self._devtool_ide_sdk_qemu(tempdir, qemu, recipe_name, example_exe)
2711 # Verify the oe-scripts sym-link is valid 2738 # Verify the oe-scripts sym-link is valid
2712 self.assertEqual(self._workspace_scripts_dir( 2739 self.assertEqual(self._workspace_scripts_dir(
2713 recipe_name), self._sources_scripts_dir(tempdir)) 2740 recipe_name), self._sources_scripts_dir(tempdir))
2714 # Verify GDB is working after devtool ide-sdk
2715 self._gdb_cross()
2716 self._gdb_cross_debugging(qemu, recipe_name, example_exe)
2717 2741
2718 def test_devtool_ide_sdk_code_cmake(self): 2742 def test_devtool_ide_sdk_code_cmake(self):
2719 """Verify a cmake recipe works with ide=code mode""" 2743 """Verify a cmake recipe works with ide=code mode"""