LCOV - code coverage report
Current view: top level - src/Communicate - LoggingBufferHandler.hpp (source / functions) Coverage Total Hit
Test: report.info Lines: 88.9 % 36 32
Test Date: 2025-05-12 09:25:18 Functions: 80.0 % 10 8
Branches: 41.4 % 58 24

             Branch data     Line data    Source code
       1                 :             : #ifndef IPPL_LOGGING_BUFFER_HANDLER_HPP
       2                 :             : #define IPPL_LOGGING_BUFFER_HANDLER_HPP
       3                 :             : 
       4                 :             : #include <iostream>
       5                 :             : #include <mpi.h>
       6                 :             : 
       7                 :             : namespace ippl {
       8                 :             : 
       9                 :             :     template <typename MemorySpace>
      10                 :           4 :     LoggingBufferHandler<MemorySpace>::LoggingBufferHandler(
      11                 :             :         std::shared_ptr<BufferHandler<MemorySpace>> handler, int rank)
      12                 :           4 :         : handler_m(std::move(handler))
      13                 :           8 :         , rank_m(rank) {}
      14                 :             : 
      15                 :             :     template <typename MemorySpace>
      16                 :        2778 :     LoggingBufferHandler<MemorySpace>::LoggingBufferHandler() {
      17         [ +  - ]:        2778 :         handler_m = std::make_shared<DefaultBufferHandler<MemorySpace>>();
      18         [ +  - ]:        2778 :         MPI_Comm_rank(MPI_COMM_WORLD, &rank_m);
      19                 :        2778 :     }
      20                 :             : 
      21                 :             :     template <typename MemorySpace>
      22                 :             :     typename LoggingBufferHandler<MemorySpace>::buffer_type
      23                 :           6 :     LoggingBufferHandler<MemorySpace>::getBuffer(size_type size, double overallocation) {
      24                 :           6 :         auto buffer = handler_m->getBuffer(size, overallocation);
      25   [ +  -  +  -  :          36 :         logMethod("getBuffer", {{"size", std::to_string(size)},
          +  -  +  +  -  
                      - ]
      26                 :           6 :                                 {"overallocation", std::to_string(overallocation)}});
      27                 :           6 :         return buffer;
      28   [ +  -  +  -  :           6 :     }
          +  -  +  -  -  
                -  -  - ]
      29                 :             : 
      30                 :             :     template <typename MemorySpace>
      31                 :           1 :     void LoggingBufferHandler<MemorySpace>::freeBuffer(buffer_type buffer) {
      32         [ +  - ]:           1 :         handler_m->freeBuffer(buffer);
      33   [ +  -  +  - ]:           3 :         logMethod("freeBuffer", {});
      34                 :           1 :     }
      35                 :             : 
      36                 :             :     template <typename MemorySpace>
      37                 :           1 :     void LoggingBufferHandler<MemorySpace>::freeAllBuffers() {
      38                 :           1 :         handler_m->freeAllBuffers();
      39   [ +  -  +  - ]:           3 :         logMethod("freeAllBuffers", {});
      40                 :           1 :     }
      41                 :             : 
      42                 :             :     template <typename MemorySpace>
      43                 :         658 :     void LoggingBufferHandler<MemorySpace>::deleteAllBuffers() {
      44                 :         658 :         handler_m->deleteAllBuffers();
      45   [ +  -  +  - ]:        1974 :         logMethod("deleteAllBuffers", {});
      46                 :         658 :     }
      47                 :             : 
      48                 :             :     template <typename MemorySpace>
      49                 :             :     typename LoggingBufferHandler<MemorySpace>::size_type
      50                 :           0 :     LoggingBufferHandler<MemorySpace>::getUsedSize() const {
      51                 :           0 :         return handler_m->getUsedSize();
      52                 :             :     }
      53                 :             : 
      54                 :             :     template <typename MemorySpace>
      55                 :             :     typename LoggingBufferHandler<MemorySpace>::size_type
      56                 :           0 :     LoggingBufferHandler<MemorySpace>::getFreeSize() const {
      57                 :           0 :         return handler_m->getFreeSize();
      58                 :             :     }
      59                 :             : 
      60                 :             :     template <typename MemorySpace>
      61                 :           4 :     const std::vector<LogEntry>& LoggingBufferHandler<MemorySpace>::getLogs() const {
      62                 :           4 :         return logEntries_m;
      63                 :             :     }
      64                 :             : 
      65                 :             :     template <typename MemorySpace>
      66                 :         666 :     void LoggingBufferHandler<MemorySpace>::logMethod(
      67                 :             :         const std::string& methodName, const std::map<std::string, std::string>& parameters) {
      68         [ +  - ]:        1332 :         logEntries_m.push_back({methodName, parameters, handler_m->getUsedSize(),
      69         [ +  - ]:         666 :                                 handler_m->getFreeSize(), MemorySpace::name(), rank_m,
      70                 :         666 :                                 std::chrono::high_resolution_clock::now()});
      71   [ +  -  +  -  :        3330 :     }
          +  -  +  -  -  
             -  -  -  -  
                      - ]
      72                 :             : 
      73                 :             : }  // namespace ippl
      74                 :             : 
      75                 :             : #endif
        

Generated by: LCOV version 2.0-1