LCOV - code coverage report
Current view: top level - test - test-set-disable-mempool.c (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 25 25 100.0 %
Date: 2019-08-22 15:41:25 Functions: 3 3 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: LGPL-2.1+ */
       2             : 
       3             : #include <pthread.h>
       4             : 
       5             : #include "process-util.h"
       6             : #include "set.h"
       7             : #include "tests.h"
       8             : 
       9             : #define NUM 100
      10             : 
      11           2 : static void* thread(void *p) {
      12           2 :         Set **s = p;
      13             : 
      14           2 :         assert_se(s);
      15           2 :         assert_se(*s);
      16             : 
      17           2 :         assert_se(!is_main_thread());
      18           2 :         assert_se(set_size(*s) == NUM);
      19           2 :         *s = set_free(*s);
      20             : 
      21           2 :         return NULL;
      22             : }
      23             : 
      24           2 : static void test_one(const char *val) {
      25             :         pthread_t t;
      26           2 :         int x[NUM] = {};
      27             :         unsigned i;
      28             :         Set *s;
      29             : 
      30           2 :         log_info("Testing with SYSTEMD_MEMPOOL=%s", val);
      31           2 :         assert_se(setenv("SYSTEMD_MEMPOOL", val, true) == 0);
      32           2 :         assert_se(is_main_thread());
      33             : 
      34           2 :         assert_se(s = set_new(NULL));
      35         202 :         for (i = 0; i < NUM; i++)
      36         200 :                 assert_se(set_put(s, &x[i]));
      37             : 
      38           2 :         assert_se(pthread_create(&t, NULL, thread, &s) == 0);
      39           2 :         assert_se(pthread_join(t, NULL) == 0);
      40             : 
      41           2 :         assert_se(!s);
      42           2 : }
      43             : 
      44           1 : int main(int argc, char *argv[]) {
      45           1 :         test_setup_logging(LOG_DEBUG);
      46             : 
      47           1 :         test_one("0");
      48             :         /* The value $SYSTEMD_MEMPOOL= is cached. So the following
      49             :          * test should also succeed. */
      50           1 :         test_one("1");
      51             : 
      52           1 :         return 0;
      53             : }

Generated by: LCOV version 1.14