LCOV - code coverage report
Current view: top level - journal - test-mmap-cache.c (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 32 32 100.0 %
Date: 2019-08-23 13:36:53 Functions: 1 1 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 13 26 50.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : 
       3                 :            : #include <fcntl.h>
       4                 :            : #include <stdlib.h>
       5                 :            : #include <sys/mman.h>
       6                 :            : #include <unistd.h>
       7                 :            : 
       8                 :            : #include "fd-util.h"
       9                 :            : #include "macro.h"
      10                 :            : #include "mmap-cache.h"
      11                 :            : #include "tmpfile-util.h"
      12                 :            : #include "util.h"
      13                 :            : 
      14                 :          4 : int main(int argc, char *argv[]) {
      15                 :            :         MMapFileDescriptor *fx;
      16                 :            :         int x, y, z, r;
      17                 :          4 :         char px[] = "/tmp/testmmapXXXXXXX", py[] = "/tmp/testmmapYXXXXXX", pz[] = "/tmp/testmmapZXXXXXX";
      18                 :            :         MMapCache *m;
      19                 :            :         void *p, *q;
      20                 :            : 
      21         [ -  + ]:          4 :         assert_se(m = mmap_cache_new());
      22                 :            : 
      23                 :          4 :         x = mkostemp_safe(px);
      24         [ -  + ]:          4 :         assert_se(x >= 0);
      25                 :          4 :         unlink(px);
      26                 :            : 
      27         [ -  + ]:          4 :         assert_se(fx = mmap_cache_add_fd(m, x));
      28                 :            : 
      29                 :          4 :         y = mkostemp_safe(py);
      30         [ -  + ]:          4 :         assert_se(y >= 0);
      31                 :          4 :         unlink(py);
      32                 :            : 
      33                 :          4 :         z = mkostemp_safe(pz);
      34         [ -  + ]:          4 :         assert_se(z >= 0);
      35                 :          4 :         unlink(pz);
      36                 :            : 
      37                 :          4 :         r = mmap_cache_get(m, fx, PROT_READ, 0, false, 1, 2, NULL, &p, NULL);
      38         [ -  + ]:          4 :         assert_se(r >= 0);
      39                 :            : 
      40                 :          4 :         r = mmap_cache_get(m, fx, PROT_READ, 0, false, 2, 2, NULL, &q, NULL);
      41         [ -  + ]:          4 :         assert_se(r >= 0);
      42                 :            : 
      43         [ -  + ]:          4 :         assert_se((uint8_t*) p + 1 == (uint8_t*) q);
      44                 :            : 
      45                 :          4 :         r = mmap_cache_get(m, fx, PROT_READ, 1, false, 3, 2, NULL, &q, NULL);
      46         [ -  + ]:          4 :         assert_se(r >= 0);
      47                 :            : 
      48         [ -  + ]:          4 :         assert_se((uint8_t*) p + 2 == (uint8_t*) q);
      49                 :            : 
      50                 :          4 :         r = mmap_cache_get(m, fx, PROT_READ, 0, false, 16ULL*1024ULL*1024ULL, 2, NULL, &p, NULL);
      51         [ -  + ]:          4 :         assert_se(r >= 0);
      52                 :            : 
      53                 :          4 :         r = mmap_cache_get(m, fx, PROT_READ, 1, false, 16ULL*1024ULL*1024ULL+1, 2, NULL, &q, NULL);
      54         [ -  + ]:          4 :         assert_se(r >= 0);
      55                 :            : 
      56         [ -  + ]:          4 :         assert_se((uint8_t*) p + 1 == (uint8_t*) q);
      57                 :            : 
      58                 :          4 :         mmap_cache_free_fd(m, fx);
      59                 :          4 :         mmap_cache_unref(m);
      60                 :            : 
      61                 :          4 :         safe_close(x);
      62                 :          4 :         safe_close(y);
      63                 :          4 :         safe_close(z);
      64                 :            : 
      65                 :          4 :         return 0;
      66                 :            : }

Generated by: LCOV version 1.14