BT_HIDDEN
bt_component_class_sink_graph_is_configured_method_status
-pretty_graph_is_configured(bt_self_component_sink *comp)
+pretty_graph_is_configured(bt_self_component_sink *self_comp_sink)
{
bt_component_class_sink_graph_is_configured_method_status status;
bt_message_iterator_create_from_sink_component_status
msg_iter_status;
struct pretty_component *pretty;
+ bt_self_component *self_comp =
+ bt_self_component_sink_as_self_component(self_comp_sink);
+ const bt_component *comp = bt_self_component_as_component(self_comp);
+ bt_self_component_port_input *in_port;
+ bt_logging_level log_level = bt_component_get_logging_level(comp);
- pretty = bt_self_component_get_data(
- bt_self_component_sink_as_self_component(comp));
+ pretty = bt_self_component_get_data(self_comp);
BT_ASSERT(pretty);
BT_ASSERT(!pretty->iterator);
+
+ in_port = bt_self_component_sink_borrow_input_port_by_name(self_comp_sink,
+ in_port_name);
+ if (!bt_port_is_connected(bt_port_input_as_port_const(
+ bt_self_component_port_input_as_port_input(in_port)))) {
+ BT_COMP_LOGE_APPEND_CAUSE(self_comp, "Single input port is not connected: "
+ "port-name=\"%s\"", in_port_name);
+ status = BT_COMPONENT_CLASS_SINK_GRAPH_IS_CONFIGURED_METHOD_STATUS_ERROR;
+ goto end;
+ }
+
msg_iter_status = bt_message_iterator_create_from_sink_component(
- comp, bt_self_component_sink_borrow_input_port_by_name(comp,
- in_port_name), &pretty->iterator);
+ self_comp_sink, in_port, &pretty->iterator);
if (msg_iter_status != BT_MESSAGE_ITERATOR_CREATE_FROM_SINK_COMPONENT_STATUS_OK) {
status = (int) msg_iter_status;
goto end;
cli/test_trace_read \
cli/test_trimmer \
plugins/sink.text.details/succeed/test_succeed \
+ plugins/sink.text.pretty/test_pretty \
+ plugins/sink.text.pretty/test_pretty.py \
plugins/src.ctf.lttng-live/test_live \
python-plugin-provider/bt_plugin_test_python_plugin_provider.py \
python-plugin-provider/test_python_plugin_provider \
if ENABLE_PYTHON_PLUGINS
TESTS_PYTHON_PLUGIN_PROVIDER += python-plugin-provider/test_python_plugin_provider
+TESTS_PLUGINS += plugins/sink.text.pretty/test_pretty
if ENABLE_DEBUG_INFO
TESTS_PLUGINS += \
plugins/flt.lttng-utils.debug-info/test_succeed
--- /dev/null
+#!/bin/bash
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright (C) 2017 Philippe Proulx <pproulx@efficios.com>
+#
+
+if [ "x${BT_TESTS_SRCDIR:-}" != "x" ]; then
+ UTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh"
+else
+ UTILSSH="$(dirname "$0")/../../utils/utils.sh"
+fi
+
+# shellcheck source=../../utils/utils.sh
+source "$UTILSSH"
+
+run_python_bt2_test "${BT_TESTS_SRCDIR}/plugins/sink.text.pretty" "test_*"
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright (C) 2020 EfficiOS, Inc.
+
+import unittest
+import bt2
+
+
+class Test(unittest.TestCase):
+ # Test that the component returns an error if the graph is configured while
+ # the component's input port is left disconnected.
+ def test_unconnected_port_raises(self):
+ graph = bt2.Graph()
+ graph.add_component(
+ bt2.find_plugin('text').sink_component_classes['pretty'], 'snk'
+ )
+
+ with self.assertRaisesRegex(
+ bt2._Error, 'Single input port is not connected: port-name="in"'
+ ):
+ graph.run()
+
+
+if __name__ == '__main__':
+ unittest.main()