Skip to content

Commit 4b58d55

Browse files
committed
test: move the implementation of StaticContentsSock to .cpp
Move the implementation (method definitions) from `test/util/net.h` to `test/util/net.cpp` to make the header easier to follow.
1 parent ccc2d3a commit 4b58d55

File tree

2 files changed

+107
-72
lines changed

2 files changed

+107
-72
lines changed

src/test/util/net.cpp

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,3 +137,93 @@ std::vector<NodeEvictionCandidate> GetRandomNodeEvictionCandidates(int n_candida
137137
}
138138
return candidates;
139139
}
140+
141+
StaticContentsSock::StaticContentsSock(const std::string& contents)
142+
: Sock{INVALID_SOCKET}, m_contents{contents}
143+
{
144+
}
145+
146+
StaticContentsSock::~StaticContentsSock() { m_socket = INVALID_SOCKET; }
147+
148+
StaticContentsSock& StaticContentsSock::operator=(Sock&& other)
149+
{
150+
assert(false && "Move of Sock into MockSock not allowed.");
151+
return *this;
152+
}
153+
154+
ssize_t StaticContentsSock::Send(const void*, size_t len, int) const { return len; }
155+
156+
ssize_t StaticContentsSock::Recv(void* buf, size_t len, int flags) const
157+
{
158+
const size_t consume_bytes{std::min(len, m_contents.size() - m_consumed)};
159+
std::memcpy(buf, m_contents.data() + m_consumed, consume_bytes);
160+
if ((flags & MSG_PEEK) == 0) {
161+
m_consumed += consume_bytes;
162+
}
163+
return consume_bytes;
164+
}
165+
166+
int StaticContentsSock::Connect(const sockaddr*, socklen_t) const { return 0; }
167+
168+
int StaticContentsSock::Bind(const sockaddr*, socklen_t) const { return 0; }
169+
170+
int StaticContentsSock::Listen(int) const { return 0; }
171+
172+
std::unique_ptr<Sock> StaticContentsSock::Accept(sockaddr* addr, socklen_t* addr_len) const
173+
{
174+
if (addr != nullptr) {
175+
// Pretend all connections come from 5.5.5.5:6789
176+
memset(addr, 0x00, *addr_len);
177+
const socklen_t write_len = static_cast<socklen_t>(sizeof(sockaddr_in));
178+
if (*addr_len >= write_len) {
179+
*addr_len = write_len;
180+
sockaddr_in* addr_in = reinterpret_cast<sockaddr_in*>(addr);
181+
addr_in->sin_family = AF_INET;
182+
memset(&addr_in->sin_addr, 0x05, sizeof(addr_in->sin_addr));
183+
addr_in->sin_port = htons(6789);
184+
}
185+
}
186+
return std::make_unique<StaticContentsSock>("");
187+
};
188+
189+
int StaticContentsSock::GetSockOpt(int level, int opt_name, void* opt_val, socklen_t* opt_len) const
190+
{
191+
std::memset(opt_val, 0x0, *opt_len);
192+
return 0;
193+
}
194+
195+
int StaticContentsSock::SetSockOpt(int, int, const void*, socklen_t) const { return 0; }
196+
197+
int StaticContentsSock::GetSockName(sockaddr* name, socklen_t* name_len) const
198+
{
199+
std::memset(name, 0x0, *name_len);
200+
return 0;
201+
}
202+
203+
bool StaticContentsSock::SetNonBlocking() const { return true; }
204+
205+
bool StaticContentsSock::IsSelectable() const { return true; }
206+
207+
bool StaticContentsSock::Wait(std::chrono::milliseconds timeout,
208+
Event requested,
209+
Event* occurred) const
210+
{
211+
if (occurred != nullptr) {
212+
*occurred = requested;
213+
}
214+
return true;
215+
}
216+
217+
bool StaticContentsSock::WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per_sock) const
218+
{
219+
for (auto& [sock, events] : events_per_sock) {
220+
(void)sock;
221+
events.occurred = events.requested;
222+
}
223+
return true;
224+
}
225+
226+
bool StaticContentsSock::IsConnected(std::string&) const
227+
{
228+
return true;
229+
}

src/test/util/net.h

