userver: userver/utils/mock_now.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
mock_now.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/utils/mock_now.hpp
4/// @brief Mocking and getting mocked time values
5/// @ingroup userver_universal
6
7#include <chrono>
8
9#include <userver/utils/datetime/wall_coarse_clock.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13namespace utils::datetime {
14
15/// @cond
16std::chrono::system_clock::time_point MockNow() noexcept;
17
18std::chrono::steady_clock::time_point MockSteadyNow() noexcept;
19
20WallCoarseClock::time_point MockWallCoarseNow() noexcept;
21///@endcond
22
23/// Sets the mocked value for utils::datetime::Now(), utils::datetime::SteadyNow() and
24/// utils::datetime::WallCoarseClock::Now().
25///
26/// Thread safe.
27void MockNowSet(std::chrono::system_clock::time_point new_mocked_now);
28
29/// Adds duration to current mocked time point value
30///
31/// Thread safe.
32///
33/// @throws utils::InvariantError if IsMockNow() returns false.
34void MockSleep(std::chrono::milliseconds duration);
35
36/// Removes time point mocking for utils::datetime::Now(), utils::datetime::SteadyNow() and
37/// utils::datetime::WallCoarseClock::Now().
38void MockNowUnset() noexcept;
39
40/// Returns true if time point is mocked for utils::datetime::Now(), utils::datetime::SteadyNow() and
41/// utils::datetime::WallCoarseClock::Now().
42bool IsMockNow() noexcept;
43
44} // namespace utils::datetime
45
46USERVER_NAMESPACE_END