X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=tests%2Flib%2Ftest_graph_topo.c;h=e69a61a860f128133106c1cc2a92193636c705b3;hb=25583cd07e351a64d645978905be94227355f0e5;hp=2f243b0581e3c5dfdb3ea66b52357e2348af3e9a;hpb=c14181ff063bab672dbcb6d24f586ab10853ed72;p=babeltrace.git diff --git a/tests/lib/test_graph_topo.c b/tests/lib/test_graph_topo.c index 2f243b05..e69a61a8 100644 --- a/tests/lib/test_graph_topo.c +++ b/tests/lib/test_graph_topo.c @@ -17,6 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include #include #include #include @@ -34,12 +35,12 @@ #include #include #include -#include +#include #include #include "tap/tap.h" -#define NR_TESTS 69 +#define NR_TESTS 77 enum event_type { COMP_ACCEPT_PORT_CONNECTION, @@ -245,7 +246,7 @@ bool compare_events(struct event *ev_a, struct event *ev_b) } break; default: - assert(false); + abort(); } return true; @@ -280,14 +281,14 @@ size_t event_pos(struct event *event) } } - return -1ULL; + return SIZE_MAX; } static -struct bt_notification_iterator_next_return src_iter_next( - struct bt_private_notification_iterator *priv_iterator) +struct bt_notification_iterator_next_method_return src_iter_next( + struct bt_private_connection_private_notification_iterator *priv_iterator) { - struct bt_notification_iterator_next_return ret = { + struct bt_notification_iterator_next_method_return ret = { .status = BT_NOTIFICATION_ITERATOR_STATUS_ERROR, }; @@ -303,14 +304,12 @@ enum bt_component_status accept_port_connection( struct event event = { .type = COMP_ACCEPT_PORT_CONNECTION, .data.comp_accept_port_connection = { - .comp = bt_component_from_private_component(private_component), - .self_port = bt_port_from_private_port(self_private_port), + .comp = bt_component_borrow_from_private(private_component), + .self_port = bt_port_borrow_from_private(self_private_port), .other_port = other_port, }, }; - bt_put(event.data.comp_accept_port_connection.comp); - bt_put(event.data.comp_accept_port_connection.self_port); append_event(&event); return BT_COMPONENT_STATUS_OK; } @@ -320,27 +319,24 @@ void src_port_connected(struct bt_private_component *private_component, struct bt_private_port *self_private_port, struct bt_port *other_port) { - struct bt_private_port *port; + int ret; struct event event = { .type = COMP_PORT_CONNECTED, .data.comp_port_connected = { - .comp = bt_component_from_private_component(private_component), - .self_port = bt_port_from_private_port(self_private_port), + .comp = bt_component_borrow_from_private(private_component), + .self_port = bt_port_borrow_from_private(self_private_port), .other_port = other_port, }, }; - bt_put(event.data.comp_port_connected.comp); - bt_put(event.data.comp_port_connected.self_port); append_event(&event); switch (current_test) { case TEST_SRC_ADDS_PORT_IN_PORT_CONNECTED: - port = bt_private_component_source_add_output_private_port( - private_component, "hello"); - assert(port); - bt_put(port); + ret = bt_private_component_source_add_output_private_port( + private_component, "hello", NULL, NULL); + BT_ASSERT(ret == 0); break; default: break; @@ -355,24 +351,34 @@ void src_port_disconnected(struct bt_private_component *private_component, struct event event = { .type = COMP_PORT_DISCONNECTED, .data.comp_port_disconnected = { - .comp = bt_component_from_private_component(private_component), - .port = bt_port_from_private_port(private_port), + .comp = bt_component_borrow_from_private(private_component), + .port = bt_port_borrow_from_private(private_port), }, }; - bt_put(event.data.comp_port_disconnected.comp); - bt_put(event.data.comp_port_disconnected.port); append_event(&event); switch (current_test) { case TEST_SINK_REMOVES_PORT_IN_CONSUME_THEN_SRC_REMOVES_DISCONNECTED_PORT: ret = bt_private_port_remove_from_component(private_port); - assert(ret == 0); + BT_ASSERT(ret == 0); default: break; } } +static +enum bt_component_status src_init(struct bt_private_component *priv_comp, + struct bt_value *params, void *init_method_data) +{ + int ret; + + ret = bt_private_component_source_add_output_private_port( + priv_comp, "out", NULL, NULL); + BT_ASSERT(ret == 0); + return BT_COMPONENT_STATUS_OK; +} + static enum bt_component_status sink_consume( struct bt_private_component *priv_component) @@ -383,11 +389,11 @@ enum bt_component_status sink_consume( switch (current_test) { case TEST_SINK_REMOVES_PORT_IN_CONSUME: case TEST_SINK_REMOVES_PORT_IN_CONSUME_THEN_SRC_REMOVES_DISCONNECTED_PORT: - def_port = bt_private_component_sink_get_default_input_private_port( - priv_component); - assert(def_port); + def_port = bt_private_component_sink_get_input_private_port_by_name( + priv_component, "in"); + BT_ASSERT(def_port); ret = bt_private_port_remove_from_component(def_port); - assert(ret == 0); + BT_ASSERT(ret == 0); bt_put(def_port); break; default: @@ -405,14 +411,12 @@ void sink_port_connected(struct bt_private_component *private_component, struct event event = { .type = COMP_PORT_CONNECTED, .data.comp_port_connected = { - .comp = bt_component_from_private_component(private_component), - .self_port = bt_port_from_private_port(self_private_port), + .comp = bt_component_borrow_from_private(private_component), + .self_port = bt_port_borrow_from_private(self_private_port), .other_port = other_port, }, }; - bt_put(event.data.comp_port_connected.comp); - bt_put(event.data.comp_port_connected.self_port); append_event(&event); } @@ -423,23 +427,33 @@ void sink_port_disconnected(struct bt_private_component *private_component, struct event event = { .type = COMP_PORT_DISCONNECTED, .data.comp_port_disconnected = { - .comp = bt_component_from_private_component(private_component), - .port = bt_port_from_private_port(private_port), + .comp = bt_component_borrow_from_private(private_component), + .port = bt_port_borrow_from_private(private_port), }, }; - bt_put(event.data.comp_port_disconnected.comp); - bt_put(event.data.comp_port_disconnected.port); append_event(&event); } +static +enum bt_component_status sink_init(struct bt_private_component *priv_comp, + struct bt_value *params, void *init_method_data) +{ + int ret; + + ret = bt_private_component_sink_add_input_private_port(priv_comp, + "in", NULL, NULL); + BT_ASSERT(ret == 0); + return BT_COMPONENT_STATUS_OK; +} + static void graph_port_added(struct bt_port *port, void *data) { struct bt_component *comp = bt_port_get_component(port); - assert(comp); + BT_ASSERT(comp); bt_put(comp); struct event event = { @@ -478,9 +492,9 @@ void graph_ports_connected(struct bt_port *upstream_port, bt_port_get_component(downstream_port); struct bt_connection *conn = bt_port_get_connection(upstream_port); - assert(upstream_comp); - assert(downstream_comp); - assert(conn); + BT_ASSERT(upstream_comp); + BT_ASSERT(downstream_comp); + BT_ASSERT(conn); bt_put(upstream_comp); bt_put(downstream_comp); bt_put(conn); @@ -525,31 +539,35 @@ void init_test(void) int ret; src_comp_class = bt_component_class_source_create("src", src_iter_next); - assert(src_comp_class); + BT_ASSERT(src_comp_class); + ret = bt_component_class_set_init_method(src_comp_class, src_init); + BT_ASSERT(ret == 0); ret = bt_component_class_set_accept_port_connection_method( src_comp_class, accept_port_connection); - assert(ret == 0); + BT_ASSERT(ret == 0); ret = bt_component_class_set_port_connected_method(src_comp_class, src_port_connected); - assert(ret == 0); + BT_ASSERT(ret == 0); ret = bt_component_class_set_port_disconnected_method( src_comp_class, src_port_disconnected); - assert(ret == 0); + BT_ASSERT(ret == 0); sink_comp_class = bt_component_class_sink_create("sink", sink_consume); - assert(sink_comp_class); + BT_ASSERT(sink_comp_class); + ret = bt_component_class_set_init_method(sink_comp_class, sink_init); + BT_ASSERT(ret == 0); ret = bt_component_class_set_accept_port_connection_method( sink_comp_class, accept_port_connection); - assert(ret == 0); + BT_ASSERT(ret == 0); ret = bt_component_class_set_port_connected_method(sink_comp_class, sink_port_connected); - assert(ret == 0); + BT_ASSERT(ret == 0); ret = bt_component_class_set_port_disconnected_method(sink_comp_class, sink_port_disconnected); - assert(ret == 0); + BT_ASSERT(ret == 0); bt_component_class_freeze(src_comp_class); bt_component_class_freeze(sink_comp_class); events = g_array_new(FALSE, TRUE, sizeof(struct event)); - assert(events); + BT_ASSERT(events); } static @@ -561,22 +579,26 @@ void fini_test(void) } static -struct bt_component *create_src(void) +struct bt_component *create_src(struct bt_graph *graph) { - struct bt_component *comp = - bt_component_create(src_comp_class, "src-comp", NULL); + struct bt_component *comp; + int ret; - assert(comp); + ret = bt_graph_add_component(graph, src_comp_class, "src-comp", NULL, + &comp); + BT_ASSERT(ret == 0); return comp; } static -struct bt_component *create_sink(void) +struct bt_component *create_sink(struct bt_graph *graph) { - struct bt_component *comp = - bt_component_create(sink_comp_class, "sink-comp", NULL); + struct bt_component *comp; + int ret; - assert(comp); + ret = bt_graph_add_component(graph, sink_comp_class, "sink-comp", + NULL, &comp); + BT_ASSERT(ret == 0); return comp; } @@ -586,18 +608,19 @@ struct bt_graph *create_graph(void) struct bt_graph *graph = bt_graph_create(); int ret; - assert(graph); - ret = bt_graph_add_port_added_listener(graph, graph_port_added, NULL); - assert(ret == 0); - ret = bt_graph_add_port_removed_listener(graph, graph_port_removed, - NULL); - assert(ret == 0); - ret = bt_graph_add_ports_connected_listener(graph, graph_ports_connected, + BT_ASSERT(graph); + ret = bt_graph_add_port_added_listener(graph, graph_port_added, NULL, NULL); - assert(ret == 0); + BT_ASSERT(ret >= 0); + ret = bt_graph_add_port_removed_listener(graph, graph_port_removed, + NULL, NULL); + BT_ASSERT(ret >= 0); + ret = bt_graph_add_ports_connected_listener(graph, + graph_ports_connected, NULL, NULL); + BT_ASSERT(ret >= 0); ret = bt_graph_add_ports_disconnected_listener(graph, - graph_ports_disconnected, NULL); - assert(ret == 0); + graph_ports_disconnected, NULL, NULL); + BT_ASSERT(ret >= 0); return graph; } @@ -620,6 +643,7 @@ void test_sink_removes_port_in_port_connected_then_src_removes_disconnected_port struct bt_port *sink_def_port; struct bt_connection *conn; struct event event; + enum bt_graph_status status; size_t src_accept_port_connection_pos; size_t sink_accept_port_connection_pos; size_t src_port_connected_pos; @@ -633,18 +657,33 @@ void test_sink_removes_port_in_port_connected_then_src_removes_disconnected_port prepare_test(TEST_SINK_REMOVES_PORT_IN_CONSUME_THEN_SRC_REMOVES_DISCONNECTED_PORT, "sink removes port in consume, then source removes disconnected port"); - src = create_src(); - sink = create_sink(); graph = create_graph(); - src_def_port = bt_component_source_get_default_output_port(src); - assert(src_def_port); - sink_def_port = bt_component_sink_get_default_input_port(sink); - assert(sink_def_port); - conn = bt_graph_connect_ports(graph, src_def_port, sink_def_port); - assert(conn); + BT_ASSERT(graph); + src = create_src(graph); + sink = create_sink(graph); + src_def_port = bt_component_source_get_output_port_by_name(src, "out"); + BT_ASSERT(src_def_port); + sink_def_port = bt_component_sink_get_input_port_by_name(sink, "in"); + BT_ASSERT(sink_def_port); + status = bt_graph_connect_ports(graph, src_def_port, sink_def_port, + &conn); + BT_ASSERT(status == 0); + BT_ASSERT(conn); + + /* We're supposed to have 7 events so far */ + ok(events->len == 7, "we have the expected number of events (before consume)"); + + /* Source's port added */ + event.type = GRAPH_PORT_ADDED; + event.data.graph_port_added.comp = src; + event.data.graph_port_added.port = src_def_port; + ok(has_event(&event), "got the expected graph's port added event (for source, initial)"); - /* We're supposed to have 5 events so far */ - ok(events->len == 5, "we have the expected number of events (before consume)"); + /* Sink's port added */ + event.type = GRAPH_PORT_ADDED; + event.data.graph_port_added.comp = sink; + event.data.graph_port_added.port = sink_def_port; + ok(has_event(&event), "got the expected graph's port added event (for sink, initial)"); /* Source's accept port connection */ event.type = COMP_ACCEPT_PORT_CONNECTION; @@ -701,7 +740,7 @@ void test_sink_removes_port_in_port_connected_then_src_removes_disconnected_port /* Consume sink once */ clear_events(); ret = bt_graph_consume(graph); - assert(ret == 0); + BT_ASSERT(ret == 0); /* We're supposed to have 5 new events */ ok(events->len == 5, "we have the expected number of events (after consume)"); @@ -782,6 +821,7 @@ void test_sink_removes_port_in_port_connected(void) struct bt_port *sink_def_port; struct bt_connection *conn; struct event event; + enum bt_graph_status status; size_t src_accept_port_connection_pos; size_t sink_accept_port_connection_pos; size_t src_port_connected_pos; @@ -794,18 +834,32 @@ void test_sink_removes_port_in_port_connected(void) prepare_test(TEST_SINK_REMOVES_PORT_IN_CONSUME, "sink removes port in consume"); - src = create_src(); - sink = create_sink(); graph = create_graph(); - src_def_port = bt_component_source_get_default_output_port(src); - assert(src_def_port); - sink_def_port = bt_component_sink_get_default_input_port(sink); - assert(sink_def_port); - conn = bt_graph_connect_ports(graph, src_def_port, sink_def_port); - assert(conn); + BT_ASSERT(graph); + src = create_src(graph); + sink = create_sink(graph); + src_def_port = bt_component_source_get_output_port_by_name(src, "out"); + BT_ASSERT(src_def_port); + sink_def_port = bt_component_sink_get_input_port_by_name(sink, "in"); + BT_ASSERT(sink_def_port); + status = bt_graph_connect_ports(graph, src_def_port, sink_def_port, + &conn); + BT_ASSERT(status == 0); + + /* We're supposed to have 7 events so far */ + ok(events->len == 7, "we have the expected number of events (before consume)"); + + /* Source's port added */ + event.type = GRAPH_PORT_ADDED; + event.data.graph_port_added.comp = src; + event.data.graph_port_added.port = src_def_port; + ok(has_event(&event), "got the expected graph's port added event (for source, initial)"); - /* We're supposed to have 5 events so far */ - ok(events->len == 5, "we have the expected number of events (before consume)"); + /* Sink's port added */ + event.type = GRAPH_PORT_ADDED; + event.data.graph_port_added.comp = sink; + event.data.graph_port_added.port = sink_def_port; + ok(has_event(&event), "got the expected graph's port added event (for sink, initial)"); /* Source's accept port connection */ event.type = COMP_ACCEPT_PORT_CONNECTION; @@ -862,7 +916,7 @@ void test_sink_removes_port_in_port_connected(void) /* Consume sink once */ clear_events(); ret = bt_graph_consume(graph); - assert(ret == 0); + BT_ASSERT(ret == 0); /* We're supposed to have 4 new events */ ok(events->len == 4, "we have the expected number of events (after consume)"); @@ -928,6 +982,7 @@ void test_src_adds_port_in_port_connected(void) struct bt_port *src_hello_port; struct bt_connection *conn; struct event event; + enum bt_graph_status status; size_t src_accept_port_connection_pos; size_t sink_accept_port_connection_pos; size_t src_port_connected_pos; @@ -937,20 +992,35 @@ void test_src_adds_port_in_port_connected(void) prepare_test(TEST_SRC_ADDS_PORT_IN_PORT_CONNECTED, "source adds port in port connected"); - src = create_src(); - sink = create_sink(); graph = create_graph(); - src_def_port = bt_component_source_get_default_output_port(src); - assert(src_def_port); - sink_def_port = bt_component_sink_get_default_input_port(sink); - assert(sink_def_port); - conn = bt_graph_connect_ports(graph, src_def_port, sink_def_port); - assert(conn); - src_hello_port = bt_component_source_get_output_port(src, "hello"); - assert(src_hello_port); - - /* We're supposed to have 6 events */ - ok(events->len == 6, "we have the expected number of events"); + BT_ASSERT(graph); + src = create_src(graph); + sink = create_sink(graph); + src_def_port = bt_component_source_get_output_port_by_name(src, "out"); + BT_ASSERT(src_def_port); + sink_def_port = bt_component_sink_get_input_port_by_name(sink, "in"); + BT_ASSERT(sink_def_port); + status = bt_graph_connect_ports(graph, src_def_port, sink_def_port, + &conn); + BT_ASSERT(status == 0); + src_hello_port = bt_component_source_get_output_port_by_name(src, + "hello"); + BT_ASSERT(src_hello_port); + + /* We're supposed to have 8 events */ + ok(events->len == 8, "we have the expected number of events"); + + /* Source's port added */ + event.type = GRAPH_PORT_ADDED; + event.data.graph_port_added.comp = src; + event.data.graph_port_added.port = src_def_port; + ok(has_event(&event), "got the expected graph's port added event (for source, initial)"); + + /* Sink's port added */ + event.type = GRAPH_PORT_ADDED; + event.data.graph_port_added.comp = sink; + event.data.graph_port_added.port = sink_def_port; + ok(has_event(&event), "got the expected graph's port added event (for sink, initial)"); /* Source's accept port connection */ event.type = COMP_ACCEPT_PORT_CONNECTION; @@ -1034,6 +1104,7 @@ void test_simple(void) struct bt_port *sink_def_port; struct bt_connection *conn; struct event event; + enum bt_graph_status status; size_t src_accept_port_connection_pos; size_t sink_accept_port_connection_pos; size_t src_port_connected_pos; @@ -1041,18 +1112,32 @@ void test_simple(void) size_t graph_ports_connected_pos; prepare_test(TEST_SIMPLE, "simple"); - src = create_src(); - sink = create_sink(); graph = create_graph(); - src_def_port = bt_component_source_get_default_output_port(src); - assert(src_def_port); - sink_def_port = bt_component_sink_get_default_input_port(sink); - assert(sink_def_port); - conn = bt_graph_connect_ports(graph, src_def_port, sink_def_port); - assert(conn); - - /* We're supposed to have 5 events */ - ok(events->len == 5, "we have the expected number of events"); + BT_ASSERT(graph); + src = create_src(graph); + sink = create_sink(graph); + src_def_port = bt_component_source_get_output_port_by_name(src, "out"); + BT_ASSERT(src_def_port); + sink_def_port = bt_component_sink_get_input_port_by_name(sink, "in"); + BT_ASSERT(sink_def_port); + status = bt_graph_connect_ports(graph, src_def_port, sink_def_port, + &conn); + BT_ASSERT(status == 0); + + /* We're supposed to have 7 events */ + ok(events->len == 7, "we have the expected number of events"); + + /* Source's port added */ + event.type = GRAPH_PORT_ADDED; + event.data.graph_port_added.comp = src; + event.data.graph_port_added.port = src_def_port; + ok(has_event(&event), "got the expected graph's port added event (for source, initial)"); + + /* Sink's port added */ + event.type = GRAPH_PORT_ADDED; + event.data.graph_port_added.comp = sink; + event.data.graph_port_added.port = sink_def_port; + ok(has_event(&event), "got the expected graph's port added event (for sink, initial)"); /* Source's accept port connection */ event.type = COMP_ACCEPT_PORT_CONNECTION;