### Question:
BuildCacheUtils { @VisibleForTesting static boolean shouldRunCacheEviction( @NonNull FileCache buildCache, @NonNull Duration cacheEvictionInterval) { File markerFile = new File(buildCache.getCacheDirectory(), CACHE_EVICTION_MARKER_FILE_NAME); long lastEvictionTimestamp = markerFile.lastModified(); boolean shouldRunCacheEviction = lastEvictionTimestamp == 0 || Duration.ofMillis(System.currentTimeMillis() - lastEvictionTimestamp) .compareTo(cacheEvictionInterval) >= 0; if (shouldRunCacheEviction) { updateMarkerFile(markerFile); } return shouldRunCacheEviction; }  @SuppressWarnings("ResultOfMethodCallIgnored") @Nullable static FileCache createBuildCacheIfEnabled(
            @NonNull Project project, @NonNull ProjectOptions projectOptions); @NonNull static final String BUILD_CACHE_TROUBLESHOOTING_MESSAGE; }### Answer:
@Test public void testShouldRunCacheEviction() throws Exception { File cacheDir = testDir.newFolder(); FileCache fileCache = FileCache.getInstanceWithMultiProcessLocking(cacheDir); assertThat(BuildCacheUtils.shouldRunCacheEviction(fileCache, Duration.ofMinutes(1))) .isTrue(); assertThat(BuildCacheUtils.shouldRunCacheEviction(fileCache, Duration.ofMinutes(1))) .isFalse(); TestUtils.waitForFileSystemTick(); assertThat(BuildCacheUtils.shouldRunCacheEviction(fileCache, Duration.ofMillis(1))) .isTrue(); }