summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
21559c8)
When test_simple_expect_run_once_status is used to test an error case,
it leaves the current thread error set. The next test then starts with
an error already set, which is not right.
Clear the error at the end of test_simple_expect_run_once_status. And
while at it, validate that we have an error set exactly when an error
status is returned.
Change-Id: Iafb27908ed15b9e8a2a48bad9b58f3246a5ba3ca
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/2359
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
#include <string.h>
#include "tap/tap.h"
#include <string.h>
#include "tap/tap.h"
struct test_data {
bt_graph_simple_sink_component_initialize_func_status init_status;
struct test_data {
bt_graph_simple_sink_component_initialize_func_status init_status;
.init_status = init_status,
.consume_status = consume_status,
};
.init_status = init_status,
.consume_status = consume_status,
};
+ const struct bt_error *err;
graph = create_graph_with_source(&src_out_port);
BT_ASSERT(graph);
BT_ASSERT(src_out_port);
graph = create_graph_with_source(&src_out_port);
BT_ASSERT(graph);
BT_ASSERT(src_out_port);
add_comp_status = bt_graph_add_simple_sink_component(graph, "sink",
simple_INITIALIZE_func, simple_consume_func, simple_fini_func,
&test_data, &sink_comp);
BT_ASSERT(add_comp_status == BT_GRAPH_ADD_COMPONENT_STATUS_OK);
BT_ASSERT(sink_comp);
add_comp_status = bt_graph_add_simple_sink_component(graph, "sink",
simple_INITIALIZE_func, simple_consume_func, simple_fini_func,
&test_data, &sink_comp);
BT_ASSERT(add_comp_status == BT_GRAPH_ADD_COMPONENT_STATUS_OK);
BT_ASSERT(sink_comp);
sink_in_port = bt_component_sink_borrow_input_port_by_name_const(
sink_comp, "in");
ok(sink_in_port,
"Simple sink component has an input port named \"in\"");
sink_in_port = bt_component_sink_borrow_input_port_by_name_const(
sink_comp, "in");
ok(sink_in_port,
"Simple sink component has an input port named \"in\"");
connect_status = bt_graph_connect_ports(graph, src_out_port,
sink_in_port, NULL);
ok(connect_status == BT_GRAPH_CONNECT_PORTS_STATUS_OK,
"Simple sink component's \"in\" port is connectable");
connect_status = bt_graph_connect_ports(graph, src_out_port,
sink_in_port, NULL);
ok(connect_status == BT_GRAPH_CONNECT_PORTS_STATUS_OK,
"Simple sink component's \"in\" port is connectable");
run_once_status = bt_graph_run_once(graph);
ok(run_once_status == exp_run_once_status,
"Graph \"run once\" status is the expected one (status code: %d)",
run_once_status);
run_once_status = bt_graph_run_once(graph);
ok(run_once_status == exp_run_once_status,
"Graph \"run once\" status is the expected one (status code: %d)",
run_once_status);
+
+ err = bt_current_thread_take_error();
+ ok((run_once_status < 0) == (err != NULL),
+ "Current thread error is set if bt_graph_run_once returned an error");
+
bt_component_sink_put_ref(sink_comp);
bt_graph_put_ref(graph);
bt_component_sink_put_ref(sink_comp);
bt_graph_put_ref(graph);
+ if (err) {
+ bt_error_release(err);
+ }