[pypy-commit] pypy fix-vmprof-stacklet-switch-2: add a test which checks that vmprof is actually enabled inside greenlets; it fails on default and passes on this branch
antocuni
pypy.commits at gmail.com
Wed Nov 29 10:20:26 EST 2017
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: fix-vmprof-stacklet-switch-2
Changeset: r93213:9ac249e058e3
Date: 2017-11-29 16:17 +0100
http://bitbucket.org/pypy/pypy/changeset/9ac249e058e3/
Log: add a test which checks that vmprof is actually enabled inside
greenlets; it fails on default and passes on this branch
diff --git a/extra_tests/requirements.txt b/extra_tests/requirements.txt
--- a/extra_tests/requirements.txt
+++ b/extra_tests/requirements.txt
@@ -1,2 +1,3 @@
pytest
hypothesis
+vmprof
diff --git a/extra_tests/test_vmprof_greenlet.py b/extra_tests/test_vmprof_greenlet.py
new file mode 100644
--- /dev/null
+++ b/extra_tests/test_vmprof_greenlet.py
@@ -0,0 +1,28 @@
+import time
+import pytest
+import greenlet
+import vmprof
+
+def count_samples(filename):
+ stats = vmprof.read_profile(filename)
+ return len(stats.profiles)
+
+def cpuburn(duration):
+ end = time.time() + duration
+ while time.time() < end:
+ pass
+
+def test_sampling_inside_callback(tmpdir):
+ # see also test_sampling_inside_callback inside
+ # pypy/module/_continuation/test/test_stacklet.py
+ #
+ G = greenlet.greenlet(cpuburn)
+ fname = tmpdir.join('log.vmprof')
+ with fname.open('w+b') as f:
+ vmprof.enable(f.fileno(), 1/250.0)
+ G.switch(0.1)
+ vmprof.disable()
+
+ samples = count_samples(str(fname))
+ # 0.1 seconds at 250Hz should be 25 samples
+ assert 23 < samples < 27
diff --git a/pypy/module/_continuation/test/test_stacklet.py b/pypy/module/_continuation/test/test_stacklet.py
--- a/pypy/module/_continuation/test/test_stacklet.py
+++ b/pypy/module/_continuation/test/test_stacklet.py
@@ -799,6 +799,9 @@
def test_sampling_inside_callback(self):
if self.runappdirect:
+ # see also
+ # extra_tests.test_vmprof_greenlet.test_sampling_inside_callback
+ # for a "translated" version of this test
skip("we can't run this until we have _vmprof.is_sampling_enabled")
from _continuation import continulet
#
More information about the pypy-commit
mailing list