LCOV - code coverage report
Current view: top level - app/src/Dynamic/Env/Event - EventLog.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 53 0.0 %
Date: 2023-08-17 16:45:52 Functions: 0 2 0.0 %

          Line data    Source code
       1             : #include "Dynamic/Env/Event/EventLog.hpp"
       2             : 
       3             : #include <chrono>
       4             : #include <iomanip>
       5             : 
       6             : using namespace std;
       7             : using namespace Dynamic;
       8             : using namespace Dynamic::Env;
       9             : 
      10             : using clk = chrono::steady_clock;
      11             : 
      12           0 : EventLog::EventLog(
      13             :     Time                 t_,
      14             :     Time                 tStartSim_,
      15             :     Time                 tEndSim_,
      16             :     clk::time_point      tStart_,
      17             :     Log::ProgressLogger &logger_,
      18             :     Policy::Logger      &policyLogger_
      19           0 : ):
      20             :     Event(t_),
      21             :     tStartSim(tStartSim_),
      22             :     tEndSim(tEndSim_),
      23             :     tStart(tStart_),
      24             :     logger(logger_),
      25           0 :     policyLogger(policyLogger_) {}
      26             : 
      27           0 : void EventLog::process(Env &env) {
      28           0 :     static Time prevTime = 0.0;
      29             : 
      30           0 :     static size_t prevNumberProcessedEvents = 0;
      31             : 
      32           0 :     static size_t nLEFT = 0, nLEFTGOOD = 0;
      33             : 
      34           0 :     const clk::time_point now = clk::now();
      35             : 
      36           0 :     double elapsed = (double)chrono::duration_cast<chrono::nanoseconds>(now - tStart).count() * 1e-9;
      37             : 
      38           0 :     double progress = (env.getTime() - tStartSim) / (tEndSim - tStartSim);
      39             : 
      40           0 :     double eta = (progress <= 0.0 ? 1.0 : elapsed * (1.0 - progress) / progress);
      41             : 
      42           0 :     static Time totalTime = 0.0;
      43             : 
      44           0 :     Time totalTimeInterval = 0.0;
      45             : 
      46           0 :     size_t nSTOPPED = 0, nMOVING = 0;
      47             : 
      48           0 :     size_t nLEFTInterval = 0, nLEFTGOODInterval = 0;
      49           0 :     for(const Vehicle &vehicle: env.getVehicles()) {
      50           0 :         Time Dt = vehicle.path.back().first - vehicle.path.front().first;
      51             : 
      52           0 :         switch(vehicle.state) {
      53           0 :             case Vehicle::State::STOPPED:
      54           0 :                 nSTOPPED++;
      55           0 :                 break;
      56           0 :             case Vehicle::State::MOVING:
      57           0 :                 nMOVING++;
      58           0 :                 break;
      59           0 :             case Vehicle::State::LEFT:
      60           0 :                 if(vehicle.path.back().first > prevTime) {
      61           0 :                     nLEFT++;
      62           0 :                     nLEFTInterval++;
      63           0 :                     if(vehicle.toTAZ.sinks.count(vehicle.path.back().second.get().edge)) {
      64           0 :                         nLEFTGOOD++;
      65           0 :                         nLEFTGOODInterval++;
      66           0 :                         totalTimeInterval += Dt;
      67           0 :                         totalTime += Dt;
      68             :                     }
      69             :                 }
      70             : 
      71           0 :                 env.discardVehicle(vehicle);
      72             : 
      73             :                 break;
      74             :             default:
      75             :                 break;
      76             :         }
      77             :     }
      78             : 
      79           0 :     logger << Log::ProgressLogger::Elapsed(elapsed)
      80           0 :            << Log::ProgressLogger::Progress(progress)
      81           0 :            << Log::ProgressLogger::ETA(eta)
      82           0 :            << Log::ProgressLogger::StartText()
      83           0 :            << setprecision(1)
      84           0 :            << env.getTime()
      85           0 :            << setprecision(6)
      86           0 :            << "\t" << nSTOPPED + nMOVING + nLEFT
      87           0 :            << "\t" << nSTOPPED + nMOVING
      88           0 :            << "\t" << env.numberOfDespawnedVehicles()
      89           0 :            << "\t" << (nLEFTGOOD > 0 ? totalTime / (Time)nLEFTGOOD : 0)
      90           0 :            << "\t" << (nLEFTGOODInterval > 0 ? totalTimeInterval / (Time)nLEFTGOODInterval : 0)
      91           0 :            << "\t" << env.getNumberProcessedEvents() - prevNumberProcessedEvents
      92           0 :            << "\t";
      93           0 :     policyLogger.log(logger);
      94           0 :     logger << Log::ProgressLogger::EndMessage();
      95             : 
      96           0 :     prevTime                  = env.getTime();
      97           0 :     prevNumberProcessedEvents = env.getNumberProcessedEvents();
      98           0 : }

Generated by: LCOV version 1.14