aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-10-30 21:09:08 +1300
committerAldo Cortesi <aldo@nullcube.com>2016-10-30 21:11:30 +1300
commitdaf355bb4c7e7e1574d2977a49503eb6db2faa4a (patch)
treefecff428d6d1a19d303c779d0169ef6d6a1226cd /test
parent9abfb1aac27e28619c58d40ec050cc46fda2b30f (diff)
downloadmitmproxy-daf355bb4c7e7e1574d2977a49503eb6db2faa4a.tar.gz
mitmproxy-daf355bb4c7e7e1574d2977a49503eb6db2faa4a.tar.bz2
mitmproxy-daf355bb4c7e7e1574d2977a49503eb6db2faa4a.zip
console: add caching sort keys
This is a tad complicated. The underlying sorted list implementation expects the sort key to be stable for the lifetime of the object. However, if we sort by size, for instance, the sort order changes as the flow progresses through its lifecycle. We address this through two means: - Let order keys cache the sort value by flow ID. - Add a facility to refresh items in the list by removing and re-adding them when they are updated.
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/addons/test_view.py59
1 files changed, 27 insertions, 32 deletions
diff --git a/test/mitmproxy/addons/test_view.py b/test/mitmproxy/addons/test_view.py
index 77a8da30..63df8307 100644
--- a/test/mitmproxy/addons/test_view.py
+++ b/test/mitmproxy/addons/test_view.py
@@ -7,9 +7,18 @@ from mitmproxy.test import taddons
from .. import tutils
-def test_keys():
- t = tflow.tflow(resp=True)
- view.key_size(t)
+class Options(options.Options):
+ def __init__(
+ self, *,
+ filter=None,
+ order=None,
+ order_reversed=False,
+ **kwargs
+ ):
+ self.filter = filter
+ self.order = order
+ self.order_reversed = order_reversed
+ super().__init__(**kwargs)
def test_simple():
@@ -74,22 +83,23 @@ def test_filter():
def test_order():
v = view.View()
- v.request(tft(method="get", start=1))
- v.request(tft(method="put", start=2))
- v.request(tft(method="get", start=3))
- v.request(tft(method="put", start=4))
- assert [i.request.timestamp_start for i in v] == [1, 2, 3, 4]
-
- v.set_order(view.key_request_method)
- assert [i.request.method for i in v] == ["GET", "GET", "PUT", "PUT"]
- v.set_reversed(True)
- assert [i.request.method for i in v] == ["PUT", "PUT", "GET", "GET"]
+ with taddons.context(options=Options()) as tctx:
+ v.request(tft(method="get", start=1))
+ v.request(tft(method="put", start=2))
+ v.request(tft(method="get", start=3))
+ v.request(tft(method="put", start=4))
+ assert [i.request.timestamp_start for i in v] == [1, 2, 3, 4]
+
+ tctx.configure(v, order="method")
+ assert [i.request.method for i in v] == ["GET", "GET", "PUT", "PUT"]
+ v.set_reversed(True)
+ assert [i.request.method for i in v] == ["PUT", "PUT", "GET", "GET"]
- v.set_order(view.key_request_start)
- assert [i.request.timestamp_start for i in v] == [4, 3, 2, 1]
+ tctx.configure(v, order="time")
+ assert [i.request.timestamp_start for i in v] == [4, 3, 2, 1]
- v.set_reversed(False)
- assert [i.request.timestamp_start for i in v] == [1, 2, 3, 4]
+ v.set_reversed(False)
+ assert [i.request.timestamp_start for i in v] == [1, 2, 3, 4]
def test_reversed():
@@ -261,7 +271,6 @@ def test_settings():
tutils.raises(KeyError, v.settings.__getitem__, f)
v.add(f)
- assert v.settings[f] == {}
v.settings[f]["foo"] = "bar"
assert v.settings[f]["foo"] == "bar"
assert len(list(v.settings)) == 1
@@ -270,20 +279,6 @@ def test_settings():
assert not v.settings.keys()
-class Options(options.Options):
- def __init__(
- self, *,
- filter=None,
- order=None,
- order_reversed=False,
- **kwargs
- ):
- self.filter = filter
- self.order = order
- self.order_reversed = order_reversed
- super().__init__(**kwargs)
-
-
def test_configure():
v = view.View()
with taddons.context(options=Options()) as tctx: