Package: debci

tl;dr:

  Please can you increase (double, say) the timeout for the srd:dgit
  autopkgtests on riscv64.


Problem

src:dgit has over 100 tests, organised by test-dependencies into about
about 30 stanzas.  This has generally been fine and is a mode of use
I anticipated when I designed autopkgtest.  A formal src:dgit test run
under autopkgtest takes under an hour on my amd64 laptop.

The large number of stanzas does mean that the test runner needs to
reset the testbed and install the test-dependencies dozens of times.
On some slow runners, this was being a problem.  I filed
  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1063533
about this (in February 2024).

To work around the problem with Debian's very slow riscv64 runners I
added `Architecture: !riscv64` to the least useful and most
long-running stanzas.  This made things reliable.

However, recently, autopkgtest was changed to always reset the testbed
and reinstall the test dependencies, for every test case:
  
https://tracker.debian.org/news/1775760/accepted-autopkgtest-60-source-into-unstable/

For src:dgit's DEP-8 tests, that represents about a 4x performance
regression.  Test runs that used to take 2-5h on riscv64 now usually
time out after ~8h.

Also, it has almost entirely negated the previous workaround I had for
riscv64.  I had focused on reducing the number of stanzas, since that
would reduce the total number of resets and reinstalls.

This problem doesn't just inconvenience the src:dgit maintainers and
users.  dgit lives at the top of a very large dependency stack.  Right
now it seems like the perl transition may get hung up on this problem.


Possible solutions

1. We could revert the change to autopkgtest.

  I think this would probably be controversial, despite this change
  effectively being a release critical regression for src:dgit.

  (TBH I am disappointed that this change was made despite the
  knowledge, provided in #1063533, that it would probably cause
  serious regressions for at least some use cases, and without any
  kind of coordination such as an MBF for packages with many test
  cases, a proper transition plan, etc.)

  More realistically it might be possible to put something in the test
  metadata.  "Features: ok-to-reuse-testbed-for-multiple-tests" or
  something.  Having the src:dgit test suite declare a new feature is
  an easy low-risk change which would be eminently backportable.

2. It would be possible to re-engineer the src:dgit test suite so that
  all the test cases which share a common set of test dependencies are
  represented in a single stanza in debian/tests/control.

  However, it's not clear that this would actually solve the problem
  because wouldn't want to backport such a change to stable branches.
  So at least some CI runs would probably still be afllicted.

  It would entail significant regression to reporting of failures.
  Right now when a test fails, you know which test case failed because
  that's captured in autopkgtest's structured output.  It's hard to
  make portmanteau test cases have good names in the autopkgtest data,
  and when they fail you'd have to find and eyeball the right bit of
  the output to find out which actual test(s) failed.

  Also, that would be quite an intrusive change.  Right now I am
  juggling an experimental branch and also trying to land an important
  bugfix in testing.  I think trying to do this test suite
  reorganisation at the same time is very risky.  I could do it later.
  But I think we need a short term fix.

3. We could have riscv64 runners which provide better (and more
  consistent) performance.

4. We could increase the timeout.  We'd still end up wasting computing
  resources but at least the tests would pass and not need to be
  repeated.

5. I could mark the vast majority of th cases tests !riscv64, leaving
  only a handful.  The dgit test suite is not designed with this in
  mind, but in practice it has I think never detected any
  arch-specific bugs so that's probably OK?

I think only options 1 (revert in autopkgtest), 4 (increased timeout)
and 5 (do almost no testing on riscv64) are technically feasible in
the short term.  I think the autopkgtest maintainers probably don't
want to revert.

So in the short term, I think the answer is an increased timeout.  I'm
hoping you (the debci team) can do that for me.


Thanks,
Ian.

-- 
Ian Jackson <[email protected]>   These opinions are my own.  

Pronouns: they/he.  If I emailed you from @fyvzl.net or @evade.org.uk,
that is a private address which bypasses my fierce spamfilter.

Reply via email to