File: test_vmprof_greenlet.py

package info (click to toggle)
pypy3 7.3.19%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 212,236 kB
  • sloc: python: 2,098,316; ansic: 540,565; sh: 21,462; asm: 14,419; cpp: 4,451; makefile: 4,209; objc: 761; xml: 530; exp: 499; javascript: 314; pascal: 244; lisp: 45; csh: 12; awk: 4
file content (28 lines) | stat: -rw-r--r-- 780 bytes parent folder | download | duplicates (7)
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