Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 15 additions & 6 deletions .github/workflows/make_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,11 @@ jobs:
-fsanitize=address,undefined -fno-omit-frame-pointer \
-D_POSIX_C_SOURCE=200112L -Iinclude -Iinclude/mnet -Isrc -pthread"
for t in test_mnet test_http test_mnet_parser test_stress test_features test_security test_client test_welcome test_starvation test_reentrancy test_http_edge; do
gcc $CFLAGS src/mnet.c src/mnet_app.c src/mnet_response.c \
src/mnet_request.c src/mnet_router.c test/$t.c -o ${t}_asan || exit 1
gcc $CFLAGS src/mnet.c src/mnet_app.c src/mnet_client.c \
src/mnet_dispatch.c src/mnet_handlers.c src/mnet_log.c \
src/mnet_parse.c src/mnet_response.c \
src/mnet_request.c src/mnet_router.c src/mnet_server.c \
test/$t.c -o ${t}_asan || exit 1
done

- name: Run unit tests under ASan/UBSan
Expand Down Expand Up @@ -174,14 +177,20 @@ jobs:
gcc -std=c17 -Wall -Wextra -Wpedantic -Werror -g \
-fsanitize=thread -D_POSIX_C_SOURCE=200112L \
-Iinclude -Iinclude/mnet -Isrc -pthread \
src/mnet.c src/mnet_app.c src/mnet_response.c \
src/mnet_request.c src/mnet_router.c test/test_mnet_parser.c \
src/mnet.c src/mnet_app.c src/mnet_client.c \
src/mnet_dispatch.c src/mnet_handlers.c src/mnet_log.c \
src/mnet_parse.c src/mnet_response.c \
src/mnet_request.c src/mnet_router.c src/mnet_server.c \
test/test_mnet_parser.c \
-o test_parser_tsan
gcc -std=c17 -Wall -Wextra -Wpedantic -Werror -g \
-fsanitize=thread -D_POSIX_C_SOURCE=200112L \
-Iinclude -Iinclude/mnet -Isrc -pthread \
src/mnet.c src/mnet_app.c src/mnet_response.c \
src/mnet_request.c src/mnet_router.c test/test_stress.c \
src/mnet.c src/mnet_app.c src/mnet_client.c \
src/mnet_dispatch.c src/mnet_handlers.c src/mnet_log.c \
src/mnet_parse.c src/mnet_response.c \
src/mnet_request.c src/mnet_router.c src/mnet_server.c \
test/test_stress.c \
-o test_stress_tsan

- name: Run parser and concurrency tests under TSan
Expand Down
28 changes: 17 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,15 @@ endif()
set(MNET_SOURCES
src/mnet.c
src/mnet_app.c
src/mnet_client.c
src/mnet_dispatch.c
src/mnet_handlers.c
src/mnet_log.c
src/mnet_parse.c
src/mnet_response.c
src/mnet_request.c
src/mnet_router.c
src/mnet_server.c
)

# Static library
Expand Down Expand Up @@ -102,57 +108,57 @@ target_include_directories(example_combined PRIVATE example)
enable_testing()
add_executable(test_mnet test/test_mnet.c)
target_link_libraries(test_mnet PRIVATE mnet_static)
target_include_directories(test_mnet PRIVATE include src test)
target_include_directories(test_mnet PRIVATE include include/mnet src test)
add_test(NAME mnet_tests COMMAND test_mnet)

add_executable(test_http test/test_http.c)
target_link_libraries(test_http PRIVATE mnet_static)
target_include_directories(test_http PRIVATE include src test)
target_include_directories(test_http PRIVATE include include/mnet src test)
add_test(NAME mnet_http_tests COMMAND test_http)

add_executable(test_parser test/test_mnet_parser.c)
target_link_libraries(test_parser PRIVATE mnet_static)
target_include_directories(test_parser PRIVATE include src test)
target_include_directories(test_parser PRIVATE include include/mnet src test)
add_test(NAME mnet_parser_tests COMMAND test_parser)

add_executable(test_stress test/test_stress.c)
target_link_libraries(test_stress PRIVATE mnet_static)
target_include_directories(test_stress PRIVATE include src test)
target_include_directories(test_stress PRIVATE include include/mnet src test)
add_test(NAME mnet_stress_tests COMMAND test_stress)

add_executable(test_features test/test_features.c)
target_link_libraries(test_features PRIVATE mnet_static)
target_include_directories(test_features PRIVATE include src test)
target_include_directories(test_features PRIVATE include include/mnet src test)
add_test(NAME mnet_feature_tests COMMAND test_features)

