/* SPDX-License-Identifier: LGPL-2.1+ */ //#include //#include "process-util.h" //#include "set.h" //#include "tests.h" #define NUM 100 static void* thread(void *p) { Set **s = p; assert_se(s); assert_se(*s); assert_se(!is_main_thread()); assert_se(set_size(*s) == NUM); *s = set_free(*s); return NULL; } static void test_one(const char *val) { pthread_t t; int x[NUM] = {}; unsigned i; Set *s; log_info("Testing with SYSTEMD_MEMPOOL=%s", val); assert_se(setenv("SYSTEMD_MEMPOOL", val, true) == 0); assert_se(is_main_thread()); assert_se(s = set_new(NULL)); for (i = 0; i < NUM; i++) assert_se(set_put(s, &x[i])); assert_se(pthread_create(&t, NULL, thread, &s) == 0); assert_se(pthread_join(t, NULL) == 0); assert_se(!s); } int main(int argc, char *argv[]) { log_set_max_level(LOG_DEBUG); log_parse_environment(); log_open(); test_one("0"); /* The value $SYSTEMD_MEMPOOL= is cached. So the following * test should also succeed. */ test_one("1"); return 0; }