LCOV - code coverage report
Current view: top level - src/Communicate - LoggingBufferHandler.hpp (source / functions) Coverage Total Hit
Test: final_report.info Lines: 88.9 % 36 32
Test Date: 2025-07-17 18:19:47 Functions: 80.0 % 10 8

            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         3256 :     LoggingBufferHandler<MemorySpace>::LoggingBufferHandler() {
      17         3256 :         handler_m = std::make_shared<DefaultBufferHandler<MemorySpace>>();
      18         3256 :         MPI_Comm_rank(MPI_COMM_WORLD, &rank_m);
      19         3256 :     }
      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          777 :     void LoggingBufferHandler<MemorySpace>::deleteAllBuffers() {
      44          777 :         handler_m->deleteAllBuffers();
      45         2331 :         logMethod("deleteAllBuffers", {});
      46          777 :     }
      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          785 :     void LoggingBufferHandler<MemorySpace>::logMethod(
      67              :         const std::string& methodName, const std::map<std::string, std::string>& parameters) {
      68         1570 :         logEntries_m.push_back({methodName, parameters, handler_m->getUsedSize(),
      69          785 :                                 handler_m->getFreeSize(), MemorySpace::name(), rank_m,
      70          785 :                                 std::chrono::high_resolution_clock::now()});
      71         3925 :     }
      72              : 
      73              : }  // namespace ippl
      74              : 
      75              : #endif
        

Generated by: LCOV version 2.0-1