11c57f21de911e842f53a95c0342558fe2a81f15
2 * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * SPDX-License-Identifier: LGPL-2.1-only
8 #include <common/payload.h>
9 #include <common/payload-view.h>
12 static const int TEST_COUNT
= 5;
15 int lttng_opt_quiet
= 1;
16 int lttng_opt_verbose
;
19 static void test_fd_push_pop_order(void)
22 struct lttng_payload payload
;
24 lttng_payload_init(&payload
);
26 diag("Validating fd push/pop order");
27 for (i
= 0; i
< 3; i
++) {
28 ret
= lttng_payload_push_fd(&payload
, i
);
33 ok(ret
== 0, "Added three file descriptors to an lttng_payload");
36 bool fail_pop
= false;
37 struct lttng_payload_view view
=
38 lttng_payload_view_from_payload(
41 for (i
= 0; i
< 3; i
++) {
42 ret
= lttng_payload_view_pop_fd(&view
);
46 ok(!fail_pop
, "File descriptors are popped from a payload view in the order of insertion");
49 lttng_payload_reset(&payload
);
52 static void test_fd_push_pop_imbalance(void)
55 struct lttng_payload payload
;
56 const char * const test_description
= "Error reported when popping more file descriptors than were pushed";
58 lttng_payload_init(&payload
);
60 diag("Validating fd pop imbalance");
61 for (i
= 0; i
< 10; i
++) {
62 ret
= lttng_payload_push_fd(&payload
, i
);
69 struct lttng_payload_view view
=
70 lttng_payload_view_from_payload(
73 for (i
= 0; i
< 10; i
++) {
74 ret
= lttng_payload_view_pop_fd(&view
);
80 ret
= lttng_payload_view_pop_fd(&view
);
81 ok(ret
== -1, test_description
);
84 lttng_payload_reset(&payload
);
87 fail(test_description
);
88 lttng_payload_reset(&payload
);
91 static void test_fd_pop_fd_root_views(void)
95 struct lttng_payload payload
;
96 const char * const test_description
= "Same file descriptor returned when popping from different top-level views";
98 lttng_payload_init(&payload
);
100 diag("Validating root view fd pop behaviour");
101 ret
= lttng_payload_push_fd(&payload
, fd
);
106 for (i
= 0; i
< 5; i
++) {
107 struct lttng_payload_view view
=
108 lttng_payload_view_from_payload(
111 ret
= lttng_payload_view_pop_fd(&view
);
117 lttng_payload_reset(&payload
);
118 pass(test_description
);
121 lttng_payload_reset(&payload
);
122 fail(test_description
);
125 static void test_fd_pop_fd_descendant_views(void)
128 const int fd1
= 42, fd2
= 1837;
129 struct lttng_payload payload
;
130 const char * const test_description
= "Different file descriptors returned when popping from descendant views";
132 lttng_payload_init(&payload
);
134 diag("Validating descendant view fd pop behaviour");
135 ret
= lttng_payload_push_fd(&payload
, fd1
);
140 ret
= lttng_payload_push_fd(&payload
, fd2
);
146 struct lttng_payload_view view1
=
147 lttng_payload_view_from_payload(
149 struct lttng_payload_view view2
=
150 lttng_payload_view_from_view(
153 ret
= lttng_payload_view_pop_fd(&view1
);
158 ret
= lttng_payload_view_pop_fd(&view2
);
164 lttng_payload_reset(&payload
);
165 pass(test_description
);
168 lttng_payload_reset(&payload
);
169 fail(test_description
);
174 plan_tests(TEST_COUNT
);
176 test_fd_push_pop_order();
177 test_fd_push_pop_imbalance();
178 test_fd_pop_fd_root_views();
179 test_fd_pop_fd_descendant_views();
181 return exit_status();
This page took 0.03352 seconds and 4 git commands to generate.