コード例 #1
0
ファイル: test_plugin_manager.py プロジェクト: mmip0stx/stoq
 def test_multiple_dirs(self):
     pm = StoqPluginManager(
         [utils.get_plugins_dir(),
          utils.get_plugins2_dir()])
     collected_plugins = pm.list_plugins()
     for name in self.DUMMY_PLUGINS + ['dummy_worker2']:
         self.assertIn(name, collected_plugins)
コード例 #2
0
    def test_plugin_override(self):
        """
        Verify that if plugin directories have plugins with duplicate names,
        the one in the last specified directory will be used
        """
        pm = StoqPluginManager([utils.get_plugins_dir(), utils.get_plugins2_dir()])
        collected_plugins = pm.list_plugins()
        self.assertIn('dummy_worker', collected_plugins)
        worker = pm.load_plugin('dummy_worker')
        self.assertTrue(worker.PLUGINS2_DUP_MARKER)

        pm = StoqPluginManager([utils.get_plugins2_dir(), utils.get_plugins_dir()])
        self.assertIn('dummy_worker', collected_plugins)
        worker = pm.load_plugin('dummy_worker')
        with self.assertRaises(Exception):
            worker.PLUGINS2_DUP_MARKER
コード例 #3
0
ファイル: test_plugin_manager.py プロジェクト: mmip0stx/stoq
 def test_plugin_opts(self):
     pm = StoqPluginManager(
         [utils.get_plugins_dir()],
         {'configurable_worker': {
             'crazy_runtime_option': 16
         }},
     )
     plugin = pm.load_plugin('configurable_worker')
     self.assertEqual(plugin.get_crazy_runtime_option(), 16)
コード例 #4
0
 def test_plugin_objects(self):
     pm = StoqPluginManager([utils.get_plugins_dir()])
     simple_worker = pm.load_plugin('simple_worker')
     self.assertEqual('simple_worker', simple_worker.plugin_name)
     self.assertEqual('Marcus LaFerrera', simple_worker.__author__)
     self.assertEqual('0.1', simple_worker.__version__)
     self.assertEqual(
         'https://github.com/PUNCH-Cyber/stoq-plugins-public',
         simple_worker.__website__,
     )
     self.assertEqual('Simple stoQ Worker plugin', simple_worker.__description__)
コード例 #5
0
    def test_plugin_config(self):
        pm = StoqPluginManager([utils.get_plugins_dir()])
        plugin = pm.load_plugin('configurable_worker')
        self.assertEqual(plugin.get_important_option(), 'cybercybercyber')

        # Test StoqConfigParser.getjson reading from configuration file
        self.assertEqual(plugin.getjson_option('list'), ['item1', 'item2'])
        self.assertEqual(plugin.getjson_option('dict'), {'key':'value'})
        self.assertEqual(plugin.getjson_option('sq_dict'), {"bar'foo": "value"})
        with self.assertRaises(json.decoder.JSONDecodeError) as exc:
            plugin.getjson_option('invalid')

        # Test fallback
        self.assertEqual(plugin.getjson_option('doesnotexist'), {})
コード例 #6
0
    def test_plugin_opts(self):
        pm = StoqPluginManager(
            [utils.get_plugins_dir()],
            {'configurable_worker': {
                'crazy_runtime_option': 16,
                'list': json.dumps(['item3', 'item4']),
                'dict': json.dumps({'key1': 'value1'}),
                'invalid':'invalid json blob',
                'sq_dict': json.dumps({"foo'bar": "value"}),
                'dq_dict': json.dumps({'foo"bar': "value"})
                }},
        )
        plugin = pm.load_plugin('configurable_worker')
        self.assertEqual(plugin.get_crazy_runtime_option(), 16)

        # Test StoqConfigParser.getjson reading from plugin_opts
        self.assertEqual(plugin.getjson_option('list'), ['item3', 'item4'])
        self.assertEqual(plugin.getjson_option('dict'), {'key1':'value1'})
        self.assertEqual(plugin.getjson_option('sq_dict'), {"foo'bar": "value"})
        self.assertEqual(plugin.getjson_option('dq_dict'), {'foo"bar': "value"})
        with self.assertRaises(json.decoder.JSONDecodeError) as exc:
            plugin.getjson_option('invalid')
コード例 #7
0
ファイル: test_plugin_manager.py プロジェクト: mmip0stx/stoq
 def test_no_reload(self):
     pm = StoqPluginManager([utils.get_plugins_dir()])
     worker = pm.load_plugin('dummy_worker')
     self.assertIsNotNone(worker)
     worker2 = pm.load_plugin('dummy_worker')
     self.assertIs(worker, worker2)  # Same object
コード例 #8
0
ファイル: test_plugin_manager.py プロジェクト: mmip0stx/stoq
 def test_load_plugin_nonexistent(self):
     pm = StoqPluginManager([utils.get_plugins_dir()])
     with self.assertRaises(StoqPluginNotFound):
         pm.load_plugin('this_plugin_does_not_exist')
コード例 #9
0
ファイル: test_plugin_manager.py プロジェクト: mmip0stx/stoq
 def test_load_plugin(self):
     pm = StoqPluginManager([utils.get_plugins_dir()])
     for name in self.DUMMY_PLUGINS:
         pm.load_plugin(name)
コード例 #10
0
ファイル: test_plugin_manager.py プロジェクト: mmip0stx/stoq
 def test_collect_one_invalid_dir(self):
     # Verify that the invalid directory doesn't cause an exception
     pm = StoqPluginManager(
         [utils.get_plugins_dir(), '/no/way/this/exists'])
     self.assertGreater(len(pm.list_plugins()), 0)
コード例 #11
0
ファイル: test_plugin_manager.py プロジェクト: mmip0stx/stoq
 def test_collect_plugins(self):
     pm = StoqPluginManager([utils.get_plugins_dir()])
     collected_plugins = pm.list_plugins()
     for name in self.DUMMY_PLUGINS:
         self.assertIn(name, collected_plugins)
コード例 #12
0
ファイル: test_plugin_manager.py プロジェクト: mmip0stx/stoq
 def test_plugin_config(self):
     pm = StoqPluginManager([utils.get_plugins_dir()])
     plugin = pm.load_plugin('configurable_worker')
     self.assertEqual(plugin.get_important_option(), 'cybercybercyber')