Re: [v3][libgpiod][PATCH 1/1] gpio-tools-test.bats: modify delays in toggle test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 6, 2023 at 5:12 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote:
>
> On Tue, Jun 6, 2023 at 5:11 PM Slater, Joseph <joe.slater@xxxxxxxxxxxxx> wrote:
> >
> > I finally (I hope) got rid of the "sleep" comment.
> >
> > I have not used bats before, but I gather that the bats file will get parsed 160 times since you have 159 tests.  Breaking the file up into pieces might help, but that's only a guess.  For me, the bats tests take about 4 minutes in qemu.
> >
> > Joe
> >
>
> FYI, I've opened an issue[1] on bats-core github as strace output for
> -c -f switches was right after all.
>
> Bart
>
> [1] https://github.com/bats-core/bats-core/issues/733
>

I'm afraid this is just how bats works - I'm getting similar output
when running bats' own test-suite:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ------------------
 94,78   87,937096        2697     32603     14298 wait4
  1,20    1,117514           0   1695481           rt_sigprocmask
  1,09    1,008525           0   1045150        27 read
  0,66    0,608701          36     16741           clone
  0,48    0,441647          11     37725     23464 execve
  0,21    0,199233           0    274617    107718 newfstatat
  0,20    0,182347           1     98627      4962 openat
  0,18    0,165625           0    169950           mmap
  0,15    0,134789           0    184782    162361 ioctl
  0,14    0,129233           3     40735           write
  0,12    0,113985           0    198739      4196 close
  0,10    0,095850           0    139639      3159 fcntl
  0,09    0,086048           0    312173           rt_sigaction
  0,08    0,070505           0     95010     34204 lseek
  0,06    0,053366           0     56400           dup2
  0,06    0,052509           1     51470           mprotect
  0,05    0,045429           7      5704      3457 mkdir

When the tests are running, bats spawns a tree of 6 subprocesses for
every test-case and each parent waits for its child to exit which adds
up and shows up as spending most time in wait4().

Bart

> > > -----Original Message-----
> > > From: Kent Gibson <warthog618@xxxxxxxxx>
> > > Sent: Monday, June 5, 2023 8:43 PM
> > > To: Slater, Joseph <joe.slater@xxxxxxxxxxxxx>
> > > Cc: linux-gpio@xxxxxxxxxxxxxxx; MacLeod, Randy
> > > <Randy.MacLeod@xxxxxxxxxxxxx>
> > > Subject: Re: [v3][libgpiod][PATCH 1/1] gpio-tools-test.bats: modify delays in
> > > toggle test
> > >
> > > On Mon, Jun 05, 2023 at 01:43:35PM -0700, joe.slater@xxxxxxxxxxxxx wrote:
> > > > From: Joe Slater <joe.slater@xxxxxxxxxxxxx>
> > > >
> > > > The test "gpioset: toggle (continuous)" uses fixed delays to test
> > > > toggling values.  This is not reliable, so we switch to looking for
> > > > transitions from one value to another.
> > > >
> > > > We wait for a transition up to 1.5 seconds.
> > > >
> > >
> > > For future reference, the subject line should've been "[libgpiod][PATCH v3]".
> > > The version goes within the [PATCH], and 1/1 is optional unless you have a cover
> > > letter.
> > >
> > > > Signed-off-by: Joe Slater <joe.slater@xxxxxxxxxxxxx>
> > > > ---
> > >
> > > Here you would normally list the changes between revisions.
> > > So I'm not sure what has actually changed since v1.
> > > The loop limit went from 10 to 15?
> > >
> > > >  tools/gpio-tools-test.bats | 24 +++++++++++++++++++-----
> > > >  1 file changed, 19 insertions(+), 5 deletions(-)
> > > >
> > > > diff --git a/tools/gpio-tools-test.bats b/tools/gpio-tools-test.bats
> > > > index c83ca7d..05d7138 100755
> > > > --- a/tools/gpio-tools-test.bats
> > > > +++ b/tools/gpio-tools-test.bats
> > > > @@ -141,6 +141,20 @@ gpiosim_check_value() {
> > > >     [ "$VAL" = "$EXPECTED" ]
> > > >  }
> > > >
> > > > +gpiosim_wait_value() {
> > > > +   local OFFSET=$2
> > > > +   local EXPECTED=$3
> > > > +   local DEVNAME=${GPIOSIM_DEV_NAME[$1]}
> > > > +   local CHIPNAME=${GPIOSIM_CHIP_NAME[$1]}
> > > > +   local
> > > PORT=$GPIOSIM_SYSFS/$DEVNAME/$CHIPNAME/sim_gpio$OFFSET/value
> > > > +
> > > > +   for i in {1..15}; do
> > > > +           [ "$(<$PORT)" = "$EXPECTED" ] && return
> > > > +           sleep 0.1
> > > > +   done
> > > > +   return 1
> > > > +}
> > > > +
> > > >  gpiosim_cleanup() {
> > > >     for CHIP in ${!GPIOSIM_CHIP_NAME[@]}
> > > >     do
> > > > @@ -1567,15 +1581,15 @@ request_release_line() {
> > > >     gpiosim_check_value sim0 4 0
> > > >     gpiosim_check_value sim0 7 0
> > > >
> > > > -   sleep 1
> > > > -
> > > > -   gpiosim_check_value sim0 1 0
> > > > +   # sleeping fixed amounts can be unreliable, so we
> > > > +   # sync to the toggles
> > > > +   #
> > >
> > > You said you would get rid of this comment.
> > >
> > >
> > > The patch works for me, so I'm otherwise fine with it.
> > >
> > > Cheers,
> > > Kent.




[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux