From a12707f100d82479bd957aa7fcf3a4e5d66ce9fd Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Tue, 18 Mar 2025 10:31:37 +0200 Subject: [PATCH] lib: test-file-cache - Ignore RLIMIT_AS enforcement failure If the OS does not respect RLIMIT_AS here, lets skip all the rest of the tests. This happens at least with qemu/aarch64. --- src/lib/test-file-cache.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/lib/test-file-cache.c b/src/lib/test-file-cache.c index 4316dfdc9f..b22eeddd00 100644 --- a/src/lib/test-file-cache.c +++ b/src/lib/test-file-cache.c @@ -265,17 +265,23 @@ static void test_file_cache_errors(void) page_size, strerror(ENOMEM)); test_assert(setrlimit(RLIMIT_AS, &rl_new) == 0); test_expect_error_string(errstr); - test_assert(file_cache_set_size(cache, 1024) == -1); - test_assert(setrlimit(RLIMIT_AS, &rl_cur) == 0); - - /* same for mremap */ - errstr = t_strdup_printf("mremap_anon(.test_file_cache, %zu) failed: %s", - page_size*2, strerror(ENOMEM)); - test_assert(file_cache_set_size(cache, 1) == 0); - test_assert(setrlimit(RLIMIT_AS, &rl_new) == 0); - test_expect_error_string(errstr); - test_assert(file_cache_set_size(cache, page_size*2) == -1); - test_assert(setrlimit(RLIMIT_AS, &rl_cur) == 0); + int ret = file_cache_set_size(cache, 1024); + if (ret == 0) { + /* RLIMIT_AS isn't working in this OS - skip this test */ + test_expect_no_more_errors(); + } else { + test_assert(ret == -1); + test_assert(setrlimit(RLIMIT_AS, &rl_cur) == 0); + + /* same for mremap */ + errstr = t_strdup_printf("mremap_anon(.test_file_cache, %zu) failed: %s", + page_size*2, strerror(ENOMEM)); + test_assert(file_cache_set_size(cache, 1) == 0); + test_assert(setrlimit(RLIMIT_AS, &rl_new) == 0); + test_expect_error_string(errstr); + test_assert(file_cache_set_size(cache, page_size*2) == -1); + test_assert(setrlimit(RLIMIT_AS, &rl_cur) == 0); + } #endif file_cache_free(&cache); -- 2.47.3