def translate_to_ctf(inputs, output): graph = bt2.Graph() rocm_plugin = bt2.find_plugins_in_path("./bt_plugin_rocm.py")[0] source_component = graph.add_component( rocm_plugin.source_component_classes["RocmSource"], "rocm_source", {"inputs": inputs}) ctf_plugin = bt2.find_plugin("ctf").sink_component_classes["fs"] sink_component = graph.add_component(ctf_plugin, "ctf_sink", { "path": output, "assume-single-trace": True }) utils_plugin = bt2.find_plugin("utils").filter_component_classes["muxer"] muxer_component = graph.add_component(utils_plugin, "muxer") for i, port in enumerate(source_component.output_ports): graph.connect_ports(source_component.output_ports[port], muxer_component.input_ports["in{}".format(i)]) graph.connect_ports(muxer_component.output_ports["out"], sink_component.input_ports["in"]) graph.run()
def translate_to_ctf(input_db, output): graph = bt2.Graph() plugin_path = os.path.join( pathlib.Path(__file__).parent, "bt_plugin_rocm.py") rocm_plugin = bt2.find_plugins_in_path(plugin_path, fail_on_load_error=True)[0] source_component = graph.add_component( rocm_plugin.source_component_classes["RocmSource"], "rocm_source", {"input": input_db}) ctf_plugin = bt2.find_plugin("ctf").sink_component_classes["fs"] sink_component = graph.add_component(ctf_plugin, "ctf_sink", { "path": output, "assume-single-trace": True }) utils_plugin = bt2.find_plugin("utils").filter_component_classes["muxer"] muxer_component = graph.add_component(utils_plugin, "muxer") for i, port in enumerate(source_component.output_ports): graph.connect_ports(source_component.output_ports[port], muxer_component.input_ports["in{}".format(i)]) graph.connect_ports(muxer_component.output_ports["out"], sink_component.input_ports["in"]) graph.run()
def test_find_file(self): extension = _TEST_PLUGIN_PLUGIN_EXTENSION_BY_OS.get( os.environ['BT_OS_TYPE'], 'so') plugin_name = 'babeltrace-plugin-utils.{}'.format(extension) path = os.path.join(_TEST_PLUGIN_PLUGINS_PATH, 'utils', '.libs', plugin_name) pset = bt2.find_plugins_in_path(path) self.assertTrue(len(pset) == 1)
def test_iter(self): pset = bt2.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH) names = set() for plugin in pset: names.add(plugin.name) self.assertTrue('ctf' in names) self.assertTrue('utils' in names) self.assertTrue('text' in names)
def test_python_plugin_provider(self): path = os.environ['PYTHON_PLUGIN_PROVIDER_TEST_PLUGIN_PATH'] pset = bt2.find_plugins_in_path(path) self.assertEqual(len(pset), 1) plugin = pset[0] self.assertEqual(plugin.name, 'sparkling') self.assertEqual(plugin.author, 'Philippe Proulx') self.assertEqual(plugin.description, 'A delicious plugin.') self.assertEqual(plugin.version.major, 1) self.assertEqual(plugin.version.minor, 2) self.assertEqual(plugin.version.patch, 3) self.assertEqual(plugin.version.extra, 'EXTRA') self.assertEqual(plugin.license, 'MIT') self.assertEqual(len(plugin.source_component_classes), 1) self.assertEqual(len(plugin.filter_component_classes), 1) self.assertEqual(len(plugin.sink_component_classes), 1) self.assertEqual(plugin.source_component_classes['MySource'].name, 'MySource') self.assertEqual(plugin.filter_component_classes['MyFilter'].name, 'MyFilter') self.assertEqual(plugin.sink_component_classes['MySink'].name, 'MySink')
def test_find_dir(self): pset = bt2.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH) self.assertTrue(len(pset) >= 3)
def test_find_none_existing_dir(self): plugins = bt2.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH, recurse=False) self.assertIsNone(plugins)
def test_find_nonexistent_dir(self): with self.assertRaises(ValueError): bt2.find_plugins_in_path( '/this/does/not/exist/246703df-cb85-46d5-8406-5e8dc4a88b41')
def test_getitem(self): pset = bt2.find_plugins_in_path(_TEST_PLUGIN_PLUGINS_PATH) self.assertTrue(pset[0].path.startswith(_TEST_PLUGIN_PLUGINS_PATH))