aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_utils.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2011-03-15 13:05:33 +1300
committerAldo Cortesi <aldo@nullcube.com>2011-03-15 13:05:33 +1300
commitfe1e2f16ff61ceaaca65f52590a5d5a4b132d790 (patch)
tree54c537fbc56cfe4ed1e1b87f927e4d0ea7adeb05 /test/test_utils.py
parent563d4161f120083eac79bf67cdddf28f9e9134c2 (diff)
downloadmitmproxy-fe1e2f16ff61ceaaca65f52590a5d5a4b132d790.tar.gz
mitmproxy-fe1e2f16ff61ceaaca65f52590a5d5a4b132d790.tar.bz2
mitmproxy-fe1e2f16ff61ceaaca65f52590a5d5a4b132d790.zip
Improve responsiveness of request and response viewing.
- Computing the view of a large body is expensive, so we introduce an LRU cache to hold the latest 20 results. - Use ListView more correctly, passing it individual urwid.Text snippets, rather than a single large one. This hugely improves render time.
Diffstat (limited to 'test/test_utils.py')
-rw-r--r--test/test_utils.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/test_utils.py b/test/test_utils.py
index c7d4e03f..434d6b26 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -310,6 +310,36 @@ class udummy_cert(libpry.AutoTree):
assert os.path.exists(os.path.join(d, "foo.com.pem"))
+class uLRUCache(libpry.AutoTree):
+ def test_one(self):
+ class Foo:
+ ran = False
+ @utils.LRUCache(2)
+ def one(self, x):
+ self.ran = True
+ return x
+
+ f = Foo()
+ assert f.one(1) == 1
+ assert f.ran
+ f.ran = False
+ assert f.one(1) == 1
+ assert not f.ran
+
+ f.ran = False
+ assert f.one(1) == 1
+ assert not f.ran
+ assert f.one(2) == 2
+ assert f.one(3) == 3
+ assert f.ran
+
+ f.ran = False
+ assert f.one(1) == 1
+ assert f.ran
+
+ assert len(f._cached_one) == 2
+ assert len(f._cachelist_one) == 2
+
tests = [
uformat_timestamp(),
@@ -324,4 +354,5 @@ tests = [
upretty_xmlish(),
udummy_ca(),
udummy_cert(),
+ uLRUCache(),
]