2 # Copyright (C) 2019 EfficiOS Inc.
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; only version 2
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 _TEST_PLUGIN_PLUGINS_PATH
= os
.environ
['BT_PLUGINS_PATH']
25 _TEST_PLUGIN_PLUGIN_EXTENSION_BY_OS
= {'cygwin': 'dll', 'mingw': 'dll'}
28 class PluginSetTestCase(unittest
.TestCase
):
29 def test_create(self
):
30 pset
= bt2
.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH
)
31 self
.assertTrue(len(pset
) >= 3)
33 def test_getitem(self
):
34 pset
= bt2
.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH
)
35 self
.assertTrue(pset
[0].path
.startswith(_TEST_PLUGIN_PLUGINS_PATH
))
38 pset
= bt2
.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH
)
42 names
.add(plugin
.name
)
44 self
.assertTrue('ctf' in names
)
45 self
.assertTrue('utils' in names
)
46 self
.assertTrue('text' in names
)
49 class FindPluginsTestCase(unittest
.TestCase
):
50 def test_find_nonexistent_dir(self
):
51 with self
.assertRaises(ValueError):
52 bt2
.find_plugins_in_path(
53 '/this/does/not/exist/246703df-cb85-46d5-8406-5e8dc4a88b41'
56 def test_find_none_existing_dir(self
):
57 plugins
= bt2
.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH
, recurse
=False)
58 self
.assertIsNone(plugins
)
60 def test_find_dir(self
):
61 pset
= bt2
.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH
)
62 self
.assertTrue(len(pset
) >= 3)
64 def test_find_file(self
):
65 extension
= _TEST_PLUGIN_PLUGIN_EXTENSION_BY_OS
.get(
66 os
.environ
['BT_OS_TYPE'], 'so'
68 plugin_name
= 'babeltrace-plugin-utils.{}'.format(extension
)
69 path
= os
.path
.join(_TEST_PLUGIN_PLUGINS_PATH
, 'utils', '.libs', plugin_name
)
70 pset
= bt2
.find_plugins_in_path(path
)
71 self
.assertTrue(len(pset
) == 1)
74 class FindPluginTestCase(unittest
.TestCase
):
75 def test_find_none(self
):
76 plugin
= bt2
.find_plugin(
77 'this-does-not-exist-246703df-cb85-46d5-8406-5e8dc4a88b41'
79 self
.assertIsNone(plugin
)
81 def test_find_existing(self
):
82 plugin
= bt2
.find_plugin('ctf', find_in_user_dir
=False, find_in_sys_dir
=False)
83 self
.assertIsNotNone(plugin
)
86 class PluginTestCase(unittest
.TestCase
):
88 self
._plugin
= bt2
.find_plugin(
89 'ctf', find_in_user_dir
=False, find_in_sys_dir
=False
96 self
.assertEqual(self
._plugin
.name
, 'ctf')
99 plugin_path
= os
.path
.abspath(os
.path
.normcase(self
._plugin
.path
))
100 plugin_path_env
= os
.path
.abspath(os
.path
.normcase(_TEST_PLUGIN_PLUGINS_PATH
))
101 self
.assertTrue(plugin_path
.startswith(plugin_path_env
))
103 def test_author(self
):
104 self
.assertEqual(self
._plugin
.author
, 'EfficiOS <https://www.efficios.com/>')
106 def test_license(self
):
107 self
.assertEqual(self
._plugin
.license
, 'MIT')
109 def test_description(self
):
110 self
.assertEqual(self
._plugin
.description
, 'CTF input and output')
112 def test_version(self
):
113 self
.assertIsNone(self
._plugin
.version
)
115 def test_source_comp_classes_len(self
):
116 self
.assertEqual(len(self
._plugin
.source_component_classes
), 2)
118 def test_source_comp_classes_getitem(self
):
119 self
.assertEqual(self
._plugin
.source_component_classes
['fs'].name
, 'fs')
121 def test_source_comp_classes_getitem_invalid(self
):
122 with self
.assertRaises(KeyError):
123 self
._plugin
.source_component_classes
['lol']
125 def test_source_comp_classes_iter(self
):
128 for cc_name
, cc
in self
._plugin
.source_component_classes
.items():
129 plugins
[cc_name
] = cc
131 self
.assertTrue('fs' in plugins
)
132 self
.assertTrue('lttng-live' in plugins
)
133 self
.assertEqual(plugins
['fs'].name
, 'fs')
134 self
.assertEqual(plugins
['lttng-live'].name
, 'lttng-live')
136 def test_filter_comp_classes_len(self
):
137 plugin
= bt2
.find_plugin('utils', find_in_user_dir
=False, find_in_sys_dir
=False)
138 self
.assertEqual(len(plugin
.filter_component_classes
), 2)
140 def test_sink_comp_classes_len(self
):
141 self
.assertEqual(len(self
._plugin
.sink_component_classes
), 1)
144 if __name__
== '__main__':