aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorVasil Dimov <vd@FreeBSD.org>2021-05-04 16:24:57 +0200
committerVasil Dimov <vd@FreeBSD.org>2022-06-09 14:20:18 +0200
commitae263460bab9e6aa112dc99790c8ef06a56ec838 (patch)
tree5b8135a48a7ce36b9c5cef68d2b26989577315fd /src/test
parentcc74459768063a923fb6220a4f420eaf211aee7b (diff)
downloadbitcoin-ae263460bab9e6aa112dc99790c8ef06a56ec838.tar.xz
net: introduce Sock::WaitMany()
It allows waiting concurrently on more than one socket. Being a `virtual` `Sock` method it can be overriden by tests. Will be used to replace `CConnman::SocketEvents()`.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/fuzz/util.cpp9
-rw-r--r--src/test/fuzz/util.h2
-rw-r--r--src/test/util/net.h9
3 files changed, 20 insertions, 0 deletions
diff --git a/src/test/fuzz/util.cpp b/src/test/fuzz/util.cpp
index 033c6e18d5..883698aff1 100644
--- a/src/test/fuzz/util.cpp
+++ b/src/test/fuzz/util.cpp
@@ -223,6 +223,15 @@ bool FuzzedSock::Wait(std::chrono::milliseconds timeout, Event requested, Event*
return true;
}
+bool FuzzedSock::WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per_sock) const
+{
+ for (auto& [sock, events] : events_per_sock) {
+ (void)sock;
+ events.occurred = m_fuzzed_data_provider.ConsumeBool() ? events.requested : 0;
+ }
+ return true;
+}
+
bool FuzzedSock::IsConnected(std::string& errmsg) const
{
if (m_fuzzed_data_provider.ConsumeBool()) {
diff --git a/src/test/fuzz/util.h b/src/test/fuzz/util.h
index 580105e442..e5f7612c55 100644
--- a/src/test/fuzz/util.h
+++ b/src/test/fuzz/util.h
@@ -72,6 +72,8 @@ public:
bool Wait(std::chrono::milliseconds timeout, Event requested, Event* occurred = nullptr) const override;
+ bool WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per_sock) const override;
+
bool IsConnected(std::string& errmsg) const override;
};
diff --git a/src/test/util/net.h b/src/test/util/net.h
index e980fe4967..37d278645a 100644
--- a/src/test/util/net.h
+++ b/src/test/util/net.h
@@ -162,6 +162,15 @@ public:
return true;
}
+ bool WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per_sock) const override
+ {
+ for (auto& [sock, events] : events_per_sock) {
+ (void)sock;
+ events.occurred = events.requested;
+ }
+ return true;
+ }
+
private:
const std::string m_contents;
mutable size_t m_consumed;