summaryrefslogtreecommitdiff
path: root/auto_tests
diff options
context:
space:
mode:
Diffstat (limited to 'auto_tests')
-rw-r--r--auto_tests/resource_leak_test.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/auto_tests/resource_leak_test.c b/auto_tests/resource_leak_test.c
new file mode 100644
index 00000000..aab1fcd7
--- /dev/null
+++ b/auto_tests/resource_leak_test.c
@@ -0,0 +1,50 @@
1#include "helpers.h"
2
3// See man 2 sbrk.
4#if _BSD_SOURCE || _SVID_SOURCE || \
5 (_XOPEN_SOURCE >= 500 || \
6 _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && \
7 !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
8#define HAVE_SBRK 1
9#endif
10
11#if HAVE_SBRK
12#include <assert.h>
13#include <unistd.h>
14#endif
15
16#define ITERATIONS 20000
17
18int main(void)
19{
20 int i;
21
22 puts("Warming up: creating/deleting 10 tox instances");
23
24 // Warm-up.
25 for (i = 0; i < 10; i++) {
26 Tox *tox = tox_new(0, 0);
27 tox_iterate(tox, NULL);
28 tox_kill(tox);
29 }
30
31#if HAVE_SBRK
32 // Low water mark.
33 char *hwm = (char *)sbrk(0);
34#endif
35 printf("Creating/deleting %d tox instances\n", ITERATIONS);
36
37 for (i = 0; i < ITERATIONS; i++) {
38 Tox *tox = tox_new(0, 0);
39 tox_iterate(tox, NULL);
40 tox_kill(tox);
41#if HAVE_SBRK
42 char *next_hwm = (char *)sbrk(0);
43 assert(hwm == next_hwm);
44#endif
45 }
46
47 puts("Success: no resource leaks detected");
48
49 return 0;
50}