Source: pytest-mpi
Version: 0.6-9
Severity: serious
User: [email protected]
Usertags: flaky

Dear maintainer(s),

I looked at the results of the autopkgtest of your package because it was marked as regression for setuptools. I noticed that it regularly fails. I scheduled 5 tests on i386 and it failed 4 times [1]. It seems the test has an internal timeout (great), but it seems to short for our infrastructure [2].

Because the unstable-to-testing migration software now blocks on
regressions in testing, flaky tests, i.e. tests that flip between
passing and failing without changes to the list of installed packages,
are causing people unrelated to your package to spend time on these
tests.

Don't hesitate to reach out if you need help and some more information
from our infrastructure.

Paul

[1] https://ci.debian.net/packages/p/pytest-mpi/testing/i386/

[2] https://ci.debian.net/packages/p/pytest-mpi/testing/i386/77422587/

734s =================================== FAILURES =================================== 734s _______________________________ test_mpi_tmpdir ________________________________
734s
734s self = <Popen: returncode: -9 args: ('mpirun', '-n', '2', '/usr/bin/python3.14', '-...>
734s timeout = 60
734s
734s     def wait(self, timeout=None):
734s """Wait for child process to terminate; returns self.returncode."""
734s         if timeout is not None:
734s             endtime = _time() + timeout
734s         try:
734s >           return self._wait(timeout=timeout)
734s                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
734s
734s /usr/lib/python3.14/subprocess.py:1279:
734s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
734s
734s self = <Popen: returncode: -9 args: ('mpirun', '-n', '2', '/usr/bin/python3.14', '-...>
734s timeout = 60
734s
734s     def _wait(self, timeout):
734s         """Internal implementation of wait() on POSIX."""
734s         if self.returncode is not None:
734s             return self.returncode
734s
734s         if timeout is not None:
734s             endtime = _time() + timeout
734s # Enter a busy loop if we have a timeout. This busy loop was
734s             # cribbed from Lib/threading.py in Thread.wait() at r71065.
734s             delay = 0.0005 # 500 us -> initial delay of 1 ms
734s             while True:
734s                 if self._waitpid_lock.acquire(False):
734s                     try:
734s                         if self.returncode is not None:
734s                             break  # Another thread waited.
734s                         (pid, sts) = self._try_wait(os.WNOHANG)
734s                         assert pid == self.pid or pid == 0
734s                         if pid == self.pid:
734s                             self._handle_exitstatus(sts)
734s                             break
734s                     finally:
734s                         self._waitpid_lock.release()
734s                 remaining = self._remaining_time(endtime)
734s                 if remaining <= 0:
734s >                   raise TimeoutExpired(self.args, timeout)
734s E subprocess.TimeoutExpired: Command '('mpirun', '-n', '2', '/usr/bin/python3.14', '-mpytest', '--basetemp=/tmp/pytest-of-test/pytest-0/test_mpi_tmpdir0/runpytest-0', '--with-mpi')' timed out after 60 seconds
734s
734s /usr/lib/python3.14/subprocess.py:2076: TimeoutExpired
734s
734s During handling of the above exception, another exception occurred:
734s
734s mpi_testdir = <conftest.MPITestdir object at 0xf6110a80>, has_mpi4py = True
734s
734s     def test_mpi_tmpdir(mpi_testdir, has_mpi4py):
734s         mpi_testdir.makepyfile(MPI_TMPDIR_TEST_CODE)
734s
734s >       result = mpi_testdir.runpytest("--with-mpi", timeout=None)
734s                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
734s
734s /tmp/autopkgtest.jIYgeP/autopkgtest_tmp/tests/test_fixtures.py:67:
734s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 734s /tmp/autopkgtest.jIYgeP/autopkgtest_tmp/tests/conftest.py:72: in runpytest
734s     return self._run_pytester(*args, **kwargs)
734s            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
734s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
734s
734s self = <conftest.MPITestdir object at 0xf6110a80>, timeout = 60, mpi_procs = 2
734s max_retries = 5
734s args = ('mpirun', '-n', '2', '/usr/bin/python3.14', '-mpytest', '--basetemp=/tmp/pytest-of-test/pytest-0/test_mpi_tmpdir0/runpytest-0', ...)
734s
734s def _run_pytester(self, *args, timeout=None, mpi_procs=2, max_retries=5):
734s         retries = 0
734s         p = _to_pathlib(py.path.local.make_numbered_dir(
734s             prefix="runpytest-", keep=None,
734s             rootdir=_to_py_path(self._pytester.path)
734s         ))
734s         args = ("--basetemp=%s" % p,) + args
734s plugins = [x for x in self._pytester.plugins if isinstance(x, str)]
734s         if plugins:
734s             args = ("-p", plugins[0]) + args
734s         args = MPI_ARGS + (str(mpi_procs),) + PYTEST_ARGS + args
734s         if timeout is None:
734s             timeout = DEFAULT_TIMEOUT
734s         while retries < max_retries:
734s             try:
734s >               return self._pytester.run(*args, timeout=timeout)
734s                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
734s E _pytest.pytester.Pytester.TimeoutExpired: 60 second timeout expired running: ('mpirun', '-n', '2', '/usr/bin/python3.14', '-mpytest', '--basetemp=/tmp/pytest-of-test/pytest-0/test_mpi_tmpdir0/runpytest-0', '--with-mpi')
734s
734s /tmp/autopkgtest.jIYgeP/autopkgtest_tmp/tests/conftest.py:111: TimeoutExpired

Reply via email to