[pypy-commit] pypy gc-disable: add debuglog.summary(), useful for tests
antocuni
pypy.commits at gmail.com
Mon May 21 10:07:50 EDT 2018
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: gc-disable
Changeset: r94633:4eb5b98b9eb0
Date: 2018-05-19 00:30 +0200
http://bitbucket.org/pypy/pypy/changeset/4eb5b98b9eb0/
Log: add debuglog.summary(), useful for tests
diff --git a/rpython/rlib/debug.py b/rpython/rlib/debug.py
--- a/rpython/rlib/debug.py
+++ b/rpython/rlib/debug.py
@@ -1,5 +1,6 @@
import sys
import time
+from collections import Counter
from rpython.rtyper.extregistry import ExtRegistryEntry
from rpython.rlib.objectmodel import we_are_translated, always_inline
@@ -41,6 +42,19 @@
# only for tests: empty the log
self[:] = []
+ def summary(self, flatten=False):
+ res = Counter()
+ def visit(lst):
+ for section, sublist in lst:
+ if section == 'debug_print':
+ continue
+ res[section] += 1
+ if flatten:
+ visit(sublist)
+ #
+ visit(self)
+ return res
+
def __repr__(self):
import pprint
return pprint.pformat(list(self))
diff --git a/rpython/rlib/test/test_debug.py b/rpython/rlib/test/test_debug.py
--- a/rpython/rlib/test/test_debug.py
+++ b/rpython/rlib/test/test_debug.py
@@ -118,6 +118,18 @@
assert res is True
assert debuglog == [("mycat", [('debug_print', 'foo', 2, 'bar', 3)])]
+def test_debuglog_summary(debuglog):
+ debug_start('foo')
+ debug_start('bar') # this is nested, so not counted in the summary by default
+ debug_stop('bar')
+ debug_stop('foo')
+ debug_start('foo')
+ debug_stop('foo')
+ debug_start('bar')
+ debug_stop('bar')
+ #
+ assert debuglog.summary() == {'foo': 2, 'bar': 1}
+ assert debuglog.summary(flatten=True) == {'foo': 2, 'bar': 2}
def test_debug_start_stop_timestamp():
import time
More information about the pypy-commit
mailing list