Skip to content

Commit 7b0ee85

Browse files
committed
fix(ci): resolve GCC -Werror warnings, fix posix socket types, enable ctest
1 parent d94f842 commit 7b0ee85

9 files changed

Lines changed: 44 additions & 8 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
2222

2323
- name: Build
24-
run: cmake --build build --config Release --parallel
24+
run: cmake --build build --config Release --parallel --verbose
2525

2626
- name: Test
2727
run: ctest --test-dir build -C Release --output-on-failure

CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ include_directories(${CMAKE_SOURCE_DIR}/include)
1616
set(THREADS_PREFER_PTHREAD_FLAG ON)
1717
find_package(Threads REQUIRED)
1818

19+
enable_testing()
20+
1921
set(SOURCES
2022
src/main.cpp
2123
src/Logger.cpp
@@ -52,6 +54,7 @@ set(TEST_SOURCES
5254
)
5355
add_executable(HttpServerTests ${TEST_SOURCES})
5456
target_link_libraries(HttpServerTests PRIVATE Threads::Threads)
57+
add_test(NAME HttpServerTests COMMAND HttpServerTests)
5558

5659
set(SOCKET_TEST_SOURCES
5760
tests/SocketTests.cpp
@@ -65,6 +68,7 @@ if(WIN32)
6568
else()
6669
target_link_libraries(SocketTests PRIVATE Threads::Threads)
6770
endif()
71+
add_test(NAME SocketTests COMMAND SocketTests)
6872

6973
set(TCP_SERVER_TEST_SOURCES
7074
tests/TcpServerTests.cpp
@@ -92,6 +96,7 @@ if(WIN32)
9296
else()
9397
target_link_libraries(TcpServerTests PRIVATE Threads::Threads)
9498
endif()
99+
add_test(NAME TcpServerTests COMMAND TcpServerTests)
95100

96101
set(HTTP_REQUEST_TEST_SOURCES
97102
tests/HttpRequestTests.cpp
@@ -100,13 +105,15 @@ set(HTTP_REQUEST_TEST_SOURCES
100105
)
101106
add_executable(HttpRequestTests ${HTTP_REQUEST_TEST_SOURCES})
102107
target_link_libraries(HttpRequestTests PRIVATE Threads::Threads)
108+
add_test(NAME HttpRequestTests COMMAND HttpRequestTests)
103109

104110
set(HTTP_RESPONSE_TEST_SOURCES
105111
tests/HttpResponseTests.cpp
106112
src/HttpResponse.cpp
107113
)
108114
add_executable(HttpResponseTests ${HTTP_RESPONSE_TEST_SOURCES})
109115
target_link_libraries(HttpResponseTests PRIVATE Threads::Threads)
116+
add_test(NAME HttpResponseTests COMMAND HttpResponseTests)
110117

111118
set(HTTP_PARSER_TEST_SOURCES
112119
tests/HttpParserTests.cpp
@@ -116,6 +123,7 @@ set(HTTP_PARSER_TEST_SOURCES
116123
)
117124
add_executable(HttpParserTests ${HTTP_PARSER_TEST_SOURCES})
118125
target_link_libraries(HttpParserTests PRIVATE Threads::Threads)
126+
add_test(NAME HttpParserTests COMMAND HttpParserTests)
119127

120128
set(INTEGRATION_TEST_SOURCES
121129
tests/IntegrationTests.cpp
@@ -141,6 +149,7 @@ if(WIN32)
141149
else()
142150
target_link_libraries(IntegrationTests PRIVATE Threads::Threads)
143151
endif()
152+
add_test(NAME IntegrationTests COMMAND IntegrationTests)
144153

145154
set(ROUTER_TEST_SOURCES
146155
tests/RouterTests.cpp
@@ -158,6 +167,7 @@ set(ROUTER_TEST_SOURCES
158167
)
159168
add_executable(RouterTests ${ROUTER_TEST_SOURCES})
160169
target_link_libraries(RouterTests PRIVATE Threads::Threads)
170+
add_test(NAME RouterTests COMMAND RouterTests)
161171

162172
set(MIDDLEWARE_TEST_SOURCES
163173
tests/MiddlewareTests.cpp
@@ -175,6 +185,7 @@ set(MIDDLEWARE_TEST_SOURCES
175185
)
176186
add_executable(MiddlewareTests ${MIDDLEWARE_TEST_SOURCES})
177187
target_link_libraries(MiddlewareTests PRIVATE Threads::Threads)
188+
add_test(NAME MiddlewareTests COMMAND MiddlewareTests)
178189

179190
set(STATIC_FILE_TEST_SOURCES
180191
tests/StaticFileTests.cpp

benchmarks/BenchmarkRunner.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,11 @@ namespace {
177177
serverAddr.sin_port = htons(port);
178178
serverAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
179179

180+
#if defined(_WIN32) || defined(_WIN64)
180181
if (::connect(client.handle(), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
182+
#else
183+
if (::connect(static_cast<int>(client.handle()), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
184+
#endif
181185
throw std::runtime_error("Failed to connect to test server");
182186
}
183187
}

include/Metrics.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ class Metrics {
1919
void incrementTotalConnections();
2020
void addBytesReceived(std::uint64_t bytes);
2121
void addBytesSent(std::uint64_t bytes);
22-
void recordRequest() noexcept;
23-
void recordError() noexcept;
2422
void addProcessingTimeMicros(std::uint64_t micros) noexcept;
2523

2624
void recordKeepAliveSession(std::uint64_t requestsHandled) noexcept;

include/Middleware.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class BuiltInMiddleware {
3838
auto end = std::chrono::high_resolution_clock::now();
3939
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();
4040

41-
Metrics::getInstance().addProcessingTimeMicros(duration);
41+
Metrics::getInstance().addProcessingTimeMicros(static_cast<std::uint64_t>(duration));
4242
// Note: incrementRequests() is already handled in TcpServer.cpp,
4343
// to avoid double counting we don't increment it here, or we can move it.
4444
// The prompt says "Do not modify TcpServer", so we leave incrementRequests there.

include/ThreadPool.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class MoveOnlyTask {
2121
template <typename F>
2222
struct Model : Concept {
2323
F f;
24-
Model(F&& f) : f(std::move(f)) {}
24+
Model(F&& func) : f(std::move(func)) {}
2525
void invoke() override { f(); }
2626
};
2727

src/Socket.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,11 @@ void Socket::listen(int backlog) {
9595

9696
Socket Socket::accept() {
9797
sockaddr_in clientAddr{};
98+
#if defined(_WIN32) || defined(_WIN64)
9899
int clientAddrLen = sizeof(clientAddr);
100+
#else
101+
socklen_t clientAddrLen = sizeof(clientAddr);
102+
#endif
99103

100104
SocketHandle clientHandle = ::accept(m_handle, reinterpret_cast<sockaddr*>(&clientAddr), &clientAddrLen);
101105
if (clientHandle == InvalidHandle) {
@@ -106,7 +110,11 @@ Socket Socket::accept() {
106110
}
107111

108112
std::size_t Socket::send(const void* data, std::size_t size) {
113+
#if defined(_WIN32) || defined(_WIN64)
109114
int bytesSent = ::send(m_handle, static_cast<const char*>(data), static_cast<int>(size), 0);
115+
#else
116+
ssize_t bytesSent = ::send(m_handle, static_cast<const char*>(data), size, 0);
117+
#endif
110118
if (bytesSent < 0) {
111119
throw std::runtime_error("Failed to send data");
112120
}
@@ -131,7 +139,11 @@ std::size_t Socket::sendAll(const std::string& data) {
131139

132140
std::string Socket::receive(std::size_t maxBytes) {
133141
std::vector<char> buffer(maxBytes);
142+
#if defined(_WIN32) || defined(_WIN64)
134143
int bytesReceived = ::recv(m_handle, buffer.data(), static_cast<int>(maxBytes), 0);
144+
#else
145+
ssize_t bytesReceived = ::recv(m_handle, buffer.data(), maxBytes, 0);
146+
#endif
135147

136148
if (bytesReceived < 0) {
137149
throw std::runtime_error("Failed to receive data");

tests/IntegrationTests.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@ void testEndToEndGet() {
3737
// 127.0.0.1
3838
serverAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
3939

40+
#if defined(_WIN32) || defined(_WIN64)
4041
if (::connect(client.handle(), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
42+
#else
43+
if (::connect(static_cast<int>(client.handle()), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
44+
#endif
4145
throw std::runtime_error("Failed to connect to test server");
4246
}
4347

@@ -72,7 +76,11 @@ void testEndToEndPost() {
7276
serverAddr.sin_port = htons(8081);
7377
serverAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
7478

79+
#if defined(_WIN32) || defined(_WIN64)
7580
if (::connect(client.handle(), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
81+
#else
82+
if (::connect(static_cast<int>(client.handle()), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
83+
#endif
7684
throw std::runtime_error("Failed to connect to test server");
7785
}
7886

@@ -105,7 +113,7 @@ void testEndToEndFragmentation() {
105113
serverAddr.sin_port = htons(8082);
106114
serverAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
107115

108-
if (::connect(client.handle(), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
116+
if (::connect(static_cast<int>(client.handle()), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
109117
throw std::runtime_error("Failed to connect to test server");
110118
}
111119

@@ -142,7 +150,7 @@ void testEndToEndBadRequest() {
142150
serverAddr.sin_port = htons(8083);
143151
serverAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
144152

145-
if (::connect(client.handle(), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
153+
if (::connect(static_cast<int>(client.handle()), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
146154
throw std::runtime_error("Failed to connect to test server");
147155
}
148156

tests/KeepAliveTests.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include <cassert>
1212
#include <thread>
1313
#include <chrono>
14-
#include <chrono>
1514

1615
#if defined(_WIN32) || defined(_WIN64)
1716
#include <winsock2.h>
@@ -28,7 +27,11 @@ void connectSocket(Socket& client, std::uint16_t port) {
2827
serverAddr.sin_port = htons(port);
2928
serverAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
3029

30+
#if defined(_WIN32) || defined(_WIN64)
3131
if (::connect(client.handle(), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
32+
#else
33+
if (::connect(static_cast<int>(client.handle()), reinterpret_cast<sockaddr*>(&serverAddr), sizeof(serverAddr)) < 0) {
34+
#endif
3235
throw std::runtime_error("Failed to connect to test server");
3336
}
3437
}

0 commit comments

Comments
 (0)