From f380a77deedbc4c11f11f273384d5fdf14d3f4fe Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Wed, 2 May 2018 13:38:16 +1200 Subject: Remove the tick event Mitmproxy: the tickless wonder. --- examples/addons/events.py | 5 ----- mitmproxy/eventsequence.py | 1 - mitmproxy/master.py | 14 +++----------- mitmproxy/script/concurrent.py | 2 +- mitmproxy/tools/console/master.py | 16 +++++++--------- test/mitmproxy/addons/test_script.py | 17 +---------------- test/mitmproxy/test_addonmanager.py | 8 ++++---- test/mitmproxy/tservers.py | 1 - 8 files changed, 16 insertions(+), 48 deletions(-) diff --git a/examples/addons/events.py b/examples/addons/events.py index 674ab4c8..cd714ba0 100644 --- a/examples/addons/events.py +++ b/examples/addons/events.py @@ -167,11 +167,6 @@ class Events: loaded. """ - def tick(self): - """ - A regular ticker - called approximately once every 100ms. - """ - def update(self, flows: typing.Sequence[mitmproxy.flow.Flow]): """ Update is called when one or more flow objects have been modified, diff --git a/mitmproxy/eventsequence.py b/mitmproxy/eventsequence.py index ef3b6db4..79b1bed4 100644 --- a/mitmproxy/eventsequence.py +++ b/mitmproxy/eventsequence.py @@ -36,7 +36,6 @@ Events = frozenset([ "log", "load", "running", - "tick", "update", ]) diff --git a/mitmproxy/master.py b/mitmproxy/master.py index c0f6e86f..20ac6acd 100644 --- a/mitmproxy/master.py +++ b/mitmproxy/master.py @@ -53,7 +53,6 @@ class Master: self.commands = command.CommandManager(self) self.addons = addonmanager.AddonManager(self) self._server = None - self.first_tick = True self.waiting_flows = [] self.log = log.Log(self) @@ -75,19 +74,12 @@ class Master: if self.server: ServerThread(self.server).start() - async def tick(self): - if self.first_tick: - self.first_tick = False - self.addons.trigger("running") - while True: - if self.should_exit.is_set(): - return - self.addons.trigger("tick") - await asyncio.sleep(0.1) + async def running(self): + self.addons.trigger("running") def run_loop(self, loop): self.start() - asyncio.ensure_future(self.tick()) + asyncio.ensure_future(self.running()) exc = None try: diff --git a/mitmproxy/script/concurrent.py b/mitmproxy/script/concurrent.py index 217fab9d..4028f2f4 100644 --- a/mitmproxy/script/concurrent.py +++ b/mitmproxy/script/concurrent.py @@ -12,7 +12,7 @@ class ScriptThread(basethread.BaseThread): def concurrent(fn): - if fn.__name__ not in eventsequence.Events - {"load", "configure", "tick"}: + if fn.__name__ not in eventsequence.Events - {"load", "configure"}: raise NotImplementedError( "Concurrent decorator not supported for '%s' method." % fn.__name__ ) diff --git a/mitmproxy/tools/console/master.py b/mitmproxy/tools/console/master.py index 9ed73ce9..c13bff27 100644 --- a/mitmproxy/tools/console/master.py +++ b/mitmproxy/tools/console/master.py @@ -90,15 +90,13 @@ class ConsoleMaster(master.Master): if log.log_tier(self.options.console_eventlog_verbosity) < log.log_tier(entry.level): return if entry.level in ("error", "warn", "alert"): - if self.first_tick: - self.start_err = entry - else: - signals.status_message.send( - message=(entry.level, - "{}: {}".format(entry.level.title(), - str(entry.msg).lstrip())), - expire=5 - ) + signals.status_message.send( + message = ( + entry.level, + "{}: {}".format(entry.level.title(), str(entry.msg).lstrip()) + ), + expire=5 + ) def sig_call_in(self, sender, seconds, callback, args=()): def cb(*_): diff --git a/test/mitmproxy/addons/test_script.py b/test/mitmproxy/addons/test_script.py index 91637489..62762809 100644 --- a/test/mitmproxy/addons/test_script.py +++ b/test/mitmproxy/addons/test_script.py @@ -251,20 +251,6 @@ class TestScriptLoader: assert not tctx.options.scripts assert not sl.addons - def test_load_err(self, tdata): - sc = script.ScriptLoader() - with taddons.context(sc, loadcore=False) as tctx: - tctx.configure(sc, scripts=[ - tdata.path("mitmproxy/data/addonscripts/load_error.py") - ]) - try: - tctx.invoke(sc, "tick") - except ValueError: - pass # this is expected and normally guarded. - # on the next tick we should not fail however. - tctx.invoke(sc, "tick") - assert len(tctx.master.addons) == 1 - @pytest.mark.asyncio async def test_script_error_handler(self): path = "/sample/path/example.py" @@ -292,8 +278,7 @@ class TestScriptLoader: "%s/c.py" % rec, ] ) - tctx.master.addons.invoke_addon(sc, "tick") - await tctx.master.await_log("c tick") + await tctx.master.await_log("configure") debug = [i.msg for i in tctx.master.logs if i.level == "debug"] assert debug == [ 'a load', diff --git a/test/mitmproxy/test_addonmanager.py b/test/mitmproxy/test_addonmanager.py index 1ef1521d..02c8f2e2 100644 --- a/test/mitmproxy/test_addonmanager.py +++ b/test/mitmproxy/test_addonmanager.py @@ -15,7 +15,7 @@ from mitmproxy.test import tflow class TAddon: def __init__(self, name, addons=None): self.name = name - self.tick = True + self.response = True self.custom_called = False if addons: self.addons = addons @@ -127,12 +127,12 @@ async def test_simple(): a.add(TAddon("one")) a.trigger("running") - a.trigger("tick") + a.trigger("response") assert await tctx.master.await_log("not callable") tctx.master.clear() - a.get("one").tick = addons - a.trigger("tick") + a.get("one").response = addons + a.trigger("response") assert not await tctx.master.await_log("not callable") a.remove(a.get("one")) diff --git a/test/mitmproxy/tservers.py b/test/mitmproxy/tservers.py index 857ca45d..6f528ec2 100644 --- a/test/mitmproxy/tservers.py +++ b/test/mitmproxy/tservers.py @@ -117,7 +117,6 @@ class ProxyThread(threading.Thread): def set_addons(self, *addons): self.tmaster.reset(addons) - self.tmaster.addons.trigger("tick") def start(self): super().start() -- cgit v1.2.3