mirror of
https://github.com/systemd/systemd.git
synced 2025-03-01 08:58:29 +03:00
test-bus-util: add a simple test for bus_request_name_async_may_reload_dbus()
This shows a minor memleak: ==1883== 24 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==1883== at 0x4C2DBAB: malloc (vg_replace_malloc.c:299) ==1883== by 0x4E9D385: malloc_multiply (alloc-util.h:69) ==1883== by 0x4EA2959: bus_request_name_async_may_reload_dbus (bus-util.c:1841) ==1883== by ... The exchange of messages is truncated at two different points: once right after the first callback is requested, and the second time after the full sequence has run (usually resulting in an error because of policy).
This commit is contained in:
parent
83b6c1a6b1
commit
24924cc959
@ -656,6 +656,10 @@ tests += [
|
||||
'src/core/umount.h'],
|
||||
[],
|
||||
[libmount]],
|
||||
|
||||
[['src/test/test-bus-util.c'],
|
||||
[],
|
||||
[]],
|
||||
]
|
||||
|
||||
############################################################
|
||||
|
47
src/test/test-bus-util.c
Normal file
47
src/test/test-bus-util.c
Normal file
@ -0,0 +1,47 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "bus-util.h"
|
||||
#include "log.h"
|
||||
|
||||
static void test_name_async(unsigned n_messages) {
|
||||
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
|
||||
int r;
|
||||
unsigned i;
|
||||
|
||||
log_info("/* %s (%u) */", __func__, n_messages);
|
||||
|
||||
r = bus_open_system_watch_bind_with_description(&bus, "test-bus");
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to connect to bus: %m");
|
||||
return;
|
||||
}
|
||||
|
||||
r = bus_request_name_async_may_reload_dbus(bus, NULL, "org.freedesktop.systemd.test-bus-util", 0, NULL);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to request name: %m");
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < n_messages; i++) {
|
||||
r = sd_bus_process(bus, NULL);
|
||||
log_debug("stage %u: sd_bus_process returned %d", i, r);
|
||||
if (r < 0) {
|
||||
log_notice_errno(r, "Processing failed: %m");
|
||||
return;
|
||||
}
|
||||
|
||||
if (r > 0 && i + 1 < n_messages)
|
||||
(void) sd_bus_wait(bus, USEC_PER_SEC / 3);
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
log_set_max_level(LOG_DEBUG);
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
|
||||
test_name_async(0);
|
||||
test_name_async(20);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user