Alexander Kanavin <[email protected]> escreveu no dia sexta,
18/02/2022 à(s) 06:58:

> I like the idea, but gstreamer build-time testing seems like a bit of
> a work in progress. Is there some other meson-based component where
> this can be showcased and enabled in a more simple way?
>

To enable this feature, the user only to sets a variable:
MESON_QEMU_WRAPPER_TEST_ENABLED = "1"

Or in local configuration:
MESON_QEMU_WRAPPER_TEST_ENABLED:pn-systemd-boot = "1"

Unfortunately the qemu user mode can't run successfully all the tests in
most
of the meson components in OE-Core. I have added the results for the
following recipes:

systemd-boot
    Ok:                 821
    Expected Fail:      0
    Fail:               95
    Unexpected Pass:    0
    Skipped:            33
    Timeout:            0

glib-2.0
    Ok:                 197
    Expected Fail:      0
    Fail:               76
    Unexpected Pass:    0
    Skipped:            0
    Timeout:            2

gstreamer1.0
    Ok:                 95
    Expected Fail:      0
    Fail:               10
    Unexpected Pass:    0
    Skipped:            1
    Timeout:            0

Jose


> Alex
>
> On Fri, 18 Feb 2022 at 00:00, Jose Quaresma <[email protected]>
> wrote:
> >
> > This is an exmple of using the native meson test
> >
> > gstreamer1.0-meson-qemuwrapper-test.inc
> > ^ this is receipe part
> >
> > meson-qemuwrapper-helper.sh
> > ^ this is an helper script to skip unsupported tests
> >
> >
> meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstpluginloader-show-the-reason-when-spawning-of-gst.patch
> > ^ this patch helps debugind unsupported tests
> >
> > With EXTRA_OEMESON_TEST = "gst_gstbin" it will only run
> > the gst_gstbin test and the output
> > is the following
> >
> > + meson_do_test
> > + export GST_DEBUG=6
> > + meson test -C
> /build/tmp/work/core2-64-poky-linux/gstreamer1.0/1.20.0-r0/build
> --print-errorlogs gst_gstbin
> >
> > ninja: Entering directory
> `/build/tmp/work/core2-64-poky-linux/gstreamer1.0/1.20.0-r0/build'
> >
> > ninja: no work to do.
> >
> > 1/1 gst_gstbin TIMEOUT        180.12s   killed by signal 15 SIGTERM
> >
> > >>>
> GST_PLUGIN_SCANNER_1_0=/build/tmp/work/core2-64-poky-linux/gstreamer1.0/1.20.0-r0/build/libs/gst/helpers/gst-plugin-scanner
> GST_PLUGIN_LOADING_WHITELIST=gstreamer GST_STATE_IGNORE_ELEMENTS=''
> MESON_EXE_WRAPPER=/build/tmp/work/core2-64-poky-linux/gstreamer1.0/1.20.0-r0/meson-qemuwrapper
> GST_PLUGIN_PATH_1_0=/build/tmp/work/core2-64-poky-linux/gstreamer1.0/1.20.0-r0/build
> MALLOC_PERTURB_=192
> GST_REGISTRY=/build/tmp/work/core2-64-poky-linux/gstreamer1.0/1.20.0-r0/build/tests/check/gst_gstbin.registry
> CK_DEFAULT_TIMEOUT=20 GST_PLUGIN_SYSTEM_PATH_1_0=''
> /build/tmp/work/core2-64-poky-linux/gstreamer1.0/1.20.0-r0/meson-qemuwrapper
> /build/tmp/work/core2-64-poky-linux/gstreamer1.0/1.20.0-r0/build/tests/check/gst_gstbin
> > ――――――――――――――――――――――――――――――――――――― ✀
> ―――――――――――――――――――――――――――――――――――――
> > Listing only the last 100 lines from a long log.
> > 0:00:07.719379569 440069   0x4000025400 DEBUG             GST_STATES
> gstbin.c:2990:gst_bin_change_state_func:<bin0> iterator done
> > 0:00:07.719393717 440069   0x4000061180 LOG              GST_MESSAGE
> gstmessage.c:304:gst_message_new_custom: source fakesink0: creating new
> message 0x400c002100 latency
> > 0:00:07.719413507 440069   0x4000025400 LOG               GST_STATES
> gstelement.c:3282:gst_element_change_state_func:<bin0> default handler
> tries setting state from PLAYING to PAUSED (0023)
> > 0:00:07.719438100 440069   0x4000061180 DEBUG                GST_BUS
> gstbus.c:338:gst_bus_post:<bus0> [msg 0x400c002100] posting on bus latency
> message: 0x400c002100, time 99:99:99.999999999, seq-num 31, element
> 'fakesink0', (NULL)
> > 0:00:07.719441024 440069   0x4000025400 DEBUG             GST_STATES
> gstbin.c:3006:gst_bin_change_state_func:<bin0> we have ASYNC elements
> SUCCESS -> ASYNC
> > 0:00:07.719467032 440069   0x4000025400 DEBUG                    bin
> gstbin.c:2383:gst_bin_sort_iterator_free:<bin0>
> > .
> > .
> > .
> >
> ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
> > Summary of Failures:
> >
> > 1/1 gst_gstbin TIMEOUT        180.12s   killed by signal 15 SIGTERM
> >
> > Ok:                 0
> > Expected Fail:      0
> > Fail:               0
> > Unexpected Pass:    0
> > Skipped:            0
> > Timeout:            1
> >
> > Full log written to
> /build/tmp/work/core2-64-poky-linux/gstreamer1.0/1.20.0-r0/build/meson-logs/testlog.txt
> >
> > + bb_sh_exit_handler
> >
> > Signed-off-by: Jose Quaresma <[email protected]>
> > ---
> >  .../gstreamer1.0-meson-qemuwrapper-test.inc   | 15 ++++++
> >  ...show-the-reason-when-spawning-of-gst.patch | 53 +++++++++++++++++++
> >  .../gstreamer1.0/meson-qemuwrapper-helper.sh  | 15 ++++++
> >  .../gstreamer/gstreamer1.0_1.20.0.bb          |  6 +++
> >  4 files changed, 89 insertions(+)
> >  create mode 100644
> meta/recipes-multimedia/gstreamer/gstreamer1.0-meson-qemuwrapper-test.inc
> >  create mode 100644
> meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstpluginloader-show-the-reason-when-spawning-of-gst.patch
> >  create mode 100644
> meta/recipes-multimedia/gstreamer/gstreamer1.0/meson-qemuwrapper-helper.sh
> >
> > diff --git
> a/meta/recipes-multimedia/gstreamer/gstreamer1.0-meson-qemuwrapper-test.inc
> b/meta/recipes-multimedia/gstreamer/gstreamer1.0-meson-qemuwrapper-test.inc
> > new file mode 100644
> > index 0000000000..c9f4885f82
> > --- /dev/null
> > +++
> b/meta/recipes-multimedia/gstreamer/gstreamer1.0-meson-qemuwrapper-test.inc
> > @@ -0,0 +1,15 @@
> > +SRC_URI +=
> "file://0001-gstpluginloader-show-the-reason-when-spawning-of-gst.patch;striplevel=3"
> > +SRC_URI += "file://meson-qemuwrapper-helper.sh"
> > +
> > +#MESON_QEMU_WRAPPER_HELPER = "${WORKDIR}/meson-qemuwrapper-helper.sh"
> > +
> > +PACKAGECONFIG[tests] = "-Dtests=enabled,-Dtests=disabled"
> > +
> > +# run single test
> > +EXTRA_OEMESON_TEST = "gst_gstbin"
> > +
> > +meson_do_test:prepend() {
> > +    # run the test with the debug mode enabled
> > +    # logs will be placed at build/meson-logs/testlog.txt
> > +    export GST_DEBUG=6
> > +}
> > diff --git
> a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstpluginloader-show-the-reason-when-spawning-of-gst.patch
> b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstpluginloader-show-the-reason-when-spawning-of-gst.patch
> > new file mode 100644
> > index 0000000000..22c8750f5b
> > --- /dev/null
> > +++
> b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstpluginloader-show-the-reason-when-spawning-of-gst.patch
> > @@ -0,0 +1,53 @@
> > +From 8e1de3f84c2e654515b6d6b16783a4a08dfd118d Mon Sep 17 00:00:00 2001
> > +From: Jose Quaresma <[email protected]>
> > +Date: Wed, 8 Dec 2021 22:13:15 +0000
> > +Subject: [PATCH] gstpluginloader: show the reason when spawning of
> > + gst-plugin-scanner fail
> > +
> > +This fix helps in cross compiling when the meson tests runs using a
> qemu wraper
> > +
> > +Part-of: <
> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1701>
> > +
> > +Upstream-Status: Backport [
> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/8e1de3f84c2e654515b6d6b16783a4a08dfd118d
> ]
> > +
> > +Signed-off-by: Jose Quaresma <[email protected]>
> > +---
> > + subprojects/gstreamer/gst/gstpluginloader.c | 14 ++++++++++----
> > + 1 file changed, 10 insertions(+), 4 deletions(-)
> > +
> > +diff --git a/subprojects/gstreamer/gst/gstpluginloader.c
> b/subprojects/gstreamer/gst/gstpluginloader.c
> > +index 10a446fa5e..fb8b45cffa 100644
> > +--- a/subprojects/gstreamer/gst/gstpluginloader.c
> > ++++ b/subprojects/gstreamer/gst/gstpluginloader.c
> > +@@ -413,6 +413,7 @@ gst_plugin_loader_try_helper (GstPluginLoader *
> loader, gchar * location)
> > + {
> > +   char *argv[6] = { NULL, };
> > +   int c = 0;
> > ++  GError *error = NULL;
> > +
> > + #if defined (__APPLE__) && defined (USR_BIN_ARCH_SWITCH)
> > +   if (gst_plugin_loader_use_usr_bin_arch ()) {
> > +@@ -432,11 +433,16 @@ gst_plugin_loader_try_helper (GstPluginLoader *
> loader, gchar * location)
> > +     GST_LOG ("Trying to spawn gst-plugin-scanner helper at %s",
> location);
> > +   }
> > +
> > +-  if (!g_spawn_async_with_pipes (NULL, argv, NULL,
> > +-          G_SPAWN_DO_NOT_REAP_CHILD /* | G_SPAWN_STDERR_TO_DEV_NULL */
> ,
> > +-          NULL, NULL, &loader->child_pid, &loader->fd_w.fd,
> &loader->fd_r.fd,
> > +-          NULL, NULL))
> > ++  g_spawn_async_with_pipes (NULL, argv, NULL,
> > ++      G_SPAWN_DO_NOT_REAP_CHILD /* | G_SPAWN_STDERR_TO_DEV_NULL */ ,
> > ++      NULL, NULL, &loader->child_pid, &loader->fd_w.fd,
> &loader->fd_r.fd,
> > ++      NULL, &error);
> > ++
> > ++  if (error) {
> > ++    GST_ERROR ("Spawning gst-plugin-scanner helper failed: %s",
> error->message);
> > ++    g_clear_error (&error);
> > +     return FALSE;
> > ++  }
> > +
> > +   gst_poll_add_fd (loader->fdset, &loader->fd_w);
> > +   gst_poll_add_fd (loader->fdset, &loader->fd_r);
> > +--
> > +2.35.1
> > +
> > diff --git
> a/meta/recipes-multimedia/gstreamer/gstreamer1.0/meson-qemuwrapper-helper.sh
> b/meta/recipes-multimedia/gstreamer/gstreamer1.0/meson-qemuwrapper-helper.sh
> > new file mode 100644
> > index 0000000000..7f03f79292
> > --- /dev/null
> > +++
> b/meta/recipes-multimedia/gstreamer/gstreamer1.0/meson-qemuwrapper-helper.sh
> > @@ -0,0 +1,15 @@
> > +#!/bin/sh
> > +#set -x
> > +
> > +test="$(basename "$1")"
> > +
> > +# some tests currently fails so there we skipped the already knowns
> > +skipped="$skipped elements_dataurisrc"
> > +skipped="$skipped libs_gstnettimeprovider"
> > +skipped="$skipped gst_gstelement"
> > +skipped="$skipped gst_gstregistry"
> > +for s in $skipped; do
> > +    if [ "$s" = "$test" ]; then
> > +        exit 77
> > +    fi
> > +done
> > diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.0.bb
> b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.0.bb
> > index 243f99fee9..38595b8789 100644
> > --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.0.bb
> > +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.0.bb
> > @@ -70,3 +70,9 @@ FILES:${PN}-dbg += "${datadir}/gdb
> ${datadir}/gstreamer-1.0/gdb"
> >  CVE_PRODUCT = "gstreamer"
> >
> >  PTEST_BUILD_HOST_FILES = ""
> > +
> > +MESON_QEMU_WRAPPER_TEST_ENABLED = "1"
> > +
> > +GST_MESON_TEST = "${@"gstreamer1.0-meson-qemuwrapper-test.inc" if
> d.getVar('MESON_QEMU_WRAPPER_TEST_ENABLED') == '1' else ""}"
> > +
> > +require ${GST_MESON_TEST}
> > --
> > 2.35.1
> >
> >
> > 
> >
>


-- 
Best regards,

José Quaresma
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#161979): 
https://lists.openembedded.org/g/openembedded-core/message/161979
Mute This Topic: https://lists.openembedded.org/mt/89221717/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to