test-runner: move leak checking into function
authorMarek Chalupa <mchqwerty@gmail.com>
Fri, 19 Dec 2014 13:53:00 +0000 (14:53 +0100)
committerDaniel Stone <daniels@collabora.com>
Wed, 28 Jan 2015 17:15:57 +0000 (17:15 +0000)
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>
tests/test-runner.c
tests/test-runner.h

index 48e9a22..2e6ad33 100644 (file)
@@ -149,15 +149,41 @@ sigalrm_handler(int signum)
        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
 run_test(const struct test *t)
 {
-       int cur_alloc = num_alloc;
-       int cur_fds, num_fds;
+       int cur_alloc, cur_fds;
        struct sigaction sa;
 
-       cur_fds = count_open_fds();
-
        if (timeouts_enabled) {
                sa.sa_handler = sigalrm_handler;
                sa.sa_flags = 0;
@@ -165,27 +191,17 @@ run_test(const struct test *t)
                assert(sigaction(SIGALRM, &sa, NULL) == 0);
        }
 
+       cur_alloc = get_current_alloc_num();
+       cur_fds = count_open_fds();
+
        t->run();
 
        /* turn off timeout (if any) after test completition */
        if (timeouts_enabled)
                alarm(0);
 
-       if (leak_check_enabled) {
-               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();
-               }
-       }
+       check_leaks(cur_alloc, cur_fds);
+
        exit(EXIT_SUCCESS);
 }
 
index 0e03530..5963ab6 100644 (file)
@@ -39,6 +39,12 @@ count_open_fds(void);
 void
 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
  * at the point of invoking this function