summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2016-09-23 07:52:32 -0400
committerNed Batchelder <ned@nedbatchelder.com>2016-09-23 07:52:32 -0400
commit44049333cb1c2550fe5a5e9d54d57c5c3589ee3b (patch)
tree0401f528774f2c155c68053e13ebe5ba8ed06497
parent91b64953450626476278737bc2c480189901c2fb (diff)
downloadpython-coveragepy-44049333cb1c2550fe5a5e9d54d57c5c3589ee3b.tar.gz
Add more debugging for thorny multiprocessing issues
-rw-r--r--coverage/control.py2
-rw-r--r--coverage/data.py3
-rw-r--r--coverage/multiproc.py8
-rw-r--r--tests/test_data.py4
4 files changed, 15 insertions, 2 deletions
diff --git a/coverage/control.py b/coverage/control.py
index 32fb30c..3464d66 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -721,6 +721,8 @@ class Coverage(object):
def _atexit(self):
"""Clean up on process shutdown."""
+ if self.debug and self.debug.should('dataio'):
+ self.debug.write("Inside _atexit: self._auto_save = %r" % (self._auto_save,))
if self._started:
self.stop()
if self._auto_save:
diff --git a/coverage/data.py b/coverage/data.py
index 98b9c8a..95b6888 100644
--- a/coverage/data.py
+++ b/coverage/data.py
@@ -144,6 +144,9 @@ class CoverageData(object):
# A list of dicts of information about the coverage.py runs.
self._runs = []
+ if self._debug and self._debug.should('dataio'):
+ self._debug.write("Creating CoverageData object")
+
def __repr__(self):
return "<{klass} lines={lines} arcs={arcs} tracers={tracers} runs={runs}>".format(
klass=self.__class__.__name__,
diff --git a/coverage/multiproc.py b/coverage/multiproc.py
index 78c680c..fe83731 100644
--- a/coverage/multiproc.py
+++ b/coverage/multiproc.py
@@ -34,12 +34,18 @@ class ProcessWithCoverage(OriginalProcess):
rcfile = os.environ[COVERAGE_RCFILE_ENV]
cov = Coverage(data_suffix=True, config_file=rcfile)
cov.start()
+ debug = cov.debug
try:
+ if debug.should("multiproc"):
+ debug.write("Calling multiprocessing bootstrap")
return original_bootstrap(self)
finally:
+ if debug.should("multiproc"):
+ debug.write("Finished multiprocessing bootstrap")
cov.stop()
cov.save()
-
+ if debug.should("multiproc"):
+ debug.write("Saved multiprocessing data")
class Stowaway(object):
"""An object to pickle, so when it is unpickled, it can apply the monkey-patch."""
diff --git a/tests/test_data.py b/tests/test_data.py
index 52702e9..4bccdcf 100644
--- a/tests/test_data.py
+++ b/tests/test_data.py
@@ -554,7 +554,9 @@ class CoverageDataFilesTest(DataTestHelpers, CoverageTest):
self.assertRegex(
debug.get_output(),
- r"^Writing data to '.*\.coverage'\n"
+ r"^Creating CoverageData object\n"
+ r"Writing data to '.*\.coverage'\n"
+ r"Creating CoverageData object\n"
r"Reading data from '.*\.coverage'\n$"
)