userver
C++ Async Framework
Loading...
Searching...
No Matches
testpoint_control.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/testsuite/testpoint_control.hpp
4
/// @brief @copybrief testsuite::TestpointControl
5
6
#
include
<
functional
>
7
#
include
<
optional
>
8
#
include
<
string
>
9
#
include
<
unordered_set
>
10
11
#
include
<
userver
/
formats
/
json_fwd
.
hpp
>
12
#
include
<
userver
/
utils
/
function_ref
.
hpp
>
13
14
USERVER_NAMESPACE_BEGIN
15
16
namespace
testsuite
{
17
18
/// @brief Base testpoint client. Used to report TESTPOINT executions to
19
/// testsuite.
20
///
21
/// Do not use directly unless you are writing a component for handling
22
/// testpoints.
23
class
TestpointClientBase
{
24
public
:
25
using
Callback
=
utils
::
function_ref
<
void
(
const
formats
::
json
::
Value
&)>;
26
27
virtual
~TestpointClientBase();
28
29
/// @param name the name of the testpoint
30
/// @param json the request that will be passed to testsuite handler
31
/// @param callback will be invoked with the response if the testpoint has
32
/// been handled on the testsuite side successfully
33
virtual
void
Execute
(std::string_view name,
const
formats::
json
::Value& json,
34
Callback callback)
const
= 0;
35
36
protected
:
37
/// Must be called in destructors of derived classes
38
void
Unregister
()
noexcept
;
39
};
40
41
/// @brief Testpoint control interface for testsuite
42
///
43
/// All methods are coro-safe.
44
/// All testpoints are disabled by default.
45
/// Only 1 TestpointControl instance may exist globally at a time.
46
class
TestpointControl
final
{
47
public
:
48
TestpointControl();
49
~TestpointControl();
50
51
/// @brief Enable only the selected testpoints
52
void
SetEnabledNames
(std::unordered_set<std::string> names);
53
54
/// @brief Enable all defined testpoints
55
///
56
/// Testpoints, for which there is no registered handler on the testsuite
57
/// side, will still be skipped, at the cost of an extra request.
58
void
SetAllEnabled
();
59
60
/// @brief Makes a testpoint client globally accessible from testpoints. It
61
/// will unregister itself on destruction.
62
/// @note Only 1 client may be registered at a time.
63
void
SetClient
(
TestpointClientBase
& client);
64
};
65
66
}
// namespace testsuite
67
68
USERVER_NAMESPACE_END
userver
testsuite
testpoint_control.hpp
Generated on Wed May 15 2024 22:22:53 for userver by
Doxygen
1.10.0