From 81c8c7d998881b498fe22cee5c3eb77173322af5 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 7 Sep 2021 15:00:58 +1000 Subject: [PATCH] util/cache: run basic cache tests on the single file cache Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/util/tests/cache/cache_test.c | 73 +++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 13 deletions(-) diff --git a/src/util/tests/cache/cache_test.c b/src/util/tests/cache/cache_test.c index ec1587daaee..58cafc2faf4 100644 --- a/src/util/tests/cache/cache_test.c +++ b/src/util/tests/cache/cache_test.c @@ -192,7 +192,7 @@ cache_exists(struct disk_cache *cache) #define CACHE_TEST_TMP "./cache-test-tmp" static void -test_disk_cache_create(void) +test_disk_cache_create(const char *cache_dir_name) { struct disk_cache *cache; int err; @@ -255,8 +255,10 @@ test_disk_cache_create(void) expect_true(cache_exists(cache), "disk_cache_create with XDG_CACHE_HOME " "set"); - check_directories_created(CACHE_TEST_TMP "/xdg-cache-home/" - CACHE_DIR_NAME); + char *path; + asprintf(&path, "%s%s", CACHE_TEST_TMP "/xdg-cache-home/", cache_dir_name); + check_directories_created(path); + free(path); disk_cache_destroy(cache); @@ -281,14 +283,16 @@ test_disk_cache_create(void) expect_true(cache_exists(cache), "disk_cache_create with " "MESA_GLSL_CACHE_DIR set"); - check_directories_created(CACHE_TEST_TMP "/mesa-glsl-cache-dir/" - CACHE_DIR_NAME); + asprintf(&path, "%s%s", CACHE_TEST_TMP "/mesa-glsl-cache-dir/", + cache_dir_name); + check_directories_created(path); + free(path); disk_cache_destroy(cache); } static void -test_put_and_get(void) +test_put_and_get(bool test_cache_size_limit) { struct disk_cache *cache; char blob[] = "This is a blob of thirty-seven bytes"; @@ -342,6 +346,9 @@ test_put_and_get(void) /* Set the cache size to 1KB and add a 1KB item to force an eviction. */ disk_cache_destroy(cache); + if (!test_cache_size_limit) + return; + setenv("MESA_GLSL_CACHE_MAX_SIZE", "1K", 1); cache = disk_cache_create("test", "make_check", 0); @@ -519,20 +526,60 @@ test_put_key_and_get_key(void) } #endif /* ENABLE_SHADER_CACHE */ +static void +test_multi_file_cache(void) +{ + int err; + + printf("Test multi file disk cache - Start\n"); + + test_disk_cache_create(CACHE_DIR_NAME); + + test_put_and_get(true); + + test_put_key_and_get_key(); + + printf("Test multi file disk cache - End\n"); + + err = rmrf_local(CACHE_TEST_TMP); + expect_equal(err, 0, "Removing " CACHE_TEST_TMP " again"); +} + +static void +test_single_file_cache(void) +{ + int err; + + printf("Test single file disk cache - Start\n"); + + setenv("MESA_DISK_CACHE_SINGLE_FILE", "true", 1); + + test_disk_cache_create(CACHE_DIR_NAME_SF); + + /* We skip testing cache size limit as the single file cache currently + * doesn't have any functionality to enforce cache size limits. + */ + test_put_and_get(false); + + test_put_key_and_get_key(); + + setenv("MESA_DISK_CACHE_SINGLE_FILE", "false", 1); + + printf("Test single file disk cache - End\n"); + + err = rmrf_local(CACHE_TEST_TMP); + expect_equal(err, 0, "Removing " CACHE_TEST_TMP " again"); +} + int main(void) { #ifdef ENABLE_SHADER_CACHE - int err; - test_disk_cache_create(); + test_multi_file_cache(); - test_put_and_get(); + test_single_file_cache(); - test_put_key_and_get_key(); - - err = rmrf_local(CACHE_TEST_TMP); - expect_equal(err, 0, "Removing " CACHE_TEST_TMP " again"); #endif /* ENABLE_SHADER_CACHE */ return error ? 1 : 0;