From 49dad19c541a0430dba94f330f2f3a59cd6531fb Mon Sep 17 00:00:00 2001 From: Chris McFarlen Date: Fri, 25 Aug 2023 14:32:17 -0500 Subject: [PATCH 1/6] cmake: add tests for proxy/hdrs --- CMakeLists.txt | 3 +++ iocore/eventsystem/CMakeLists.txt | 4 ---- proxy/hdrs/CMakeLists.txt | 25 +++++++++++++++++++++++++ src/traffic_layout/CMakeLists.txt | 4 ---- src/tscore/CMakeLists.txt | 6 +++--- 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d1ec272f51..fd2f4696260 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -305,6 +305,9 @@ endif() # Catch2 for tests set(CATCH_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/lib/catch2) +add_library(catch::catch INTERFACE IMPORTED) +target_include_directories(catch::catch INTERFACE ${CMAKE_SOURCE_DIR}/include ${CATCH_INCLUDE_DIR}) + include(CTest) set(TS_HAS_TESTS ${BUILD_REGRESSION_TESTING}) diff --git a/iocore/eventsystem/CMakeLists.txt b/iocore/eventsystem/CMakeLists.txt index aa0c3fc0fe2..b50524c66a4 100644 --- a/iocore/eventsystem/CMakeLists.txt +++ b/iocore/eventsystem/CMakeLists.txt @@ -49,7 +49,3 @@ target_link_libraries(inkevent tscpputil # transitive yaml-cpp::yaml-cpp # transitive ) - -if(TS_USE_HWLOC) - target_link_libraries(inkevent PRIVATE hwloc::hwloc) -endif() diff --git a/proxy/hdrs/CMakeLists.txt b/proxy/hdrs/CMakeLists.txt index b27ac2dd20d..e74adb868a0 100644 --- a/proxy/hdrs/CMakeLists.txt +++ b/proxy/hdrs/CMakeLists.txt @@ -46,3 +46,28 @@ target_link_libraries(hdrs PRIVATE ts::inkevent ) + +add_executable(test_proxy_hdrs + unit_tests/test_HdrHeap.cc + unit_tests/test_Hdrs.cc + unit_tests/test_HdrUtils.cc + unit_tests/test_HdrHeap.cc + unit_tests/test_HeaderValidator.cc + unit_tests/test_mime.cc + unit_tests/test_URL.cc + unit_tests/unit_test_main.cc +) +target_link_libraries(test_proxy_hdrs PRIVATE ts::hdrs ts::tscore ts::inkevent catch::catch) +add_test(NAME test_proxy_hdrs COMMAND $) + +add_executable(test_proxy_hdrs_xpack + XPACK.cc + HuffmanCodec.cc + unit_tests/test_XPACK.cc +) +target_include_directories(test_proxy_hdrs_xpack PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(test_proxy_hdrs_xpack PRIVATE ts::tscore libswoc catch::catch) +add_test(NAME test_proxy_hdrs_xpack COMMAND $) + +add_executable(test_huffmancode test_Huffmancode.cc HuffmanCodec.cc) +target_link_libraries(test_huffmancode PRIVATE ts::tscore libswoc) diff --git a/src/traffic_layout/CMakeLists.txt b/src/traffic_layout/CMakeLists.txt index 7a02a6a5075..6e68a9fa0b2 100644 --- a/src/traffic_layout/CMakeLists.txt +++ b/src/traffic_layout/CMakeLists.txt @@ -34,10 +34,6 @@ target_link_libraries(traffic_layout ${OPENSSL_LIBRARY} ) -if(TS_USE_HWLOC) - target_link_libraries(traffic_layout PRIVATE hwloc::hwloc) -endif() - if(HAVE_LZMA_H) target_link_libraries(traffic_layout PRIVATE LibLZMA::LibLZMA) endif() diff --git a/src/tscore/CMakeLists.txt b/src/tscore/CMakeLists.txt index cae7bdc15c0..f874bda201f 100644 --- a/src/tscore/CMakeLists.txt +++ b/src/tscore/CMakeLists.txt @@ -124,6 +124,9 @@ target_link_libraries(tscore if(TS_USE_POSIX_CAP) target_link_libraries(tscore PUBLIC cap::cap) endif() +if(TS_USE_HWLOC) + target_link_libraries(tscore PUBLIC hwloc::hwloc) +endif() add_dependencies(tscore ParseRules) target_include_directories(tscore PRIVATE @@ -172,9 +175,6 @@ target_link_libraries(test_tscore OpenSSL::Crypto OpenSSL::SSL ) -if(TS_USE_HWLOC) - target_link_libraries(test_tscore PRIVATE hwloc::hwloc) -endif() target_include_directories(test_tscore PRIVATE ${CMAKE_SOURCE_DIR}/include ${CATCH_INCLUDE_DIR}) add_test(NAME test_tscore COMMAND $) From ab7ea698ca0b2a4e40bbf1dcfbd00e06381c50fa Mon Sep 17 00:00:00 2001 From: Chris McFarlen Date: Fri, 25 Aug 2023 15:30:08 -0500 Subject: [PATCH 2/6] convert huffman test to catch --- proxy/hdrs/CMakeLists.txt | 4 +- proxy/hdrs/Makefile.am | 11 +---- .../hdrs/{ => unit_tests}/test_Huffmancode.cc | 47 +++++++------------ proxy/hdrs/unit_tests/unit_test_main.cc | 3 ++ 4 files changed, 23 insertions(+), 42 deletions(-) rename proxy/hdrs/{ => unit_tests}/test_Huffmancode.cc (95%) diff --git a/proxy/hdrs/CMakeLists.txt b/proxy/hdrs/CMakeLists.txt index e74adb868a0..2946891a069 100644 --- a/proxy/hdrs/CMakeLists.txt +++ b/proxy/hdrs/CMakeLists.txt @@ -53,6 +53,7 @@ add_executable(test_proxy_hdrs unit_tests/test_HdrUtils.cc unit_tests/test_HdrHeap.cc unit_tests/test_HeaderValidator.cc + unit_tests/test_Huffmancode.cc unit_tests/test_mime.cc unit_tests/test_URL.cc unit_tests/unit_test_main.cc @@ -68,6 +69,3 @@ add_executable(test_proxy_hdrs_xpack target_include_directories(test_proxy_hdrs_xpack PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(test_proxy_hdrs_xpack PRIVATE ts::tscore libswoc catch::catch) add_test(NAME test_proxy_hdrs_xpack COMMAND $) - -add_executable(test_huffmancode test_Huffmancode.cc HuffmanCodec.cc) -target_link_libraries(test_huffmancode PRIVATE ts::tscore libswoc) diff --git a/proxy/hdrs/Makefile.am b/proxy/hdrs/Makefile.am index ad7bc804ad2..2aa0b66e3d9 100644 --- a/proxy/hdrs/Makefile.am +++ b/proxy/hdrs/Makefile.am @@ -69,7 +69,6 @@ load_http_hdr_LDADD = check_PROGRAMS = \ test_proxy_hdrs \ test_hdr_heap \ - test_Huffmancode \ test_XPACK TESTS = $(check_PROGRAMS) @@ -83,6 +82,7 @@ test_proxy_hdrs_SOURCES = \ unit_tests/test_HdrUtils.cc \ unit_tests/test_URL.cc \ unit_tests/test_mime.cc \ + unit_tests/test_Huffmancode.cc \ unit_tests/test_HeaderValidator.cc test_proxy_hdrs_LDFLAGS = @AM_LDFLAGS@ @SWOC_LDFLAGS@ @YAMLCPP_LDFLAGS@ @OPENSSL_LDFLAGS@ @@ -112,15 +112,6 @@ test_hdr_heap_LDADD = \ @SWOC_LIBS@ @HWLOC_LIBS@ \ @LIBPCRE@ @OPENSSL_LIBS@ @LIBCAP@ -test_Huffmancode_LDADD = \ - $(top_builddir)/src/tscore/libtscore.a \ - $(top_builddir)/src/tscpp/util/libtscpputil.la - -test_Huffmancode_SOURCES = \ - test_Huffmancode.cc \ - HuffmanCodec.cc \ - HuffmanCodec.h - test_XPACK_CPPFLAGS = \ $(AM_CPPFLAGS) \ -I$(abs_top_srcdir)/lib/catch2 diff --git a/proxy/hdrs/test_Huffmancode.cc b/proxy/hdrs/unit_tests/test_Huffmancode.cc similarity index 95% rename from proxy/hdrs/test_Huffmancode.cc rename to proxy/hdrs/unit_tests/test_Huffmancode.cc index d3ce28f0fef..a6825b2aa0d 100644 --- a/proxy/hdrs/test_Huffmancode.cc +++ b/proxy/hdrs/unit_tests/test_Huffmancode.cc @@ -26,6 +26,7 @@ #include #include #include +#include "catch.hpp" using namespace std; @@ -88,13 +89,20 @@ random_test() free(dst_start); } +TEST_CASE("Huffmancode Random", "[proxy][huffman]") +{ + // This doesn't check anything ... + for (int i = 0; i < 100; i++) { + random_test(); + } +} + union Value { uint32_t x; uint8_t y[4]; }; -void -values_test() +TEST_CASE("values_test", "[proxy][huffman]") { char dst_start[4]; int size = sizeof(test_values) / 4; @@ -139,11 +147,11 @@ values_test() // EOS is treated as invalid so check for an error if (value == 0x3fffffff) { - assert(bytes == -1); + REQUIRE(bytes == -1); continue; } - assert(dst_start[0] == ascii_value); - assert(bytes == 1); + REQUIRE(dst_start[0] == ascii_value); + REQUIRE(bytes == 1); } } @@ -164,22 +172,20 @@ const static struct { 17 } }; -void -encode_test() +TEST_CASE("encode_test", "[proxy][huffman]") { for (const auto &i : huffman_encode_test_data) { uint8_t *dst = static_cast(malloc(i.expect_len)); int64_t encoded_len = huffman_encode(dst, i.src, i.src_len); - assert(encoded_len == i.expect_len); - assert(memcmp(i.expect, dst, encoded_len) == 0); + REQUIRE(encoded_len == i.expect_len); + REQUIRE(memcmp(i.expect, dst, encoded_len) == 0); free(dst); } } -void -decode_errors_test() +TEST_CASE("decode_errors", "[proxy][huffman]") { const static struct { char *input; @@ -196,24 +202,7 @@ decode_errors_test() int dst_len = 2 * test_cases[i].input_len; char *dst = (char *)malloc(dst_len); int len = huffman_decode(dst, (uint8_t *)test_cases[i].input, test_cases[i].input_len); - assert(len == -1); + REQUIRE(len == -1); free(dst); } } - -int -main() -{ - hpack_huffman_init(); - - for (int i = 0; i < 100; i++) { - random_test(); - } - values_test(); - decode_errors_test(); - - hpack_huffman_fin(); - - encode_test(); - return 0; -} diff --git a/proxy/hdrs/unit_tests/unit_test_main.cc b/proxy/hdrs/unit_tests/unit_test_main.cc index 636c5ccbe5d..2467f755a72 100644 --- a/proxy/hdrs/unit_tests/unit_test_main.cc +++ b/proxy/hdrs/unit_tests/unit_test_main.cc @@ -22,6 +22,7 @@ */ #include "HTTP.h" +#include "HuffmanCodec.h" #define CATCH_CONFIG_RUNNER #include "catch.hpp" @@ -35,10 +36,12 @@ main(int argc, char *argv[]) cmd_disable_pfreelist = true; // Get all of the HTTP WKS items populated. http_init(); + hpack_huffman_init(); int result = Catch::Session().run(argc, argv); // global clean-up... + hpack_huffman_fin(); return result; } From e9073b77f744248f1c7783ea419649924c09cca0 Mon Sep 17 00:00:00 2001 From: Chris McFarlen Date: Tue, 29 Aug 2023 12:50:02 -0500 Subject: [PATCH 3/6] Use already existing catch2 target for tests --- CMakeLists.txt | 6 ------ proxy/hdrs/CMakeLists.txt | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fd2f4696260..9cfe56151d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -302,12 +302,6 @@ if(ENABLE_DOCS) find_program(PipEnv pipenv REQUIRED) endif() -# Catch2 for tests -set(CATCH_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/lib/catch2) - -add_library(catch::catch INTERFACE IMPORTED) -target_include_directories(catch::catch INTERFACE ${CMAKE_SOURCE_DIR}/include ${CATCH_INCLUDE_DIR}) - include(CTest) set(TS_HAS_TESTS ${BUILD_REGRESSION_TESTING}) diff --git a/proxy/hdrs/CMakeLists.txt b/proxy/hdrs/CMakeLists.txt index 2946891a069..198cf804201 100644 --- a/proxy/hdrs/CMakeLists.txt +++ b/proxy/hdrs/CMakeLists.txt @@ -58,7 +58,7 @@ add_executable(test_proxy_hdrs unit_tests/test_URL.cc unit_tests/unit_test_main.cc ) -target_link_libraries(test_proxy_hdrs PRIVATE ts::hdrs ts::tscore ts::inkevent catch::catch) +target_link_libraries(test_proxy_hdrs PRIVATE ts::hdrs ts::tscore ts::inkevent catch2::catch2) add_test(NAME test_proxy_hdrs COMMAND $) add_executable(test_proxy_hdrs_xpack @@ -67,5 +67,5 @@ add_executable(test_proxy_hdrs_xpack unit_tests/test_XPACK.cc ) target_include_directories(test_proxy_hdrs_xpack PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(test_proxy_hdrs_xpack PRIVATE ts::tscore libswoc catch::catch) +target_link_libraries(test_proxy_hdrs_xpack PRIVATE ts::tscore libswoc catch2::catch2) add_test(NAME test_proxy_hdrs_xpack COMMAND $) From b63aeaec4f5104944e6d1bba892d17630acdf229 Mon Sep 17 00:00:00 2001 From: Chris McFarlen Date: Tue, 29 Aug 2023 13:50:54 -0500 Subject: [PATCH 4/6] don't use generator expression for simple target commands --- proxy/hdrs/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proxy/hdrs/CMakeLists.txt b/proxy/hdrs/CMakeLists.txt index 198cf804201..1930f25d2d7 100644 --- a/proxy/hdrs/CMakeLists.txt +++ b/proxy/hdrs/CMakeLists.txt @@ -59,7 +59,7 @@ add_executable(test_proxy_hdrs unit_tests/unit_test_main.cc ) target_link_libraries(test_proxy_hdrs PRIVATE ts::hdrs ts::tscore ts::inkevent catch2::catch2) -add_test(NAME test_proxy_hdrs COMMAND $) +add_test(NAME test_proxy_hdrs COMMAND test_proxy_hdrs) add_executable(test_proxy_hdrs_xpack XPACK.cc @@ -68,4 +68,4 @@ add_executable(test_proxy_hdrs_xpack ) target_include_directories(test_proxy_hdrs_xpack PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(test_proxy_hdrs_xpack PRIVATE ts::tscore libswoc catch2::catch2) -add_test(NAME test_proxy_hdrs_xpack COMMAND $) +add_test(NAME test_proxy_hdrs_xpack COMMAND test_proxy_hdrs_xpack) From 83b331c0b1612eb9877d94906fb046fd03329454 Mon Sep 17 00:00:00 2001 From: Chris McFarlen Date: Tue, 29 Aug 2023 17:13:07 -0500 Subject: [PATCH 5/6] use catch2 target instead of include dir. undo hwloc link changes --- iocore/eventsystem/CMakeLists.txt | 4 ++++ src/api/CMakeLists.txt | 4 ++-- src/tests/CMakeLists.txt | 2 +- src/traffic_layout/CMakeLists.txt | 4 ++++ src/tscore/CMakeLists.txt | 6 +++++- src/tscpp/util/CMakeLists.txt | 4 ++-- 6 files changed, 18 insertions(+), 6 deletions(-) diff --git a/iocore/eventsystem/CMakeLists.txt b/iocore/eventsystem/CMakeLists.txt index b50524c66a4..aa0c3fc0fe2 100644 --- a/iocore/eventsystem/CMakeLists.txt +++ b/iocore/eventsystem/CMakeLists.txt @@ -49,3 +49,7 @@ target_link_libraries(inkevent tscpputil # transitive yaml-cpp::yaml-cpp # transitive ) + +if(TS_USE_HWLOC) + target_link_libraries(inkevent PRIVATE hwloc::hwloc) +endif() diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt index ad417a9a37b..57873748a2b 100644 --- a/src/api/CMakeLists.txt +++ b/src/api/CMakeLists.txt @@ -30,7 +30,7 @@ add_executable(test_Metrics test_Metrics.cc ) -target_link_libraries(test_Metrics PRIVATE tsapi tscore) -target_include_directories(test_Metrics PRIVATE ${CMAKE_SOURCE_DIR}/include ${CATCH_INCLUDE_DIR}) +target_link_libraries(test_Metrics PRIVATE tsapi tscore catch2::catch2) +target_include_directories(test_Metrics PRIVATE ${CMAKE_SOURCE_DIR}/include) add_test(NAME test_Metrics COMMAND $) diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 6ba08015e3a..567bd14ce5f 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -20,7 +20,6 @@ include_directories( ${IOCORE_INCLUDE_DIRS} ${PROXY_INCLUDE_DIRS} - ${CATCH_INCLUDE_DIR} ) link_libraries( @@ -55,6 +54,7 @@ link_libraries( inkevent yaml-cpp libswoc + catch2::catch2 ) if (TS_USE_LINUX_IO_URING) link_libraries(inkuring uring) diff --git a/src/traffic_layout/CMakeLists.txt b/src/traffic_layout/CMakeLists.txt index 6e68a9fa0b2..f4ff0b402c2 100644 --- a/src/traffic_layout/CMakeLists.txt +++ b/src/traffic_layout/CMakeLists.txt @@ -34,6 +34,10 @@ target_link_libraries(traffic_layout ${OPENSSL_LIBRARY} ) +if(TS_USE_HWLOC) + target_link_libraries(inkevent PRIVATE hwloc::hwloc) +endif() + if(HAVE_LZMA_H) target_link_libraries(traffic_layout PRIVATE LibLZMA::LibLZMA) endif() diff --git a/src/tscore/CMakeLists.txt b/src/tscore/CMakeLists.txt index f874bda201f..ebffeb7e6eb 100644 --- a/src/tscore/CMakeLists.txt +++ b/src/tscore/CMakeLists.txt @@ -174,7 +174,11 @@ target_link_libraries(test_tscore ts::tscpputil OpenSSL::Crypto OpenSSL::SSL + catch2::catch2 ) -target_include_directories(test_tscore PRIVATE ${CMAKE_SOURCE_DIR}/include ${CATCH_INCLUDE_DIR}) +if(TS_USE_HWLOC) + target_link_libraries(test_tscore PRIVATE hwloc::hwloc) +endif() +target_include_directories(test_tscore PRIVATE ${CMAKE_SOURCE_DIR}/include) add_test(NAME test_tscore COMMAND $) diff --git a/src/tscpp/util/CMakeLists.txt b/src/tscpp/util/CMakeLists.txt index ac0d9c63e12..0c9b8304dba 100644 --- a/src/tscpp/util/CMakeLists.txt +++ b/src/tscpp/util/CMakeLists.txt @@ -39,7 +39,7 @@ add_executable(test_tscpputil unit_tests/test_time_parser.cc unit_tests/unit_test_main.cc ) -target_link_libraries(test_tscpputil PRIVATE tscpputil libswoc) -target_include_directories(test_tscpputil PRIVATE ${CMAKE_SOURCE_DIR}/include ${CATCH_INCLUDE_DIR}) +target_link_libraries(test_tscpputil PRIVATE tscpputil libswoc catch2::catch2) +target_include_directories(test_tscpputil PRIVATE ${CMAKE_SOURCE_DIR}/include) add_test(NAME test_tscpputil COMMAND $) From 6cecd1ab7f6608a00c4db8762bc97f286ae03821 Mon Sep 17 00:00:00 2001 From: Chris McFarlen Date: Tue, 29 Aug 2023 19:11:35 -0500 Subject: [PATCH 6/6] use corrent target --- src/traffic_layout/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/traffic_layout/CMakeLists.txt b/src/traffic_layout/CMakeLists.txt index f4ff0b402c2..7a02a6a5075 100644 --- a/src/traffic_layout/CMakeLists.txt +++ b/src/traffic_layout/CMakeLists.txt @@ -35,7 +35,7 @@ target_link_libraries(traffic_layout ) if(TS_USE_HWLOC) - target_link_libraries(inkevent PRIVATE hwloc::hwloc) + target_link_libraries(traffic_layout PRIVATE hwloc::hwloc) endif() if(HAVE_LZMA_H)