From 6cc6cf4f28bb8f0f550257158ccc6c83e86b66e4 Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Thu, 18 Jan 2018 11:38:24 -0800 Subject: [PATCH] fix plugin loading and add a rudimentary test case --- tests/test_warcprox.py | 17 +++++++++++++++++ warcprox/controller.py | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/test_warcprox.py b/tests/test_warcprox.py index 5e13f95..6ab90f6 100755 --- a/tests/test_warcprox.py +++ b/tests/test_warcprox.py @@ -1395,6 +1395,23 @@ def test_controller_with_defaults(): assert not wwt.writer_pool.default_warc_writer.record_builder.base32 assert wwt.writer_pool.default_warc_writer.record_builder.digest_algorithm == 'sha1' +def test_load_plugin(): + options = warcprox.Options() + options.plugins = ['warcprox.stats.RunningStats'] + controller = warcprox.controller.WarcproxController(options) + assert isinstance( + controller._postfetch_chain[-1], + warcprox.ListenerPostfetchProcessor) + assert isinstance( + controller._postfetch_chain[-1].listener, + warcprox.stats.RunningStats) + assert isinstance( + controller._postfetch_chain[-2], + warcprox.ListenerPostfetchProcessor) + assert isinstance( + controller._postfetch_chain[-2].listener, + warcprox.stats.RunningStats) + def test_choose_a_port_for_me(warcprox_): options = warcprox.Options() options.port = 0 diff --git a/warcprox/controller.py b/warcprox/controller.py index 0ccb1d7..dfd930b 100644 --- a/warcprox/controller.py +++ b/warcprox/controller.py @@ -97,7 +97,7 @@ class Factory: (module_name, class_name) = qualname.rsplit('.', 1) module_ = importlib.import_module(module_name) class_ = getattr(module_, class_name) - listener = class_() + plugin = class_() plugin.notify # make sure it has this method return plugin except Exception as e: