[pytest-dev] pytest-xdist-1.11: restarting crash nodes, fixture cache fix

Anatoly Bubenkov bubenkoff at gmail.com
Thu Sep 18 21:00:36 CEST 2014


On 18 September 2014 20:56, holger krekel <holger at merlinux.eu> wrote:

> On Thu, Sep 18, 2014 at 20:51 +0200, Anatoly Bubenkov wrote:
> > hmm, but that grouping is not important for session scoped fixtures,
> right?
> > i mean, what's the sense of tearing down the session-scoped fixture, even
> > if most likely it will be not used by any test, earlier than the end of
> the
> > session?
>
> Parametrized session-scoped fixtures, for example, may depend on being torn
> down, not all be active at the same time.  In any case, it's part of a
> general scheme to teardown fixtures as early as possible, not as late as
> possible.  We can discuss/play with that and introduce an option which
> prohibits it, possibly.
>
> ok i see now a bit more, so, the solution, proposed in an article is still
actual, because there's no strict guarantee
but the reasoning was described in a wrong way - i'll fix that, thanks!


> best,
> holger
>
> P.S: i bet you are using gmail, right? (because of your top-level
> posting style -- i often prefer inlined comments because it allows to
> get statements in context).
>
i liked that way earlier also, not anymore :)
but in pytest-dev at least i'll try to keep this style, np


>
> > it should be ok for that fixture to live till the end of the session, and
> > then any randomization should not matter
> > i agree that for modules and classes grouping is nice, though
> >
> >
> > On 18 September 2014 20:46, holger krekel <holger at merlinux.eu> wrote:
> >
> > > On Thu, Sep 18, 2014 at 20:35 +0200, Anatoly Bubenkov wrote:
> > > > yes per testing subprocess, as i've already asked in the comments
> section
> > > > on the paylogic developer portal, im waiting for your confirmation
> that's
> > > > NOT by design that we were getting multiple test sessions per test
> > > > subprocess
> > > > so i'll need to fix the article then
> > >
> > > yes, it's not by design.  It was more an implementation incident.
> > >
> > > > BTW: now im reading the code again, it looks like even with
> randomization
> > > > plugin it should not matter?
> > >
> > > pytest relies on the following property of test collections: if a test
> > > at index I1 uses a session-scoped fixture X and at an index I2>I1 X is
> not
> > > used than for any I3>I2 X will not be used, either.  If this is not
> > > true for any given testing process then the fixture will be torn down
> > > and setup again (at I3).  pytest groups tests so in general this
> property
> > > is true (see here:
> > >
> > >
> https://pytest.org/latest/fixture.html#automatic-grouping-of-tests-by-fixture-instances
> > > for how it groups).
> > >
> > > If you have multiple parametrized session-scoped fixtures (not very
> common)
> > > or item randomization the above property is likely not true but that
> > > already
> > > is true then for single-process execution.
> > >
> > > best,
> > > holger
> > >
> > > > On 18 September 2014 20:31, holger krekel <holger at merlinux.eu>
> wrote:
> > > >
> > > > > On Thu, Sep 18, 2014 at 20:24 +0200, Anatoly Bubenkov wrote:
> > > > > > so, this is again guaranteed that there will be only one session
> per
> > > test
> > > > > > run on any test slave?
> > > > >
> > > > > there is always one session object only but i think you are asking
> if a
> > > > > session-scoped fixture will only be instantiated once per testing
> > > > > subprocess, right?  In general this should be the case if i am not
> > > missing
> > > > > something (when you use a test randomization plugin, then it's
> probably
> > > > > not the case).
> > > > >
> > > > > best,
> > > > > holger
> > > > >
> > > > > > On 18 September 2014 20:23, Anatoly Bubenkov <
> bubenkoff at gmail.com>
> > > > > wrote:
> > > > > >
> > > > > > > Great!
> > > > > > > thanks a lot everyone involved
> > > > > > >
> > > > > > > On 18 September 2014 20:21, holger krekel <holger at merlinux.eu>
> > > wrote:
> > > > > > >
> > > > > > >>
> > > > > > >> I just released pytest-xdist-1.11, the distributed testing
> plugin
> > > for
> > > > > > >> pytest.
> > > > > > >> It introduces automatic restarting of crashed nodes, courtesy
> of a
> > > > > > >> complete PR from Floris Bruynooghe.  This also works well
> together
> > > > > with
> > > > > > >> pytest-timeout by the same author: When one or more test
> functions
> > > > > hang
> > > > > > >> or crash, the overall test run will still complete and report
> > > about
> > > > > the
> > > > > > >> incidents.  See the changelog below for more changes and the
> pypi
> > > > > > >> project page for what pytest-xdist offers in general:
> > > > > > >>
> > > > > > >>     https://pypi.python.org/pypi/pytest-xdist/
> > > > > > >>
> > > > > > >> Thanks also to an undisclosed company who partly funded the
> work
> > > > > > >> and to Andreas Pelme for contributing analysis of a fixture
> > > caching
> > > > > > >> failure including a test.
> > > > > > >>
> > > > > > >> best,
> > > > > > >> Holger Krekel
> > > > > > >>
> > > > > > >>
> > > > > > >> 1.11
> > > > > > >> -------------------------
> > > > > > >>
> > > > > > >> - fix pytest/xdist issue485 (also depends on py-1.4.22):
> > > > > > >>   attach stdout/stderr on --boxed processes that die.
> > > > > > >>
> > > > > > >> - fix pytest/xdist issue503: make sure that a node has usually
> > > > > > >>   two items to execute to avoid scoped fixtures to be torn
> down
> > > > > > >>   pre-maturely (fixture teardown/setup is "nextitem"
> sensitive).
> > > > > > >>   Thanks to Andreas Pelme for bug analysis and failing test.
> > > > > > >>
> > > > > > >> - restart crashed nodes by internally refactoring setup
> handling
> > > > > > >>   of nodes.  Also includes better code documentation.
> > > > > > >>   Many thanks to Floris Bruynooghe for the complete PR.
> > > > > > >>
> > > > > > >> _______________________________________________
> > > > > > >> Pytest-dev mailing list
> > > > > > >> Pytest-dev at python.org
> > > > > > >> https://mail.python.org/mailman/listinfo/pytest-dev
> > > > > > >>
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Anatoly Bubenkov
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Anatoly Bubenkov
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Anatoly Bubenkov
> > >
> >
> >
> >
> > --
> > Anatoly Bubenkov
>



-- 
Anatoly Bubenkov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pytest-dev/attachments/20140918/fd8d1f65/attachment-0001.html>


More information about the Pytest-dev mailing list