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-08-21 10:50:46 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            8 :     LoggingBufferHandler<MemorySpace>::LoggingBufferHandler(
      11              :         std::shared_ptr<BufferHandler<MemorySpace>> handler, int rank)
      12            8 :         : handler_m(std::move(handler))
      13           16 :         , rank_m(rank) {}
      14              : 
      15              :     template <typename MemorySpace>
      16         5404 :     LoggingBufferHandler<MemorySpace>::LoggingBufferHandler() {
      17         5404 :         handler_m = std::make_shared<DefaultBufferHandler<MemorySpace>>();
      18         5404 :         MPI_Comm_rank(MPI_COMM_WORLD, &rank_m);
      19         5404 :     }
      20              : 
      21              :     template <typename MemorySpace>
      22              :     typename LoggingBufferHandler<MemorySpace>::buffer_type
      23        19356 :     LoggingBufferHandler<MemorySpace>::getBuffer(size_type size, double overallocation) {
      24        19356 :         auto buffer = handler_m->getBuffer(size, overallocation);
      25       116136 :         logMethod("getBuffer", {{"size", std::to_string(size)},
      26        19356 :                                 {"overallocation", std::to_string(overallocation)}});
      27        19356 :         return buffer;
      28        19356 :     }
      29              : 
      30              :     template <typename MemorySpace>
      31            2 :     void LoggingBufferHandler<MemorySpace>::freeBuffer(buffer_type buffer) {
      32            2 :         handler_m->freeBuffer(buffer);
      33            6 :         logMethod("freeBuffer", {});
      34            2 :     }
      35              : 
      36              :     template <typename MemorySpace>
      37         1070 :     void LoggingBufferHandler<MemorySpace>::freeAllBuffers() {
      38         1070 :         handler_m->freeAllBuffers();
      39         3210 :         logMethod("freeAllBuffers", {});
      40         1070 :     }
      41              : 
      42              :     template <typename MemorySpace>
      43           52 :     void LoggingBufferHandler<MemorySpace>::deleteAllBuffers() {
      44           52 :         handler_m->deleteAllBuffers();
      45          156 :         logMethod("deleteAllBuffers", {});
      46           52 :     }
      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            8 :     const std::vector<LogEntry>& LoggingBufferHandler<MemorySpace>::getLogs() const {
      62            8 :         return logEntries_m;
      63              :     }
      64              : 
      65              :     template <typename MemorySpace>
      66        20480 :     void LoggingBufferHandler<MemorySpace>::logMethod(
      67              :         const std::string& methodName, const std::map<std::string, std::string>& parameters) {
      68        40960 :         logEntries_m.push_back({methodName, parameters, handler_m->getUsedSize(),
      69        20480 :                                 handler_m->getFreeSize(), MemorySpace::name(), rank_m,
      70        20480 :                                 std::chrono::high_resolution_clock::now()});
      71       102400 :     }
      72              : 
      73              : }  // namespace ippl
      74              : 
      75              : #endif
        

Generated by: LCOV version 2.0-1