summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Jeanson <mjeanson@efficios.com>2025-08-14 17:49:50 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-08-19 11:48:50 +0100
commit975fd7de311f70758fa9970a0452ae35341d23c7 (patch)
treeae499e00d39f00308df44907d923f6df21f9e4bf
parente8f302c927cf68903cd764cd2ec4653920c35244 (diff)
downloadpoky-975fd7de311f70758fa9970a0452ae35341d23c7.tar.gz
babeltrace2: Fix python bindings ptests
The python bindings ptests weren't functional. This patch: * Adds a patch to allow the tests to be executed on target standalone * Sets a variable to allow the right install path to be passed to setup.py * Sets the right paths in the ptest runner script for the python modules * Installs the missing data needed to run the tests Base patch was written by Michael Jeanson, RP then tweaked wording and formatting and added config to complete the work on all arches. (From OE-Core rev: 459ca12493a69402c1a0eaa367d8122c3e8c6acc) Signed-off-by: Michael Jeanson <mjeanson@efficios.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-kernel/lttng/babeltrace2/external-python-tests.patch126
-rwxr-xr-xmeta/recipes-kernel/lttng/babeltrace2/run-ptest3
-rw-r--r--meta/recipes-kernel/lttng/babeltrace2_2.1.1.bb7
3 files changed, 134 insertions, 2 deletions
diff --git a/meta/recipes-kernel/lttng/babeltrace2/external-python-tests.patch b/meta/recipes-kernel/lttng/babeltrace2/external-python-tests.patch
new file mode 100644
index 0000000000..960b33d959
--- /dev/null
+++ b/meta/recipes-kernel/lttng/babeltrace2/external-python-tests.patch
@@ -0,0 +1,126 @@
1From d2f528aa09a9001e63710470f6b700d122494961 Mon Sep 17 00:00:00 2001
2From: Michael Jeanson <mjeanson@efficios.com>
3Date: Thu, 14 Aug 2025 12:27:16 -0400
4Subject: [PATCH babeltrace] bindings/python: Allow tests to be run externally
5
6Upstream doesn't officially support running their tests externally. The python
7bindings need some tweaks to work in this configuration.
8
9The patch was created by Michael Jeanson <mjeanson@efficios.com> and is under
10discussion with upstream to see if there is a way to support OE's ue case.
11
12Upstream-Status: Inappropriate [oe specific]
13
14Change-Id: I89555a3fbd821baa7088acc154e81665102286b8
15---
16 .../python/bt2/test_component_descriptor.py | 2 +-
17 tests/bindings/python/bt2/test_graph.py | 2 +-
18 tests/bindings/python/bt2/test_plugin.py | 10 +-
19 .../python/bt2/test_query_executor.py | 2 +-
20 tests/utils/utils.sh | 2 +-
21 6 files changed, 117 insertions(+), 9 deletions(-)
22 create mode 100644 tests/0001-wip-tests-yocto.patch
23
24diff --git a/tests/bindings/python/bt2/test_component_descriptor.py b/tests/bindings/python/bt2/test_component_descriptor.py
25index dcad514eb..49a3c054d 100644
26--- a/tests/bindings/python/bt2/test_component_descriptor.py
27+++ b/tests/bindings/python/bt2/test_component_descriptor.py
28@@ -19,7 +19,7 @@ class ComponentDescriptorTestCase(unittest.TestCase):
29 self._comp_descr = bt2.ComponentDescriptor(_DummySink, {"zoom": -23}, self._obj)
30
31 def _get_comp_cls_from_plugin(self):
32- plugin = bt2.find_plugin("text", find_in_user_dir=False, find_in_sys_dir=False)
33+ plugin = bt2.find_plugin("text", find_in_user_dir=False, find_in_sys_dir=True)
34 assert plugin is not None
35 cc = plugin.source_component_classes["dmesg"]
36 assert cc is not None
37diff --git a/tests/bindings/python/bt2/test_graph.py b/tests/bindings/python/bt2/test_graph.py
38index 9661667a9..7fe247bd9 100644
39--- a/tests/bindings/python/bt2/test_graph.py
40+++ b/tests/bindings/python/bt2/test_graph.py
41@@ -113,7 +113,7 @@ class GraphTestCase(unittest.TestCase):
42 del comp_obj
43
44 def test_add_component_obj_non_python_comp_cls(self):
45- plugin = bt2.find_plugin("text", find_in_user_dir=False, find_in_sys_dir=False)
46+ plugin = bt2.find_plugin("text", find_in_user_dir=False, find_in_sys_dir=True)
47 assert plugin is not None
48 cc = plugin.source_component_classes["dmesg"]
49 assert cc is not None
50diff --git a/tests/bindings/python/bt2/test_plugin.py b/tests/bindings/python/bt2/test_plugin.py
51index 0d7a9e775..39451f93a 100644
52--- a/tests/bindings/python/bt2/test_plugin.py
53+++ b/tests/bindings/python/bt2/test_plugin.py
54@@ -41,7 +41,7 @@ class FindPluginsTestCase(unittest.TestCase):
55 )
56
57 def test_find_none_existing_dir(self):
58- plugins = bt2.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH, recurse=False)
59+ plugins = bt2.find_plugins_in_path(os.environ["BT_TESTS_BUILDDIR"], recurse=False)
60 self.assertIsNone(plugins)
61
62 def test_find_dir(self):
63@@ -53,7 +53,7 @@ class FindPluginsTestCase(unittest.TestCase):
64 os.environ["BT_TESTS_OS_TYPE"], "so"
65 )
66 plugin_name = "babeltrace-plugin-utils.{}".format(extension)
67- path = os.path.join(_TEST_PLUGIN_PLUGINS_PATH, "utils", ".libs", plugin_name)
68+ path = os.path.join(_TEST_PLUGIN_PLUGINS_PATH, plugin_name)
69 pset = bt2.find_plugins_in_path(path)
70 self.assertTrue(len(pset) == 1)
71
72@@ -66,14 +66,14 @@ class FindPluginTestCase(unittest.TestCase):
73 self.assertIsNone(plugin)
74
75 def test_find_existing(self):
76- plugin = bt2.find_plugin("ctf", find_in_user_dir=False, find_in_sys_dir=False)
77+ plugin = bt2.find_plugin("ctf", find_in_user_dir=False, find_in_sys_dir=True)
78 self.assertIsNotNone(plugin)
79
80
81 class PluginTestCase(unittest.TestCase):
82 def setUp(self):
83 self._plugin = bt2.find_plugin(
84- "ctf", find_in_user_dir=False, find_in_sys_dir=False
85+ "ctf", find_in_user_dir=False, find_in_sys_dir=True
86 )
87
88 def tearDown(self):
89@@ -125,7 +125,7 @@ class PluginTestCase(unittest.TestCase):
90 self.assertEqual(plugins["lttng-live"].name, "lttng-live")
91
92 def test_filter_comp_classes_len(self):
93- plugin = bt2.find_plugin("utils", find_in_user_dir=False, find_in_sys_dir=False)
94+ plugin = bt2.find_plugin("utils", find_in_user_dir=False, find_in_sys_dir=True)
95 self.assertEqual(len(plugin.filter_component_classes), 2)
96
97 def test_sink_comp_classes_len(self):
98diff --git a/tests/bindings/python/bt2/test_query_executor.py b/tests/bindings/python/bt2/test_query_executor.py
99index 099457197..9bbfd417a 100644
100--- a/tests/bindings/python/bt2/test_query_executor.py
101+++ b/tests/bindings/python/bt2/test_query_executor.py
102@@ -129,7 +129,7 @@ class QueryExecutorTestCase(unittest.TestCase):
103 del query_method_obj
104
105 def test_query_with_method_obj_non_python_comp_cls(self):
106- plugin = bt2.find_plugin("text", find_in_user_dir=False, find_in_sys_dir=False)
107+ plugin = bt2.find_plugin("text", find_in_user_dir=False, find_in_sys_dir=True)
108 assert plugin is not None
109 cc = plugin.source_component_classes["dmesg"]
110 assert cc is not None
111diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh
112index 28db595d1..05b87f64e 100644
113--- a/tests/utils/utils.sh
114+++ b/tests/utils/utils.sh
115@@ -143,7 +143,7 @@ export BT_TESTS_BT2_BIN
116 # bt_run_in_py_env() to use it.
117 #
118 # TODO: Remove when `tests/bindings/python/bt2/test_plugin.py` is fixed.
119-_bt_tests_plugins_path=$BT_TESTS_BUILDDIR/../src/plugins
120+_bt_tests_plugins_path=/usr/lib/babeltrace2/plugins
121
122 # Colon-separated list of project plugin paths, if not set
123 _bt_tests_set_var_def BT_TESTS_BABELTRACE_PLUGIN_PATH \
124--
1252.47.2
126
diff --git a/meta/recipes-kernel/lttng/babeltrace2/run-ptest b/meta/recipes-kernel/lttng/babeltrace2/run-ptest
index a0bf33b75d..55397c2dd6 100755
--- a/meta/recipes-kernel/lttng/babeltrace2/run-ptest
+++ b/meta/recipes-kernel/lttng/babeltrace2/run-ptest
@@ -6,6 +6,9 @@
6# test plan to raise ERRORs; this is just noise. 6# test plan to raise ERRORs; this is just noise.
7makeargs="LOG_DRIVER_FLAGS=--ignore-exit abs_top_srcdir=$PWD abs_top_builddir=$PWD" 7makeargs="LOG_DRIVER_FLAGS=--ignore-exit abs_top_srcdir=$PWD abs_top_builddir=$PWD"
8 8
9declare -x BT_TESTS_BABELTRACE_PLUGIN_PATH="/usr/lib/babeltrace2/ptest/tests/utils/python"
10declare -x BT_TESTS_PROVIDER_DIR="/usr/lib/babeltrace2/plugin-providers"
11
9exec 2> error.log 12exec 2> error.log
10make -C tests -k -s $makeargs $target 13make -C tests -k -s $makeargs $target
11exitcode=$? 14exitcode=$?
diff --git a/meta/recipes-kernel/lttng/babeltrace2_2.1.1.bb b/meta/recipes-kernel/lttng/babeltrace2_2.1.1.bb
index 88f589eafb..52768f6ce3 100644
--- a/meta/recipes-kernel/lttng/babeltrace2_2.1.1.bb
+++ b/meta/recipes-kernel/lttng/babeltrace2_2.1.1.bb
@@ -13,6 +13,7 @@ SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.1;protocol=http
13 file://0001-tests-fix-test-applications-in-cpp-common.patch \ 13 file://0001-tests-fix-test-applications-in-cpp-common.patch \
14 file://0001-tests-set-the-correct-plugin-directory.patch \ 14 file://0001-tests-set-the-correct-plugin-directory.patch \
15 file://0001-Make-bt_field_blob_get_length-return-size_t-instead-.patch \ 15 file://0001-Make-bt_field_blob_get_length-return-size_t-instead-.patch \
16 file://external-python-tests.patch \
16 " 17 "
17SRCREV = "7f2f8cd6dac497cbb466efb31219b531c62013f5" 18SRCREV = "7f2f8cd6dac497cbb466efb31219b531c62013f5"
18UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>2(\.\d+)+)$" 19UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>2(\.\d+)+)$"
@@ -21,6 +22,8 @@ inherit autotools pkgconfig ptest python3targetconfig
21 22
22EXTRA_OECONF = "--disable-debug-info --disable-Werror --enable-python-plugins --enable-python-bindings" 23EXTRA_OECONF = "--disable-debug-info --disable-Werror --enable-python-plugins --enable-python-bindings"
23 24
25export DISTSETUPOPTS = " --install-lib=${PYTHON_SITEPACKAGES_DIR}"
26
24PACKAGECONFIG ??= "manpages" 27PACKAGECONFIG ??= "manpages"
25PACKAGECONFIG[manpages] = ", --disable-man-pages, asciidoc-native xmlto-native" 28PACKAGECONFIG[manpages] = ", --disable-man-pages, asciidoc-native xmlto-native"
26 29
@@ -67,8 +70,8 @@ do_install_ptest () {
67 find "${S}/tests/$d" -maxdepth 1 -name *.json \ 70 find "${S}/tests/$d" -maxdepth 1 -name *.json \
68 -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \; 71 -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
69 done 72 done
70 install -d "${D}${PTEST_PATH}/tests/data/ctf-traces/" 73 install -d "${D}${PTEST_PATH}/tests/data/"
71 cp -a ${S}/tests/data/ctf-traces/* ${D}${PTEST_PATH}/tests/data/ctf-traces/ 74 cp -a ${S}/tests/data/* ${D}${PTEST_PATH}/tests/data/
72 75
73 # Copy the tests directory tree and the executables and 76 # Copy the tests directory tree and the executables and
74 # Makefiles found within. 77 # Makefiles found within.