Bitcoin Core
32.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
test
util
time.h
Go to the documentation of this file.
1
// Copyright (c) The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef BITCOIN_TEST_UTIL_TIME_H
6
#define BITCOIN_TEST_UTIL_TIME_H
7
8
#include <
util/check.h
>
9
#include <util/time.h>
10
12
template
<
class
T>
13
class
LimitOne
14
{
15
public
:
16
LimitOne
() {
Assert
(
g_T_available
) =
false
; }
17
~LimitOne
() {
g_T_available
=
true
; }
18
LimitOne
(
const
LimitOne
&) =
delete
;
19
LimitOne
&
operator=
(
const
LimitOne
&) =
delete
;
20
21
private
:
22
static
inline
bool
g_T_available
{
true
};
23
};
24
25
28
class
FakeSteadyClock
:
public
LimitOne
<FakeSteadyClock>
29
{
30
MockableSteadyClock::mock_time_point::duration
t
{
MockableSteadyClock::INITIAL_MOCK_TIME
};
31
32
public
:
34
explicit
FakeSteadyClock
() { (*this) += 0s; }
35
37
~FakeSteadyClock
() {
MockableSteadyClock::ClearMockTime
(); }
38
39
FakeSteadyClock
(
const
FakeSteadyClock
&) =
delete
;
40
FakeSteadyClock
&
operator=
(
const
FakeSteadyClock
&) =
delete
;
41
43
void
operator+=
(std::chrono::milliseconds d)
44
{
45
Assert
(d >= 0s);
// Steady time can only increase monotonically.
46
t
+= d;
47
MockableSteadyClock::SetMockTime
(
t
);
48
}
49
};
50
53
class
FakeNodeClock
:
public
LimitOne
<FakeNodeClock>
54
{
55
NodeSeconds
m_t
{std::chrono::seconds::max()};
56
57
public
:
59
explicit
FakeNodeClock
(
NodeSeconds
init_time) {
set
(init_time); }
60
explicit
FakeNodeClock
(std::chrono::seconds init_time) {
set
(init_time); }
62
explicit
FakeNodeClock
() {
set
(
Now<NodeSeconds>
()); }
63
65
~FakeNodeClock
() {
set
(0s); }
66
67
FakeNodeClock
(
const
FakeNodeClock
&) =
delete
;
68
FakeNodeClock
&
operator=
(
const
FakeNodeClock
&) =
delete
;
69
71
void
set
(
NodeSeconds
t) {
SetMockTime
(
m_t
=
t
); }
72
void
set
(std::chrono::seconds t) {
set
(
NodeSeconds
{
t
}); }
73
75
void
operator+=
(std::chrono::seconds d) {
set
(
m_t
+= d); }
76
void
operator-=
(std::chrono::seconds d) {
set
(
m_t
-= d); }
77
};
78
79
#endif
// BITCOIN_TEST_UTIL_TIME_H
check.h
Assert
#define Assert(val)
Identity function.
Definition
check.h:116
FakeNodeClock::m_t
NodeSeconds m_t
Definition
time.h:55
FakeNodeClock::set
void set(NodeSeconds t)
Set mocktime.
Definition
time.h:71
FakeNodeClock::operator+=
void operator+=(std::chrono::seconds d)
Change mocktime by the given duration delta.
Definition
time.h:75
FakeNodeClock::operator=
FakeNodeClock & operator=(const FakeNodeClock &)=delete
FakeNodeClock::FakeNodeClock
FakeNodeClock(NodeSeconds init_time)
Initialize with the given time.
Definition
time.h:59
FakeNodeClock::FakeNodeClock
FakeNodeClock(const FakeNodeClock &)=delete
FakeNodeClock::operator-=
void operator-=(std::chrono::seconds d)
Definition
time.h:76
FakeNodeClock::set
void set(std::chrono::seconds t)
Definition
time.h:72
FakeNodeClock::FakeNodeClock
FakeNodeClock()
Initialize with current time.
Definition
time.h:62
FakeNodeClock::~FakeNodeClock
~FakeNodeClock()
Unset mocktime.
Definition
time.h:65
FakeNodeClock::FakeNodeClock
FakeNodeClock(std::chrono::seconds init_time)
Definition
time.h:60
FakeSteadyClock::operator=
FakeSteadyClock & operator=(const FakeSteadyClock &)=delete
FakeSteadyClock::operator+=
void operator+=(std::chrono::milliseconds d)
Change mocktime by the given duration delta.
Definition
time.h:43
FakeSteadyClock::FakeSteadyClock
FakeSteadyClock()
Initialize with INITIAL_MOCK_TIME.
Definition
time.h:34
FakeSteadyClock::FakeSteadyClock
FakeSteadyClock(const FakeSteadyClock &)=delete
FakeSteadyClock::t
MockableSteadyClock::mock_time_point::duration t
Definition
time.h:30
FakeSteadyClock::~FakeSteadyClock
~FakeSteadyClock()
Unset mocktime.
Definition
time.h:37
LimitOne::g_T_available
static bool g_T_available
Definition
time.h:22
LimitOne::LimitOne
LimitOne()
Definition
time.h:16
LimitOne::operator=
LimitOne & operator=(const LimitOne &)=delete
LimitOne::~LimitOne
~LimitOne()
Definition
time.h:17
LimitOne::LimitOne
LimitOne(const LimitOne &)=delete
ByteUnit::t
@ t
Definition
strencodings.h:52
MockableSteadyClock::SetMockTime
static void SetMockTime(mock_time_point::duration mock_time_in)
Set mock time for testing.
Definition
time.cpp:77
MockableSteadyClock::INITIAL_MOCK_TIME
static constexpr mock_time_point::duration INITIAL_MOCK_TIME
Definition
time.h:51
MockableSteadyClock::ClearMockTime
static void ClearMockTime()
Clear mock time, go back to system steady clock.
Definition
time.cpp:83
SetMockTime
void SetMockTime(std::chrono::time_point< NodeClock, std::chrono::seconds > mock)
Definition
time.cpp:52
Now
T Now()
Return the current time point cast to the given precision.
Definition
time.h:127
NodeSeconds
std::chrono::time_point< NodeClock, std::chrono::seconds > NodeSeconds
Definition
time.h:35
Generated on
for Bitcoin Core by
1.18.0