forked from boostorg/mqtt5
[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:
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)...
|
||||
|
||||
@@ -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) :
|
||||
|
||||
Reference in new issue
Block a user