+struct DummySinkData
+{
+ bt_message_iterator *msgIter;
+};
+
+static bt_component_class_initialize_method_status
+dummySinkInit(bt_self_component_sink * const self, bt_self_component_sink_configuration * const,
+ const bt_value * const, void * const initMethodData)
+{
+ const auto status = bt_self_component_sink_add_input_port(self, "in", NULL, nullptr);
+ BT_ASSERT(status == BT_SELF_COMPONENT_ADD_PORT_STATUS_OK);
+ bt_self_component_set_data(bt_self_component_sink_as_self_component(self), initMethodData);
+ return BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK;
+}
+
+static DummySinkData& dummySinkDataFromSelfCompSink(bt_self_component_sink * const self)
+{
+ return *static_cast<DummySinkData *>(
+ bt_self_component_get_data(bt_self_component_sink_as_self_component(self)));
+}
+
+static bt_component_class_sink_graph_is_configured_method_status
+dummySinkGraphIsConfigured(bt_self_component_sink * const self)
+{
+ auto& data = dummySinkDataFromSelfCompSink(self);
+ const auto port = bt_self_component_sink_borrow_input_port_by_name(self, "in");
+ BT_ASSERT(port);
+ const auto status = bt_message_iterator_create_from_sink_component(self, port, &data.msgIter);
+ BT_ASSERT(status == BT_MESSAGE_ITERATOR_CREATE_FROM_SINK_COMPONENT_STATUS_OK);
+ return BT_COMPONENT_CLASS_SINK_GRAPH_IS_CONFIGURED_METHOD_STATUS_OK;
+}
+
+static bt_component_class_sink_consume_method_status
+dummySinkConsume(bt_self_component_sink * const self)
+{
+ const auto& data = dummySinkDataFromSelfCompSink(self);
+ bt_message_array_const msgs;
+ uint64_t msgCount;
+ const auto status = bt_message_iterator_next(data.msgIter, &msgs, &msgCount);
+ BT_ASSERT(status == BT_MESSAGE_ITERATOR_NEXT_STATUS_END);
+ return BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_END;
+}
+