Skip to content

Commit d9dffdc

Browse files
committed
Use the same port for all HttpServerTest tests
1 parent 3931eb2 commit d9dffdc

File tree

1 file changed

+48
-37
lines changed

1 file changed

+48
-37
lines changed

test/HttpServerTest.cpp

Lines changed: 48 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
#include <netinet/in.h>
55
#include <string>
66

7-
class HttpServerTest : public ::testing::Test {};
7+
class HttpServerTest : public ::testing::Test {
8+
public:
9+
static constexpr int port {8081};
10+
};
811

912
TEST(ServerTest, ConstructorDestructorTest) {
1013
HttpServer server {};
@@ -15,15 +18,15 @@ TEST(HttpServerTest, AcceptsHttpRequest) {
1518
server.get_mapping("/", [](const HttpServer::Request&, HttpServer::Response& res) {
1619
res.body = "test";
1720
});
18-
server.start_listening(8081);
21+
server.start_listening(HttpServerTest::port);
1922

20-
std::this_thread::sleep_for(std::chrono::milliseconds(10));
23+
std::this_thread::sleep_for(std::chrono::milliseconds(1));
2124

2225
int sock = socket(AF_INET, SOCK_STREAM, 0);
2326

2427
sockaddr_in addr{};
2528
addr.sin_family = AF_INET;
26-
addr.sin_port = htons(8081);
29+
addr.sin_port = htons(HttpServerTest::port);
2730
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
2831

2932
ASSERT_EQ(connect(sock, reinterpret_cast<sockaddr *>(&addr), sizeof(addr)), 0);
@@ -48,15 +51,15 @@ TEST(HttpServerTest, AcceptGetRequest) {
4851
server.get_mapping("/hello", [](const HttpServer::Request&, HttpServer::Response& res){
4952
res.body = "hello, world";
5053
});
51-
server.start_listening(8082);
54+
server.start_listening(HttpServerTest::port);
5255

5356
std::this_thread::sleep_for(std::chrono::milliseconds(1));
5457

5558
int sock = socket(AF_INET, SOCK_STREAM, 0);
5659

5760
sockaddr_in addr{};
5861
addr.sin_family = AF_INET;
59-
addr.sin_port = htons(8082);
62+
addr.sin_port = htons(HttpServerTest::port);
6063
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
6164

6265
ASSERT_EQ(connect(sock, reinterpret_cast<sockaddr *>(&addr), sizeof(addr)), 0);
@@ -79,15 +82,15 @@ TEST(HttpServerTest, IgnoreGetReqBody) {
7982
server.get_mapping("/hello", [](const HttpServer::Request& req, HttpServer::Response& res){
8083
res.body = req.body;
8184
});
82-
server.start_listening(8083);
85+
server.start_listening(HttpServerTest::port);
8386

8487
std::this_thread::sleep_for(std::chrono::milliseconds(1));
8588

8689
int sock = socket(AF_INET, SOCK_STREAM, 0);
8790

8891
sockaddr_in addr{};
8992
addr.sin_family = AF_INET;
90-
addr.sin_port = htons(8083);
93+
addr.sin_port = htons(HttpServerTest::port);
9194
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
9295

9396
ASSERT_EQ(connect(sock, reinterpret_cast<sockaddr *>(&addr), sizeof(addr)), 0);
@@ -108,36 +111,44 @@ TEST(HttpServerTest, IgnoreGetReqBody) {
108111
}
109112

110113
TEST(HttpServerTest, DoesntIgnorePostReqBody) {
111-
HttpServer server {};
112-
server.post_mapping("/post-foo", [](const HttpServer::Request& req, HttpServer::Response& res){
113-
res.body = req.body;
114-
});
115-
server.start_listening(8084);
114+
try {
115+
HttpServer server {};
116+
server.post_mapping("/foo", [](const HttpServer::Request& req, HttpServer::Response& res){
117+
res.body = req.body;
118+
});
119+
server.start_listening(HttpServerTest::port);
116120

117-
std::this_thread::sleep_for(std::chrono::milliseconds(1));
121+
std::this_thread::sleep_for(std::chrono::milliseconds(1));
118122

119-
int sock = socket(AF_INET, SOCK_STREAM, 0);
123+
int sock = socket(AF_INET, SOCK_STREAM, 0);
120124

121-
sockaddr_in addr{};
122-
addr.sin_family = AF_INET;
123-
addr.sin_port = htons(8084);
124-
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
125+
sockaddr_in addr{};
126+
addr.sin_family = AF_INET;
127+
addr.sin_port = htons(HttpServerTest::port);
128+
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
125129

126-
ASSERT_EQ(connect(sock, reinterpret_cast<sockaddr *>(&addr), sizeof(addr)), 0);
130+
ASSERT_EQ(connect(sock, reinterpret_cast<sockaddr *>(&addr), sizeof(addr)), 0);
127131

128-
const char* request = "POST /post-foo HTTP/1.1\r\n\r\nhello, world";
129-
send(sock, request, strlen(request), 0);
132+
std::string request = "POST /foo HTTP/1.1\r\n"
133+
"Host: localhost\r\n"
134+
"Connection: keep-alive\r\n"
135+
"Content-Length: 5\r\n"
136+
"\r\n"
137+
"hello";
130138

131-
char buffer[1024] {};
132-
int bytes = recv(sock, buffer, sizeof(buffer), 0);
133-
std::string result = std::string(buffer);
139+
send(sock, request.c_str(), request.size(), 0);
134140

135-
EXPECT_GT(bytes, 0);
141+
char buffer[1024] {};
142+
int bytes = recv(sock, buffer, sizeof(buffer), 0);
143+
std::string result = std::string(buffer);
136144

137-
// Should find "hello, world" as setting the request body
138-
ASSERT_TRUE(result.find("hello, world") != std::string::npos);
145+
EXPECT_GT(bytes, 0);
146+
ASSERT_TRUE(result.find("hello") != std::string::npos);
139147

140-
close(sock);
148+
close(sock);
149+
} catch (const std::exception& e) {
150+
FAIL() << "Exception occurred: " << e.what();
151+
}
141152
}
142153

143154
TEST(HttpServerTest, AllUniqueReqMethods) {
@@ -172,13 +183,13 @@ TEST(HttpServerTest, AllUniqueReqMethods) {
172183
res.body = "8";
173184
});
174185

175-
server.start_listening(8085);
186+
server.start_listening(HttpServerTest::port);
176187

177188
std::this_thread::sleep_for(std::chrono::milliseconds(1));
178189

179190
sockaddr_in addr{};
180191
addr.sin_family = AF_INET;
181-
addr.sin_port = htons(8085);
192+
addr.sin_port = htons(HttpServerTest::port);
182193
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
183194

184195
const std::string methods[9] = { "GET", "POST", "PUT", "PATCH", "OPTIONS", "HEAD", "DELETE", "CONNECT", "TRACE" };
@@ -205,12 +216,12 @@ TEST(HttpServerTest, AllUniqueReqMethods) {
205216

206217
TEST(HttpServerTest, HandleNonExistentGetRoute) {
207218
HttpServer server {};
208-
server.start_listening(8086);
219+
server.start_listening(HttpServerTest::port);
209220
std::this_thread::sleep_for(std::chrono::milliseconds(1));
210221

211222
sockaddr_in addr{};
212223
addr.sin_family = AF_INET;
213-
addr.sin_port = htons(8086);
224+
addr.sin_port = htons(HttpServerTest::port);
214225
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
215226

216227
std::string request = "GET /foo HTTP/1.1\r\n"
@@ -238,12 +249,12 @@ TEST(HttpServerTest, HandleNonExistentGetRoute) {
238249
*/
239250
TEST(HttpServerTest, HandleNonExistentPostRoute) {
240251
HttpServer server {};
241-
server.start_listening(8087);
252+
server.start_listening(HttpServerTest::port);
242253
std::this_thread::sleep_for(std::chrono::milliseconds(1));
243254

244255
sockaddr_in addr{};
245256
addr.sin_family = AF_INET;
246-
addr.sin_port = htons(8087);
257+
addr.sin_port = htons(HttpServerTest::port);
247258
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
248259

249260
std::string request = "POST /foo HTTP/1.1\r\n"
@@ -267,12 +278,12 @@ TEST(HttpServerTest, HandleNonExistentPostRoute) {
267278

268279
TEST(HttpServerTest, HandleNonExistentHttpMethod) {
269280
HttpServer server {};
270-
server.start_listening(8088);
281+
server.start_listening(HttpServerTest::port);
271282
std::this_thread::sleep_for(std::chrono::milliseconds(1));
272283

273284
sockaddr_in addr{};
274285
addr.sin_family = AF_INET;
275-
addr.sin_port = htons(8088);
286+
addr.sin_port = htons(HttpServerTest::port);
276287
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
277288

278289
std::string request = "FOO /foo HTTP/1.1\r\n"

0 commit comments

Comments
 (0)