mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-29 05:40:16 -04:00
test-runner: move leak checking into function
1) now we can use it in the test-compositor 2) it looks better Signed-off-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
parent
6197f32cad
commit
d8e72f98f2
2 changed files with 41 additions and 19 deletions
|
|
@ -149,15 +149,41 @@ sigalrm_handler(int signum)
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
get_current_alloc_num(void)
|
||||||
|
{
|
||||||
|
return num_alloc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
check_leaks(int supposed_alloc, int supposed_fds)
|
||||||
|
{
|
||||||
|
int num_fds;
|
||||||
|
|
||||||
|
if (leak_check_enabled) {
|
||||||
|
if (supposed_alloc != num_alloc) {
|
||||||
|
fprintf(stderr, "Memory leak detected in test. "
|
||||||
|
"Allocated %d blocks, unfreed %d\n", num_alloc,
|
||||||
|
num_alloc - supposed_alloc);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
num_fds = count_open_fds();
|
||||||
|
if (supposed_fds != num_fds) {
|
||||||
|
fprintf(stderr, "fd leak detected in test. "
|
||||||
|
"Opened %d files, unclosed %d\n", num_fds,
|
||||||
|
num_fds - supposed_fds);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
run_test(const struct test *t)
|
run_test(const struct test *t)
|
||||||
{
|
{
|
||||||
int cur_alloc = num_alloc;
|
int cur_alloc, cur_fds;
|
||||||
int cur_fds, num_fds;
|
|
||||||
struct sigaction sa;
|
struct sigaction sa;
|
||||||
|
|
||||||
cur_fds = count_open_fds();
|
|
||||||
|
|
||||||
if (timeouts_enabled) {
|
if (timeouts_enabled) {
|
||||||
sa.sa_handler = sigalrm_handler;
|
sa.sa_handler = sigalrm_handler;
|
||||||
sa.sa_flags = 0;
|
sa.sa_flags = 0;
|
||||||
|
|
@ -165,27 +191,17 @@ run_test(const struct test *t)
|
||||||
assert(sigaction(SIGALRM, &sa, NULL) == 0);
|
assert(sigaction(SIGALRM, &sa, NULL) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cur_alloc = get_current_alloc_num();
|
||||||
|
cur_fds = count_open_fds();
|
||||||
|
|
||||||
t->run();
|
t->run();
|
||||||
|
|
||||||
/* turn off timeout (if any) after test completition */
|
/* turn off timeout (if any) after test completition */
|
||||||
if (timeouts_enabled)
|
if (timeouts_enabled)
|
||||||
alarm(0);
|
alarm(0);
|
||||||
|
|
||||||
if (leak_check_enabled) {
|
check_leaks(cur_alloc, cur_fds);
|
||||||
if (cur_alloc != num_alloc) {
|
|
||||||
fprintf(stderr, "Memory leak detected in test. "
|
|
||||||
"Allocated %d blocks, unfreed %d\n", num_alloc,
|
|
||||||
num_alloc - cur_alloc);
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
num_fds = count_open_fds();
|
|
||||||
if (cur_fds != num_fds) {
|
|
||||||
fprintf(stderr, "fd leak detected in test. "
|
|
||||||
"Opened %d files, unclosed %d\n", num_fds,
|
|
||||||
num_fds - cur_fds);
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,12 @@ count_open_fds(void);
|
||||||
void
|
void
|
||||||
exec_fd_leak_check(int nr_expected_fds); /* never returns */
|
exec_fd_leak_check(int nr_expected_fds); /* never returns */
|
||||||
|
|
||||||
|
int
|
||||||
|
get_current_alloc_num(void);
|
||||||
|
|
||||||
|
void
|
||||||
|
check_leaks(int supposed_allocs, int supposed_fds);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* set/reset the timeout in seconds. The timeout starts
|
* set/reset the timeout in seconds. The timeout starts
|
||||||
* at the point of invoking this function
|
* at the point of invoking this function
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue