Author: Richard Plangger <[email protected]>
Branch: vmprof-0.4.4
Changeset: r91098:b289c381ebfa
Date: 2017-04-20 10:01 -0400
http://bitbucket.org/pypy/pypy/changeset/b289c381ebfa/

Log:    test and fix get_profile_path for pypy

diff --git a/pypy/module/_vmprof/test/test__vmprof.py 
b/pypy/module/_vmprof/test/test__vmprof.py
--- a/pypy/module/_vmprof/test/test__vmprof.py
+++ b/pypy/module/_vmprof/test/test__vmprof.py
@@ -103,3 +103,15 @@
         assert _vmprof.is_enabled() is True
         _vmprof.disable()
         assert _vmprof.is_enabled() is False
+
+    def test_get_profile_path(self):
+        import _vmprof
+        tmpfile = open(self.tmpfilename, 'wb')
+        assert _vmprof.get_profile_path() is None
+        _vmprof.enable(tmpfile.fileno(), 0.01, 0, 0, 0)
+        path = _vmprof.get_profile_path()
+        if path != tmpfile.name:
+            with open(path, "rb") as fd1:
+                assert fd1.read() == tmpfile.read()
+        _vmprof.disable()
+        assert _vmprof.get_profile_path() is None
diff --git a/rpython/rlib/rvmprof/__init__.py b/rpython/rlib/rvmprof/__init__.py
--- a/rpython/rlib/rvmprof/__init__.py
+++ b/rpython/rlib/rvmprof/__init__.py
@@ -48,12 +48,11 @@
     if not vmp.is_enabled:
         return None
 
-    buflen = 4096
-    with rffi.scoped_alloc_buffer(buflen) as buf:
-        length = vmp.cintf.vmprof_get_profile_path(buf, buflen)
+    with rffi.scoped_alloc_buffer(4096) as buf:
+        length = vmp.cintf.vmprof_get_profile_path(buf.raw, buf.size) 
         if length == -1:
             return ""
-        return rffi.charp2strn(buf, length)
+        return buf.str(length)
 
     return None
 
diff --git a/rpython/rlib/rvmprof/src/rvmprof.c 
b/rpython/rlib/rvmprof/src/rvmprof.c
--- a/rpython/rlib/rvmprof/src/rvmprof.c
+++ b/rpython/rlib/rvmprof/src/rvmprof.c
@@ -29,3 +29,9 @@
     return ptr == __vmprof_eval_vmprof;
 }
 #endif
+
+
+long vmprof_get_profile_path(const char * buffer, long size)
+{
+    return vmp_fd_to_path(vmp_profile_fileno(), buffer, size);
+}
diff --git a/rpython/rlib/rvmprof/src/rvmprof.h 
b/rpython/rlib/rvmprof/src/rvmprof.h
--- a/rpython/rlib/rvmprof/src/rvmprof.h
+++ b/rpython/rlib/rvmprof/src/rvmprof.h
@@ -35,6 +35,7 @@
 RPY_EXTERN long vmprof_stack_pop(void*);
 RPY_EXTERN void vmprof_stack_free(void*);
 RPY_EXTERN intptr_t vmprof_get_traceback(void *, void *, intptr_t*, intptr_t);
+RPY_EXTERN long vmprof_get_profile_path(const char *, long);
 
 long vmprof_write_header_for_jit_addr(intptr_t *result, long n,
                                       intptr_t addr, int max_depth);
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to