From d0912b94ee141d46c14c00ba30d28037d5464af0 Mon Sep 17 00:00:00 2001 From: Henrik Edin Date: Fri, 21 Dec 2018 12:09:51 -0500 Subject: SERVER-38739 Reduce iterations in lru_cache_test StressTest if iterator debugging is on. The destructor becomes O(n^2) --- src/mongo/util/lru_cache_test.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/mongo') diff --git a/src/mongo/util/lru_cache_test.cpp b/src/mongo/util/lru_cache_test.cpp index 70cb618d1c2..af3f5c9e208 100644 --- a/src/mongo/util/lru_cache_test.cpp +++ b/src/mongo/util/lru_cache_test.cpp @@ -215,7 +215,16 @@ TEST(LRUCacheTest, SizeZeroCache) { // Test a very large cache size TEST(LRUCacheTest, StressTest) { +// If iterator debugging is on the LRU Cache destructor may be O(n^2). Reduce the max iteration size +// to handle this. +#if _MSC_VER && _ITERATOR_DEBUG_LEVEL >= 2 + const int maxSize = 10000; + std::array sample{1, 34, 400}; +#else const int maxSize = 1000000; + std::array sample{1, 34, 400, 12345, 999999}; +#endif + LRUCache cache(maxSize); // Fill up the cache @@ -227,7 +236,6 @@ TEST(LRUCacheTest, StressTest) { assertEquals(cache.size(), size_t(maxSize)); // Perform some basic functions on the cache - std::array sample{1, 34, 400, 12345, 999999}; for (auto s : sample) { auto found = cache.find(s); assertEquals(found->second, s); -- cgit v1.2.1