1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
import time
import pytest
vmprof = pytest.importorskip('vmprof')
greenlet = pytest.importorskip('greenlet')
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
|