[tests] validate client to test broker packets

Reviewers: ivica

Reviewed By: ivica

Subscribers: korina

Differential Revision: https://repo.mireo.local/D27018
This commit is contained in:
Bruno Iljazovic committed 2023-12-18 13:30:10 +01:00
1 parent 9af32a942b
commit 79d3f7606d
3 files changed
+112 -50

No files matched your search

@@ -81,7 +81,6 @@ public:
template <typename ...Args>
client_message& reply_with(Args&& ...args) {
// just to allow duration to be the last parameter
return reply_with_dur(std::make_tuple(std::forward<Args>(args)...));
}
@@ -107,14 +106,20 @@ public:
return ret;
}
decltype(auto) expected_packets() {
return _expected_packets;
}
private:
template<typename Tuple, size_t ...I>
template <typename Tuple>
client_message& reply_with_dur(const Tuple& t) {
constexpr auto indices = std::make_index_sequence<
std::tuple_size_v<Tuple> - 1
> {};
using indices = std::make_index_sequence<std::tuple_size_v<Tuple> - 1>;
return reply_with_dur(t, indices {});
}
template<typename Tuple, size_t ...I>
client_message& reply_with_dur(const Tuple& t, std::index_sequence<I...>) {
return reply_with_impl(
std::get<std::tuple_size_v<Tuple> - 1>(t),
std::get<I>(t)...
@@ -188,7 +193,6 @@ public:
template <typename ...Args>
broker_message& send(Args&& ...args) {
// just to allow duration to be the last parameter
return send_with_dur(std::make_tuple(std::forward<Args>(args)...));
}
@@ -214,12 +218,14 @@ public:
private:
template<typename Tuple, size_t ...I>
template <typename Tuple>
broker_message& send_with_dur(const Tuple& t) {
constexpr auto indices = std::make_index_sequence<
std::tuple_size_v<Tuple> - 1
> {};
using indices = std::make_index_sequence<std::tuple_size_v<Tuple> - 1>;
return send_with_dur(t, indices {});
}
template<typename Tuple, size_t ...I>
broker_message& send_with_dur(const Tuple& t, std::index_sequence<I...>) {
return send_impl(
std::get<std::tuple_size_v<Tuple> - 1>(t),
std::get<I>(t)...
+20 -1
View File
@@ -116,6 +116,9 @@ public:
_broker_data.clear();
}
bool received_all_expected() {
return !_broker_side.pop_reply_action().has_value();
}
template <typename ConstBufferSequence, typename WriteToken>
decltype(auto) write_to_network(
@@ -133,7 +136,23 @@ public:
);
executor_type ex = get_executor();
// TODO: validate
if (reply_action) {
const auto& expected = reply_action->expected_packets();
size_t buffers_size = std::distance(
buffers.begin(), buffers.end()
);
BOOST_CHECK_EQUAL(buffers_size, expected.size());
size_t num_packets = std::min(buffers_size, expected.size());
auto it = buffers.begin();
for (size_t i = 0; i < num_packets; ++i, ++it) {
BOOST_CHECK_EQUAL(it->size(), expected[i].size());
size_t len = std::min(it->size(), expected[i].size());
BOOST_CHECK(!memcmp(it->data(), expected[i].data(), len));
}
}
auto complete_op = reply_action ?
reply_action->write_completion(ex) :