Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(230)

Unified Diff: tools/telemetry/third_party/coverage/coverage/monkey.py

Issue 1366913004: Add coverage Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/third_party/coverage/coverage/monkey.py
diff --git a/tools/telemetry/third_party/coverage/coverage/monkey.py b/tools/telemetry/third_party/coverage/coverage/monkey.py
new file mode 100644
index 0000000000000000000000000000000000000000..c4ec68c66807a147ec095b36f21f681ac584a30e
--- /dev/null
+++ b/tools/telemetry/third_party/coverage/coverage/monkey.py
@@ -0,0 +1,50 @@
+# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
+
+"""Monkey-patching to make coverage.py work right in some cases."""
+
+import multiprocessing
+import multiprocessing.process
+import sys
+
+# An attribute that will be set on modules to indicate that they have been
+# monkey-patched.
+PATCHED_MARKER = "_coverage$patched"
+
+
+def patch_multiprocessing():
+ """Monkey-patch the multiprocessing module.
+
+ This enables coverage measurement of processes started by multiprocessing.
+ This is wildly experimental!
+
+ """
+ if hasattr(multiprocessing, PATCHED_MARKER):
+ return
+
+ if sys.version_info >= (3, 4):
+ klass = multiprocessing.process.BaseProcess
+ else:
+ klass = multiprocessing.Process
+
+ original_bootstrap = klass._bootstrap
+
+ class ProcessWithCoverage(klass):
+ """A replacement for multiprocess.Process that starts coverage."""
+ def _bootstrap(self):
+ """Wrapper around _bootstrap to start coverage."""
+ from coverage import Coverage
+ cov = Coverage(data_suffix=True)
+ cov.start()
+ try:
+ return original_bootstrap(self)
+ finally:
+ cov.stop()
+ cov.save()
+
+ if sys.version_info >= (3, 4):
+ klass._bootstrap = ProcessWithCoverage._bootstrap
+ else:
+ multiprocessing.Process = ProcessWithCoverage
+
+ setattr(multiprocessing, PATCHED_MARKER, True)
« no previous file with comments | « tools/telemetry/third_party/coverage/coverage/misc.py ('k') | tools/telemetry/third_party/coverage/coverage/parser.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698