userver: userver/testsuite/testpoint.hpp File Reference
Loading...
Searching...
No Matches
testpoint.hpp File Reference

Detailed Description

Send testpoint notification. Works only if testpoint support is enabled (e.g. in components::TestsControl), otherwise does nothing.

Definition in file testpoint.hpp.

Go to the source code of this file.

Namespaces

namespace  testsuite
 Testsuite integration.
 

Macros

#define TESTPOINT_CALLBACK(name, json, callback)
 Send testpoint notification and receive data. Works only if testpoint support is enabled (e.g. in components::TestsControl), otherwise does nothing.
 
#define TESTPOINT(name, json)
 Send testpoint notification. Works only if testpoint support is enabled (e.g. in components::TestsControl), otherwise does nothing.
 
#define TESTPOINT_CALLBACK_NONCORO(name, json, task_processor, callback)
 Same as TESTPOINT_CALLBACK but must be called outside of coroutine (e.g. from std::thread routine).
 
#define TESTPOINT_NONCORO(name, json, task_processor)
 Same as TESTPOINT but must be called outside of coroutine (e.g. from std::thread routine).
 

Typedefs

using testsuite::TestpointCallback = utils::function_ref<void(const formats::json::Value&)>
 

Functions

bool testsuite::AreTestpointsAvailable () noexcept
 Returns true if testpoints are available in runtime.
 

Macro Definition Documentation

◆ TESTPOINT

#define TESTPOINT ( name,
json )

Send testpoint notification. Works only if testpoint support is enabled (e.g. in components::TestsControl), otherwise does nothing.

Example usage:

TESTPOINT("simple-testpoint", [] {
builder["payload"] = "Hello, world!";
return builder.ExtractValue();
}());
async def test_basic(service_client, testpoint):
@testpoint('simple-testpoint')
def simple_testpoint(data):
assert data == {'payload': 'Hello, world!'}
response = await service_client.get('/testpoint')
assert response.status == 200
assert 'application/json' in response.headers['Content-Type']
assert simple_testpoint.times_called == 1

Throws nothing if server::handlers::TestsControl is not loaded or it is disabled in static config via load-enabled: false.

Examples
postgresql/functional_tests/basic_chaos/postgres_service.cpp, samples/kafka_service/src/consume.cpp, samples/testsuite-support/src/tasks.cpp, and samples/testsuite-support/src/testpoint.cpp.

Definition at line 86 of file testpoint.hpp.

◆ TESTPOINT_CALLBACK

#define TESTPOINT_CALLBACK ( name,
json,
callback )

Send testpoint notification and receive data. Works only if testpoint support is enabled (e.g. in components::TestsControl), otherwise does nothing.

Example usage:

TESTPOINT_CALLBACK("injection-point", formats::json::Value(), [&result](const formats::json::Value& doc) {
result["value"] = doc["value"].As<std::string>("");
});
async def test_injection(service_client, testpoint):
@testpoint('injection-point')
def injection_point(data):
return {'value': 'injected'}
response = await service_client.get('/testpoint')
assert response.status == 200
assert 'application/json' in response.headers['Content-Type']
assert response.json() == {'value': 'injected'}
# testpoint supports callqueue interface
assert injection_point.times_called == 1

Throws nothing if server::handlers::TestsControl is not loaded or it is disabled in static config via load-enabled: false.

Examples
samples/testsuite-support/src/testpoint.cpp.

Definition at line 59 of file testpoint.hpp.

◆ TESTPOINT_CALLBACK_NONCORO

#define TESTPOINT_CALLBACK_NONCORO ( name,
json,
task_processor,
callback )

Same as TESTPOINT_CALLBACK but must be called outside of coroutine (e.g. from std::thread routine).

Throws nothing if server::handlers::TestsControl is not loaded or it is disabled in static config via load-enabled: false.

Definition at line 96 of file testpoint.hpp.

◆ TESTPOINT_NONCORO

#define TESTPOINT_NONCORO ( name,
json,
task_processor )

Same as TESTPOINT but must be called outside of coroutine (e.g. from std::thread routine).

Throws nothing if server::handlers::TestsControl is not loaded or it is disabled in static config via load-enabled: false.

Definition at line 117 of file testpoint.hpp.