LCOV - code coverage report
Current view: top level - src/util - time.cpp (source / functions) Coverage Total Hit
Test: fuzz_coverage.info Lines: 91.2 % 34 31
Test Date: 2024-12-04 04:00:22 Functions: 80.0 % 10 8
Branches: 87.5 % 8 7

             Branch data     Line data    Source code
       1                 :             : // Copyright (c) 2009-2010 Satoshi Nakamoto
       2                 :             : // Copyright (c) 2009-2022 The Bitcoin Core developers
       3                 :             : // Distributed under the MIT software license, see the accompanying
       4                 :             : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       5                 :             : 
       6                 :             : #include <util/time.h>
       7                 :             : 
       8                 :             : #include <compat/compat.h>
       9                 :             : #include <tinyformat.h>
      10                 :             : #include <util/check.h>
      11                 :             : 
      12                 :             : #include <atomic>
      13                 :             : #include <chrono>
      14                 :             : #include <string>
      15                 :             : #include <thread>
      16                 :             : 
      17                 :           0 : void UninterruptibleSleep(const std::chrono::microseconds& n) { std::this_thread::sleep_for(n); }
      18                 :             : 
      19                 :             : static std::atomic<std::chrono::seconds> g_mock_time{}; //!< For testing
      20                 :             : 
      21                 :    17744369 : NodeClock::time_point NodeClock::now() noexcept
      22                 :             : {
      23         [ +  + ]:    17744369 :     const auto mocktime{g_mock_time.load(std::memory_order_relaxed)};
      24         [ +  + ]:    17744369 :     const auto ret{
      25         [ +  + ]:    17744369 :         mocktime.count() ?
      26                 :             :             mocktime :
      27                 :    17744369 :             std::chrono::system_clock::now().time_since_epoch()};
      28         [ -  + ]:    17744369 :     assert(ret > 0s);
      29                 :    17744369 :     return time_point{ret};
      30                 :             : };
      31                 :             : 
      32                 :      354452 : void SetMockTime(int64_t nMockTimeIn) { SetMockTime(std::chrono::seconds{nMockTimeIn}); }
      33                 :      355685 : void SetMockTime(std::chrono::seconds mock_time_in)
      34                 :             : {
      35                 :      355685 :     Assert(mock_time_in >= 0s);
      36                 :      355685 :     g_mock_time.store(mock_time_in, std::memory_order_relaxed);
      37                 :      355685 : }
      38                 :             : 
      39                 :     3908690 : std::chrono::seconds GetMockTime()
      40                 :             : {
      41                 :     3908690 :     return g_mock_time.load(std::memory_order_relaxed);
      42                 :             : }
      43                 :             : 
      44                 :     1480468 : int64_t GetTime() { return GetTime<std::chrono::seconds>().count(); }
      45                 :             : 
      46                 :     4026689 : std::string FormatISO8601DateTime(int64_t nTime)
      47                 :             : {
      48                 :     4026689 :     const std::chrono::sys_seconds secs{std::chrono::seconds{nTime}};
      49                 :     4026689 :     const auto days{std::chrono::floor<std::chrono::days>(secs)};
      50                 :     4026689 :     const std::chrono::year_month_day ymd{days};
      51                 :     4026689 :     const std::chrono::hh_mm_ss hms{secs - days};
      52                 :     4026689 :     return strprintf("%04i-%02u-%02uT%02i:%02i:%02iZ", signed{ymd.year()}, unsigned{ymd.month()}, unsigned{ymd.day()}, hms.hours().count(), hms.minutes().count(), hms.seconds().count());
      53                 :             : }
      54                 :             : 
      55                 :        3506 : std::string FormatISO8601Date(int64_t nTime)
      56                 :             : {
      57                 :        3506 :     const std::chrono::sys_seconds secs{std::chrono::seconds{nTime}};
      58                 :        3506 :     const auto days{std::chrono::floor<std::chrono::days>(secs)};
      59                 :        3506 :     const std::chrono::year_month_day ymd{days};
      60                 :        3506 :     return strprintf("%04i-%02u-%02u", signed{ymd.year()}, unsigned{ymd.month()}, unsigned{ymd.day()});
      61                 :             : }
      62                 :             : 
      63                 :         169 : struct timeval MillisToTimeval(int64_t nTimeout)
      64                 :             : {
      65                 :         169 :     struct timeval timeout;
      66                 :         169 :     timeout.tv_sec  = nTimeout / 1000;
      67                 :         169 :     timeout.tv_usec = (nTimeout % 1000) * 1000;
      68                 :         169 :     return timeout;
      69                 :             : }
      70                 :             : 
      71                 :           0 : struct timeval MillisToTimeval(std::chrono::milliseconds ms)
      72                 :             : {
      73                 :           0 :     return MillisToTimeval(count_milliseconds(ms));
      74                 :             : }
        

Generated by: LCOV version 2.0-1