public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
From: "?ukasz Majewski" <lukma@denx.de>
To: Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: Khem Raj <raj.khem@gmail.com>,
	Patches and discussions about the oe-core layer 
	<openembedded-core@lists.openembedded.org>,
	Adhemerval Zanella <adhemerval.zanella@linaro.org>
Subject: Re: [OE-core] [PATCH 2/2] glibc: ptest: Add support for running glibc test suite with ptest
Date: Tue, 24 Aug 2021 10:42:13 +0200	[thread overview]
Message-ID: <20210824104213.6be82b74@ktm> (raw)
In-Reply-To: <34041d492af033ff34a273e07057ea9c767cabf7.camel@linuxfoundation.org>

[-- Attachment #1: Type: text/plain, Size: 7344 bytes --]

Hi Richard,

> On Tue, 2021-08-24 at 09:36 +0200, ?ukasz Majewski wrote:
> > Hi Khem,
> >   
> > > On Mon, Aug 23, 2021 at 1:09 PM Lukasz Majewski <lukma@denx.de>
> > > wrote:  
> > > > 
> > > > On Mon, 23 Aug 2021 12:52:44 -0700
> > > > Khem Raj <raj.khem@gmail.com> wrote:
> > > >    
> > > > > On Mon, Aug 23, 2021 at 11:24 AM Lukasz Majewski
> > > > > <lukma@denx.de> wrote:
> > > > >    
> > > > > > Hi Khem,
> > > > > >    
> > > > > > > On 8/23/21 8:08 AM, ?ukasz Majewski wrote:    
> > > > > > > > This patch introduces new recipe - namely 'glibc-tests',
> > > > > > > > which builds and installs glibc test suite to OE/Yocto
> > > > > > > > built image.
> > > > > > > > 
> > > > > > > > It reuses code from already available 'glibc-testsuite'
> > > > > > > > recipe, which is run with 'bitbake glibc-testsuite -c
> > > > > > > > check' and uses qemu to execute remotely (via SSH)
> > > > > > > > tests on some emulated machine.
> > > > > > > > 
> > > > > > > > This recipe installs eligible tests on some rootfs
> > > > > > > > image. Afterwards, either all of them or only time
> > > > > > > > related subset, those tests can be executed on the real
> > > > > > > > hardware, to facilitate validation of this platform
> > > > > > > > with for example Y2038 problem compliance.
> > > > > > > > 
> > > > > > > > By default all tests are executed, with 'ptest-runner
> > > > > > > > glibc-tests'. To test only time related subset - one
> > > > > > > > needs to call: cd /usr/lib/glibc-tests/ptest/; rm
> > > > > > > > run-ptest; \ ln -s run-ptest-time run-ptest; cd -;
> > > > > > > > ptest-runner glibc-tests
> > > > > > > > 
> > > > > > > > To facilitate debugging, source files are provided by
> > > > > > > > default with the unstripped debugging symbols. Such
> > > > > > > > approach would reduce the already complex recipe (as it
> > > > > > > > inherits base glibc one), so there is no need to also
> > > > > > > > install *-dbg and *-src packages.    
> > > > > > > 
> > > > > > > 
> > > > > > > does it have to be a separate recipe I wonder if we can
> > > > > > > have it built as part of glibc itself controlled via
> > > > > > > ptest knob    
> > > > > > 
> > > > > > I've followed the glibc-testsuite recipe to provide tests
> > > > > > for ptest. Test creation is similar to it, but doesn't
> > > > > > require QEMU run (tests are executed on the HW).
> > > > > > 
> > > > > > Another rationale was to have some kind of "features"
> > > > > > separation in different file (liked glibc-mtrace), which is
> > > > > > easier to maintain and review.
> > > > > > 
> > > > > > Last but not least - separate recipe (and built binaries)
> > > > > > allow some kind of magic with selection of used test
> > > > > > programs (this may be useful if one would like to have
> > > > > > different sets of tests in different packages)    
> > > > > 
> > > > > That’s seems ok I think the names are quite confusing now not
> > > > > that it was not so much better before but now we have
> > > > > glibc-tests and glibc-testsuites which do same things but in
> > > > > very different way maybe glibc-testsuite should be renamed to
> > > > > something like glibc-tests-crosd or some such    
> > > > 
> > > > I think that glibc-testsuite_2.34.bb shall be renamed to
> > > > glibc-tests-qemu_2.34.bb as it is more descriptive.    
> > > 
> > > is it only runnable in qemu ? I thought we could use a read board
> > > as well with IP address  
> > 
> > It looks like by default the QEMU is used in this recipe. 
> > 
> > This recipe provides custom check-test-wrapper, which can log
> > into remote board via ssh (when TOOLCHAIN_TEST_TARGET = "ssh").
> > 
> > This looks a bit awkward for me, as the goal would be to run built
> > tests on target (exact) HW without the need of SSH.
> > 
> > It is also easier to debug the code with the real HW.  
> 
> I'm a bit worried we're going around in circles with this. We did
> have a different form of tests a while back but I was told those
> didn't work well and they were replaced with the current setup which
> worked with the driver in the glibc source code.

I've looked into the glibc-testing.inc from SHA1:
0a42ae7f7ca8fcebe4630b701e50e2352f9b7c3b

There glibc tests were built and copied on the target via NFS.

> This was done around
> the time we added support for the other toolchain test suites
> (binutils+gcc).

I'm not familiar with the "binutils+gcc" issue, which was solved in the
past. Could you share any reference?

> We ended up with options to use full system qemu or
> user mode qemu emulation depending on the speed of the target (e.g.
> with kvm or not).

From what I see in the recipe - you either run user mode QEMU by
default (at least when I do run it):

NOTE: make PARALLELMFLAGS=-j 8 SHELL=/bin/bash -i
QEMU_SYSROOT=/home/lukma/work/yocto/y2038/build/tmp/work/armv7at2hf-neon-poky-linux-gnueabi/glibc-testsuite/2.34-r0/recipe-sysroot
QEMU_OPTIONS=qemu-arm -r 5.1.0  SSH_HOST=localhost SSH_HOS T_USER=root
SSH_HOST_PORT=2222
test-wrapper=/home/lukma/work/yocto/y2038/build/tmp/work/armv7at2hf-neon-poky-linux-gnueabi/glibc-testsuite/2.34-r0/check-test-wrapper
user check

Or you log to the board via SSH (the 'ssh' mode).

> 
> Has this patchset been run with all the tests in glibc or just a
> subset?

This patch set allows running all tests [*], or (preferably in my use
case) only a time related ones. The latter is to validate Y2038 code,
which testing has two issues:

1. It cannot be tested with QEMU user mode [1]. Instead "linux
timespaces" were suggested, but it lacks support for CLOCK_REALTIME
manipulation for those tests [2].

2. Testing with SSH is possible, but is not as robust as expected (i.e.
imposes SSHD on the target board, and ETH connection).

> 
> I'm always very nervous about having two ways to do similar things.

Technically, I just reuse the glibc-testsuite_2.34.bb to the point
where tests are _only_ built. Then I pack those binaries and install on
the target's rootfs to be run with ptest framework.

Such approach has several advantages:

- No need for SSH (which can hang, as you need sshfs in user space for
  the setup)

- Run on the real HW (and environment) with the same version of glibc
  on the real target.

- Sources and debugging symbols available on the target, so easier GDB
  debugging.

- Using ptest framework to execute tests

- Time related tests are "self contained", so could be executed without
  built data.

At least for Y2038 validation such approach seems more appealing.

> 
> Cheers,
> 
> Richard
> 

Links:
[1] - https://www.mail-archive.com/qemu-discuss@nongnu.org/msg05898.html
[2] -
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg2361284.html

Note:
[*] - some glibc tests rely on the built directory to provide correct
data/environment for execution. Time related tests are (and should be)
self contained, so those could be just executed as binaries.

Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 499 bytes --]

  reply	other threads:[~2021-08-24  8:42 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-23 15:08 [PATCH 1/2] glibc: Exclude common code to build tests to glibc-tests.inc ?ukasz Majewski
2021-08-23 15:08 ` [PATCH 2/2] glibc: ptest: Add support for running glibc test suite with ptest ?ukasz Majewski
2021-08-23 16:17   ` [OE-core] " Khem Raj
2021-08-23 18:24     ` ?ukasz Majewski
2021-08-23 19:52       ` Khem Raj
2021-08-23 20:09         ` ?ukasz Majewski
2021-08-23 20:41           ` Khem Raj
2021-08-24  7:36             ` ?ukasz Majewski
2021-08-24  7:41               ` Richard Purdie
2021-08-24  8:42                 ` ?ukasz Majewski [this message]
2021-08-26 12:27                   ` ?ukasz Majewski
2021-08-26 13:38                     ` Richard Purdie
2021-08-26 14:12                       ` ?ukasz Majewski
2021-08-26 16:25                         ` Richard Purdie
2021-08-27  7:52                       ` Nathan Rossi
2021-08-27  9:20                         ` ?ukasz Majewski
2021-08-27 11:29                           ` Nathan Rossi
2021-08-27 14:19                             ` ?ukasz Majewski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210824104213.6be82b74@ktm \
    --to=lukma@denx.de \
    --cc=adhemerval.zanella@linaro.org \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=raj.khem@gmail.com \
    --cc=richard.purdie@linuxfoundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox