This is an automated email from the ASF dual-hosted git repository. bcall pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push: new 0bde81a7fa Fix asan and valgrind issue with libswoc unit test (#11138) 0bde81a7fa is described below commit 0bde81a7fac7513ee19e0b6ce4f3c42cf27bc7ea Author: Bryan Call <bc...@apache.org> AuthorDate: Wed Mar 13 08:42:46 2024 -0700 Fix asan and valgrind issue with libswoc unit test (#11138) --- lib/swoc/unit_tests/ex_IntrusiveDList.cc | 6 +++++ lib/swoc/unit_tests/ex_MemArena.cc | 3 +++ lib/swoc/unit_tests/test_IntrusiveDList.cc | 37 ++++++++++++++++++++++++++++ lib/swoc/unit_tests/test_IntrusiveHashMap.cc | 13 +++++++++- lib/swoc/unit_tests/test_ip.cc | 2 +- 5 files changed, 59 insertions(+), 2 deletions(-) diff --git a/lib/swoc/unit_tests/ex_IntrusiveDList.cc b/lib/swoc/unit_tests/ex_IntrusiveDList.cc index 3c59a9ed47..a26f386662 100644 --- a/lib/swoc/unit_tests/ex_IntrusiveDList.cc +++ b/lib/swoc/unit_tests/ex_IntrusiveDList.cc @@ -212,4 +212,10 @@ TEST_CASE("IntrusiveDList Inheritance", "[libswoc][IntrusiveDList][example]") { } REQUIRE(priv2_list.head()->payload() == "Item 1"); REQUIRE(priv2_list.tail()->payload() == "Item 23"); + + // Delete everything in priv_list. + priv_list.apply([](PrivateThing *thing) { delete thing; }); + + // Delete everything in priv2_list. + priv2_list.apply([](PrivateThing2 *thing) { delete thing; }); } diff --git a/lib/swoc/unit_tests/ex_MemArena.cc b/lib/swoc/unit_tests/ex_MemArena.cc index a6f7098e57..e0e9a038f9 100644 --- a/lib/swoc/unit_tests/ex_MemArena.cc +++ b/lib/swoc/unit_tests/ex_MemArena.cc @@ -221,4 +221,7 @@ TEST_CASE("MemArena example", "[libswoc][MemArena][example]") { REQUIRE(arena.contains(ihm)); REQUIRE(arena.contains(thing)); REQUIRE(arena.contains(thing->name.data())); + + // Call the destructor for the IntrusiveHashMap to free anything it allocated. + ihm->~Map(); }; diff --git a/lib/swoc/unit_tests/test_IntrusiveDList.cc b/lib/swoc/unit_tests/test_IntrusiveDList.cc index 51f57a09e8..96c3e6f61e 100644 --- a/lib/swoc/unit_tests/test_IntrusiveDList.cc +++ b/lib/swoc/unit_tests/test_IntrusiveDList.cc @@ -118,6 +118,7 @@ TEST_CASE("IntrusiveDList", "[libswoc][IntrusiveDList]") { list.append(thing); list.erase(list.tail()); + delete thing; // this deletes "two" REQUIRE(list.count() == 3); REQUIRE(list.tail() != nullptr); REQUIRE(list.tail()->_payload == "muddle"); @@ -126,6 +127,9 @@ TEST_CASE("IntrusiveDList", "[libswoc][IntrusiveDList]") { list.insert_before(list.end(), new Thing("trailer")); REQUIRE(list.count() == 4); REQUIRE(list.tail()->_payload == "trailer"); + + // Delete everything in list. + list.apply([](Thing *thing) { delete thing; }); } TEST_CASE("IntrusiveDList list prefix", "[libswoc][IntrusiveDList]") { @@ -174,6 +178,21 @@ TEST_CASE("IntrusiveDList list prefix", "[libswoc][IntrusiveDList]") { REQUIRE(list_rest.head()->_payload == "16"); REQUIRE(list.count() == 0); REQUIRE(list.head() == nullptr); + + // Delete everything in list. + list.apply([](Thing *thing) { delete thing; }); + + // Delete everything in list_1. + list_1.apply([](Thing *thing) { delete thing; }); + + // Delete everything in list_5. + list_5.apply([](Thing *thing) { delete thing; }); + + // Delete everything in list_most. + list_most.apply([](Thing *thing) { delete thing; }); + + // Delete everything in list_rest. + list_rest.apply([](Thing *thing) { delete thing; }); } TEST_CASE("IntrusiveDList list suffix", "[libswoc][IntrusiveDList]") { @@ -230,6 +249,21 @@ TEST_CASE("IntrusiveDList list suffix", "[libswoc][IntrusiveDList]") { REQUIRE(list.tail()->_payload == "20"); REQUIRE(list.nth(7)->_payload == "8"); REQUIRE(list.nth(17)->_payload == "18"); + + // Delete everything in list. + list.apply([](Thing *thing) { delete thing; }); + + // Delete everything in list_1. + list_1.apply([](Thing *thing) { delete thing; }); + + // Delete everything in list_5. + list_5.apply([](Thing *thing) { delete thing; }); + + // Delete everything in list_most. + list_most.apply([](Thing *thing) { delete thing; }); + + // Delete everything in list_rest. + list_rest.apply([](Thing *thing) { delete thing; }); } TEST_CASE("IntrusiveDList Extra", "[libswoc][IntrusiveDList]") { @@ -269,4 +303,7 @@ TEST_CASE("IntrusiveDList Extra", "[libswoc][IntrusiveDList]") { bwprint(tmp, "{}", idx); REQUIRE(spot->_payload == tmp); } + + // Delete everything in list. + list.apply([](Thing *thing) { delete thing; }); } diff --git a/lib/swoc/unit_tests/test_IntrusiveHashMap.cc b/lib/swoc/unit_tests/test_IntrusiveHashMap.cc index aa228ba8e0..cd4db95329 100644 --- a/lib/swoc/unit_tests/test_IntrusiveHashMap.cc +++ b/lib/swoc/unit_tests/test_IntrusiveHashMap.cc @@ -158,9 +158,12 @@ TEST_CASE("IntrusiveHashMap", "[libts][IntrusiveHashMap]") { // Erase all the non-"dup" and see if the range is still correct. map.apply([&map](Thing &thing) { - if (thing._payload != "dup"sv) + if (thing._payload != "dup"sv) { map.erase(map.iterator_for(&thing)); + delete &thing; + } }); + r = map.equal_range("dup"sv); REQUIRE(r.first != r.second); idx = r.first; @@ -269,6 +272,14 @@ TEST_CASE("IntrusiveHashMapManyStrings", "[IntrusiveHashMap]") { } } REQUIRE(miss_p == false); + + // Delete everything in strings. + for (auto &&s : strings) { + free(const_cast<char *>(s.data())); + } + + // Delete everything in ihm. + ihm.apply([](Thing *thing) { delete thing; }); }; TEST_CASE("IntrusiveHashMap Utilities", "[IntrusiveHashMap]") {} diff --git a/lib/swoc/unit_tests/test_ip.cc b/lib/swoc/unit_tests/test_ip.cc index 178e85b72a..2c7aa7ce39 100644 --- a/lib/swoc/unit_tests/test_ip.cc +++ b/lib/swoc/unit_tests/test_ip.cc @@ -1094,7 +1094,7 @@ TEST_CASE("IPSpace bitset", "[libswoc][ipspace][bitset]") { using PAYLOAD = std::bitset<32>; using Space = swoc::IPSpace<PAYLOAD>; - std::array<std::tuple<TextView, std::initializer_list<unsigned>>, 6> ranges = { + std::vector<std::tuple<TextView, std::vector<unsigned>>> ranges = { {{"172.28.56.12-172.28.56.99"_tv, {0, 2, 3}}, {"10.10.35.0/24"_tv, {1, 2}}, {"192.168.56.0/25"_tv, {10, 12, 31}},