From 8db62bf8daac6ab55b5f865de1bd903d0090d681 Mon Sep 17 00:00:00 2001 From: George Arama <50641385+gearama@users.noreply.github.com> Date: Wed, 1 May 2024 14:02:09 -0700 Subject: [PATCH] reenable the global cleanup test (#5590) --- .../curl/curl_connection_pool_private.hpp | 4 ++-- .../src/http/curl/curl_session_private.hpp | 4 ++-- .../test/ut/azure_libcurl_core_main_test.cpp | 20 +++++++++++++------ 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/sdk/core/azure-core/src/http/curl/curl_connection_pool_private.hpp b/sdk/core/azure-core/src/http/curl/curl_connection_pool_private.hpp index 5bef3d1dc..bae02d5dc 100644 --- a/sdk/core/azure-core/src/http/curl/curl_connection_pool_private.hpp +++ b/sdk/core/azure-core/src/http/curl/curl_connection_pool_private.hpp @@ -29,7 +29,7 @@ namespace Azure { namespace Core { namespace Test { class CurlConnectionPool_connectionPoolTest_Test; class CurlConnectionPool_uniquePort_Test; class CurlConnectionPool_connectionClose_Test; - class SdkWithLibcurl_DISABLED_globalCleanUp_Test; + class SdkWithLibcurl_globalCleanUp_Test; }}} // namespace Azure::Core::Test #endif @@ -48,7 +48,7 @@ namespace Azure { namespace Core { namespace Http { namespace _detail { friend class Azure::Core::Test::CurlConnectionPool_connectionPoolTest_Test; friend class Azure::Core::Test::CurlConnectionPool_uniquePort_Test; friend class Azure::Core::Test::CurlConnectionPool_connectionClose_Test; - friend class Azure::Core::Test::SdkWithLibcurl_DISABLED_globalCleanUp_Test; + friend class Azure::Core::Test::SdkWithLibcurl_globalCleanUp_Test; #endif public: diff --git a/sdk/core/azure-core/src/http/curl/curl_session_private.hpp b/sdk/core/azure-core/src/http/curl/curl_session_private.hpp index 6b32f224a..19eca51ca 100644 --- a/sdk/core/azure-core/src/http/curl/curl_session_private.hpp +++ b/sdk/core/azure-core/src/http/curl/curl_session_private.hpp @@ -22,7 +22,7 @@ // Define the class name that reads from ConnectionPool private members namespace Azure { namespace Core { namespace Test { class CurlConnectionPool_connectionPoolTest_Test; - class SdkWithLibcurl_DISABLED_globalCleanUp_Test; + class SdkWithLibcurl_globalCleanUp_Test; }}} // namespace Azure::Core::Test #endif @@ -43,7 +43,7 @@ namespace Azure { namespace Core { namespace Http { #ifdef _azure_TESTING_BUILD // Give access to private to this tests class friend class Azure::Core::Test::CurlConnectionPool_connectionPoolTest_Test; - friend class Azure::Core::Test::SdkWithLibcurl_DISABLED_globalCleanUp_Test; + friend class Azure::Core::Test::SdkWithLibcurl_globalCleanUp_Test; #endif private: /** diff --git a/sdk/core/azure-core/test/ut/azure_libcurl_core_main_test.cpp b/sdk/core/azure-core/test/ut/azure_libcurl_core_main_test.cpp index d4d2c178c..0b6435975 100644 --- a/sdk/core/azure-core/test/ut/azure_libcurl_core_main_test.cpp +++ b/sdk/core/azure-core/test/ut/azure_libcurl_core_main_test.cpp @@ -32,7 +32,7 @@ namespace Azure { namespace Core { namespace Test { // This test fails intermittently: https://github.com/Azure/azure-sdk-for-cpp/issues/4332 - TEST(SdkWithLibcurl, DISABLED_globalCleanUp) + TEST(SdkWithLibcurl, globalCleanUp) { Azure::Core::Http::Request req( Azure::Core::Http::HttpMethod::Get, Azure::Core::Url("https://httpbin.org/get")); @@ -84,11 +84,19 @@ namespace Azure { namespace Core { namespace Test { Azure::Core::Http::_detail::CurlConnectionPool::g_curlConnectionPool.ConnectionPoolIndex .size(), 1); - // let the thread cleanup thread hit - std::this_thread::sleep_for( - std::chrono::milliseconds( - Azure::Core::Http::_detail::DefaultCleanerIntervalMilliseconds + 1000) - - ms_double); + + std::uint16_t waitRepeats{0}; + // wait for the cleanup thread to wake up and run. since this is a timing matter based on when + // the thread is scheduled we should let it run to completion max 2 minutes (12*10s) + while (Azure::Core::Http::_detail::CurlConnectionPool::g_curlConnectionPool + .ConnectionPoolIndex.size() + == 1 + && waitRepeats < 12) + { + // sleep for 10 seconds + std::this_thread::sleep_for(std::chrono::milliseconds(10000)); + } + // Check that after the connection is gone and cleaned up, the pool is empty EXPECT_EQ( Azure::Core::Http::_detail::CurlConnectionPool::g_curlConnectionPool.ConnectionPoolIndex