#27301: Better handling of errors that are not pickleable when testing in
parallel
----------------------------------+----------------------------------------
Reporter: Adam Wróbel | Owner: Tim Graham
Type: Uncategorized | Status: assigned
Component: Testing | Version: 1.10
framework |
Severity: Normal | Keywords: testrunner parallel pickle
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------+----------------------------------------
When running test in parallel the tests results are communicated between
processes in serialized form. Unfortunately not all test errors are
serializable using `pickle` module.
Django currently detects errors that fail `pickle.dumps`, reports them to
`STDERR` and raises exception that interrupts test runner.
This ticket has two parts:
The first is a minor enhancement. In addition to detecting `pickle.dumps`
errors also detect `pickle.loads` errors. I've implemented it in a
[https://github.com/django/django/pull/7325 Github PR #7325].
The second is a proposal to instead of raising pickling exception that
interrupts tests and displays useless
`multiprocessing.pool.RemoteTraceback` wrap the error type and message in
some kind of `UnpickleableError` container and pass it to parent process
with the usual `addError`/`addFailure`/`addSubTest`/`addExpectedFailure`
methods. This will let the test suite continue, display final error
statistics and perform teardown. This is especially important for
`addExpectedFailure` which currently stops the entire suite if the
expected error is unpickleable (my actual use case).
--
Ticket URL: <https://code.djangoproject.com/ticket/27301>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/046.762476e0a3ced0e9a43ce32666880f06%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.