Author: Antonio Cuni <anto.c...@gmail.com> Branch: fix-vmprof-stacklet-switch-2 Changeset: r93197:85cbd648e7dd Date: 2017-11-28 17:24 +0100 http://bitbucket.org/pypy/pypy/changeset/85cbd648e7dd/
Log: WIP: add a failing test which shows that we are not taking samples inside callbacks 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 @@ -1,5 +1,7 @@ +import pytest import os from rpython.rlib.rvmprof.test.support import fakevmprof +from pypy.interpreter.gateway import interp2app from pypy.module._continuation.test.support import BaseAppTest @@ -771,3 +773,41 @@ continulet.switch(c1, to=c2) raises(error, continulet.switch, c1, to=c2) + + +@pytest.mark.usefixtures('init_method') +class AppTestVMProf(BaseAppTest): + + @pytest.fixture + def init_method(self, fakevmprof): + """ + This is automaticaly re-initialized for every method + """ + w = self.space.wrap + i2a = interp2app + def is_sampling_enabled(space): + return space.wrap(fakevmprof.is_sampling_enabled) + self.w_is_sampling_enabled = w(i2a(is_sampling_enabled)) + # + def start_sampling(space): + fakevmprof.start_sampling() + self.w_start_sampling = w(i2a(start_sampling)) + # + def stop_sampling(space): + fakevmprof.stop_sampling() + self.w_stop_sampling = w(i2a(stop_sampling)) + + def test_sampling_inside_callback(self): + from _continuation import continulet + # + def my_callback(c1): + assert self.is_sampling_enabled() + return 42 + # + self.start_sampling() + assert self.is_sampling_enabled() + c = continulet(my_callback) + res = c.switch() + assert res == 42 + assert self.is_sampling_enabled() + self.stop_sampling() diff --git a/rpython/rlib/rvmprof/test/support.py b/rpython/rlib/rvmprof/test/support.py --- a/rpython/rlib/rvmprof/test/support.py +++ b/rpython/rlib/rvmprof/test/support.py @@ -20,7 +20,7 @@ # --- FakeVMProf specific API --- # this API is not part of rvmprof, but available only inside tests using - # fakervmprof + # fakevmprof @property def is_sampling_enabled(self): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit