[pypy-svn] r57988 - in pypy/branch/cross-compilation/pypy/translator/benchmark: . test

fijal at codespeak.net fijal at codespeak.net
Mon Sep 8 20:55:58 CEST 2008


Author: fijal
Date: Mon Sep  8 20:55:56 2008
New Revision: 57988

Modified:
   pypy/branch/cross-compilation/pypy/translator/benchmark/bench_mem.py
   pypy/branch/cross-compilation/pypy/translator/benchmark/test/test_bench_mem.py
Log:
A helper to run couple of functions in one block


Modified: pypy/branch/cross-compilation/pypy/translator/benchmark/bench_mem.py
==============================================================================
--- pypy/branch/cross-compilation/pypy/translator/benchmark/bench_mem.py	(original)
+++ pypy/branch/cross-compilation/pypy/translator/benchmark/bench_mem.py	Mon Sep  8 20:55:56 2008
@@ -111,6 +111,22 @@
             lambda x: os.write(parentwrite, x),
             pid)
 
+def measure(measure_func, funcs_to_run):
+    results = []
+    for func in funcs_to_run:
+        read, write, pid = run_cooperative(func)
+        elem = []
+        while 1:
+            res = read()
+            if res == 'e':
+                os.waitpid(pid, 0)
+                break
+            else:
+                elem.append(measure_func(pid))
+                write('x')
+        results.append(elem)
+    return results
+
 def run_child(name, args):
     pid = os.fork()
     if not pid:

Modified: pypy/branch/cross-compilation/pypy/translator/benchmark/test/test_bench_mem.py
==============================================================================
--- pypy/branch/cross-compilation/pypy/translator/benchmark/test/test_bench_mem.py	(original)
+++ pypy/branch/cross-compilation/pypy/translator/benchmark/test/test_bench_mem.py	Mon Sep  8 20:55:56 2008
@@ -26,13 +26,27 @@
 def test_run_cooperative():
     def f(read, write):
         x = read()
-        assert x == '3'
-        write('4')
+        assert x == 'y'
+        write('x')
     
     read, write, pid = bench_mem.run_cooperative(f)
     assert pid
-    write('3')
-    assert read() == '4'
+    write('y')
+    assert read() == 'x'
+
+def test_measure_cooperative():
+    def f1(read, write):
+        write('g')
+        read()
+        write('g')
+        read()
+        write('e')
+
+    def measure(arg):
+        return 42
+
+    measurments = bench_mem.measure(measure, [f1, f1])
+    assert measurments == [[42, 42], [42, 42]]
 
 example_data = '''
 08048000-0813f000 r-xp 00000000 fd:00 75457      /usr/bin/python2.5



More information about the Pypy-commit mailing list