Lines changed: 17 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -141,96 +141,41 @@ constexpr auto ALL_NETWORKS = std::array{
141141
class StaticContentsSock : public Sock
142142
{
143143
public:
144-
explicit StaticContentsSock(const std::string& contents)
145-
: Sock{INVALID_SOCKET},
146-
m_contents{contents}
147-
{
148-
}
144+
explicit StaticContentsSock(const std::string& contents);
149145

150-
~StaticContentsSock() override { m_socket = INVALID_SOCKET; }
146+
~StaticContentsSock() override;
151147

152-
StaticContentsSock& operator=(Sock&& other) override
153-
{
154-
assert(false && "Move of Sock into MockSock not allowed.");
155-
return *this;
156-
}
148+
StaticContentsSock& operator=(Sock&& other) override;
157149

158-
ssize_t Send(const void*, size_t len, int) const override { return len; }
150+
ssize_t Send(const void*, size_t len, int) const override;
159151

160-
ssize_t Recv(void* buf, size_t len, int flags) const override
161-
{
162-
const size_t consume_bytes{std::min(len, m_contents.size() - m_consumed)};
163-
std::memcpy(buf, m_contents.data() + m_consumed, consume_bytes);
164-
if ((flags & MSG_PEEK) == 0) {
165-
m_consumed += consume_bytes;
166-
}
167-
return consume_bytes;
168-
}
152+
ssize_t Recv(void* buf, size_t len, int flags) const override;
169153

170-
int Connect(const sockaddr*, socklen_t) const override { return 0; }
154+
int Connect(const sockaddr*, socklen_t) const override;
171155

172-
int Bind(const sockaddr*, socklen_t) const override { return 0; }
156+
int Bind(const sockaddr*, socklen_t) const override;
173157

174-
int Listen(int) const override { return 0; }
158+
int Listen(int) const override;
175159

176-
std::unique_ptr<Sock> Accept(sockaddr* addr, socklen_t* addr_len) const override
177-
{
178-
if (addr != nullptr) {
179-
// Pretend all connections come from 5.5.5.5:6789
180-
memset(addr, 0x00, *addr_len);
181-
const socklen_t write_len = static_cast<socklen_t>(sizeof(sockaddr_in));
182-
if (*addr_len >= write_len) {
183-
*addr_len = write_len;
184-
sockaddr_in* addr_in = reinterpret_cast<sockaddr_in*>(addr);
185-
addr_in->sin_family = AF_INET;
186-
memset(&addr_in->sin_addr, 0x05, sizeof(addr_in->sin_addr));
187-
addr_in->sin_port = htons(6789);
188-
}
189-
}
190-
return std::make_unique<StaticContentsSock>("");
191-
};
160+
std::unique_ptr<Sock> Accept(sockaddr* addr, socklen_t* addr_len) const override;
192161

193-
int GetSockOpt(int level, int opt_name, void* opt_val, socklen_t* opt_len) const override
194-
{
195-
std::memset(opt_val, 0x0, *opt_len);
196-
return 0;
197-
}
162+
int GetSockOpt(int level, int opt_name, void* opt_val, socklen_t* opt_len) const override;
198163

199-
int SetSockOpt(int, int, const void*, socklen_t) const override { return 0; }
164+
int SetSockOpt(int, int, const void*, socklen_t) const override;
200165

201-
int GetSockName(sockaddr* name, socklen_t* name_len) const override
202-
{
203-
std::memset(name, 0x0, *name_len);
204-
return 0;
205-
}
166+
int GetSockName(sockaddr* name, socklen_t* name_len) const override;
206167

207-
bool SetNonBlocking() const override { return true; }
168+
bool SetNonBlocking() const override;
208169

209-
bool IsSelectable() const override { return true; }
170+
bool IsSelectable() const override;
210171

211172
bool Wait(std::chrono::milliseconds timeout,
212173
Event requested,
213-
Event* occurred = nullptr) const override
214-
{
215-
if (occurred != nullptr) {
216-
*occurred = requested;
217-
}
218-
return true;
219-
}
174+
Event* occurred = nullptr) const override;
220175

221-
bool WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per_sock) const override
222-
{
223-
for (auto& [sock, events] : events_per_sock) {
224-
(void)sock;
225-
events.occurred = events.requested;
226-
}
227-
return true;
228-
}
176+
bool WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per_sock) const override;
229177

230-
bool IsConnected(std::string&) const override
231-
{
232-
return true;
233-
}
178+
bool IsConnected(std::string&) const override;
234179

235180
private:
236181
const std::string m_contents;

0 commit comments

Comments
 (0)