add_executable(test_security test/test_security.c)
target_link_libraries(test_security PRIVATE mnet_static)
target_include_directories(test_security PRIVATE include src test)
target_include_directories(test_security PRIVATE include include/mnet src test)
add_test(NAME mnet_security_tests COMMAND test_security)

add_executable(test_client test/test_client.c)
target_link_libraries(test_client PRIVATE mnet_static)
target_include_directories(test_client PRIVATE include src test)
target_include_directories(test_client PRIVATE include include/mnet src test)
add_test(NAME mnet_client_tests COMMAND test_client)

add_executable(test_welcome test/test_welcome.c)
target_link_libraries(test_welcome PRIVATE mnet_static)
target_include_directories(test_welcome PRIVATE include src test)
target_include_directories(test_welcome PRIVATE include include/mnet src test)
add_test(NAME mnet_welcome_tests COMMAND test_welcome)

add_executable(test_starvation test/test_starvation.c)
target_link_libraries(test_starvation PRIVATE mnet_static)
target_include_directories(test_starvation PRIVATE include src test)
target_include_directories(test_starvation PRIVATE include include/mnet src test)
add_test(NAME mnet_starvation_tests COMMAND test_starvation)

add_executable(test_reentrancy test/test_reentrancy.c)
target_link_libraries(test_reentrancy PRIVATE mnet_static)
target_include_directories(test_reentrancy PRIVATE include src test)
target_include_directories(test_reentrancy PRIVATE include include/mnet src test)
add_test(NAME mnet_reentrancy_tests COMMAND test_reentrancy)

add_executable(test_http_edge test/test_http_edge.c)
target_link_libraries(test_http_edge PRIVATE mnet_static)
target_include_directories(test_http_edge PRIVATE include src test)
target_include_directories(test_http_edge PRIVATE include include/mnet src test)
add_test(NAME mnet_http_edge_tests COMMAND test_http_edge)

# Tests are assert()-based, and CMake's Release configs define NDEBUG, which
Expand Down
6 changes: 4 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,10 @@ else
endif

# Library source files for mnet
SRCS = src/mnet.c src/mnet_app.c src/mnet_response.c \
src/mnet_request.c src/mnet_router.c
SRCS = src/mnet.c src/mnet_app.c src/mnet_client.c src/mnet_dispatch.c \
src/mnet_handlers.c src/mnet_log.c src/mnet_parse.c \
src/mnet_response.c src/mnet_request.c src/mnet_router.c \
src/mnet_server.c

TEST_SRCS = test/test_mnet.c test/test_http.c test/test_mnet_parser.c \
test/test_stress.c test/test_features.c test/test_security.c \
Expand Down
28 changes: 17 additions & 11 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,15 @@ endif
mnet_sources = files(
'src/mnet.c',
'src/mnet_app.c',
'src/mnet_client.c',
'src/mnet_dispatch.c',
'src/mnet_handlers.c',
'src/mnet_log.c',
'src/mnet_parse.c',
'src/mnet_response.c',
'src/mnet_request.c',
'src/mnet_router.c',
'src/mnet_server.c',
)

# Include directories
Expand Down Expand Up @@ -113,87 +119,87 @@ example_combined = executable('example_combined',
test_mnet = executable('test_mnet',
'test/test_mnet.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_tests', test_mnet)

test_http = executable('test_http',
'test/test_http.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_http_tests', test_http)

test_parser = executable('test_parser',
'test/test_mnet_parser.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_parser_tests', test_parser)

test_stress = executable('test_stress',
'test/test_stress.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_stress_tests', test_stress)

test_features = executable('test_features',
'test/test_features.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_feature_tests', test_features)

test_security = executable('test_security',
'test/test_security.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_security_tests', test_security)

test_starvation = executable('test_starvation',
'test/test_starvation.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_starvation_tests', test_starvation)

test_reentrancy = executable('test_reentrancy',
'test/test_reentrancy.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_reentrancy_tests', test_reentrancy)

test_http_edge = executable('test_http_edge',
'test/test_http_edge.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_http_edge_tests', test_http_edge)

test_client = executable('test_client',
'test/test_client.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_client_tests', test_client)

test_welcome = executable('test_welcome',
'test/test_welcome.c',
link_with: mnet_static,
include_directories: [mnet_inc, include_directories('src'), include_directories('test')],
include_directories: [mnet_inc, mnet_priv_inc, include_directories('src'), include_directories('test')],
)

test('mnet_welcome_tests', test_welcome)
Expand Down
Loading
Loading