local.increment_statistic(core::Statistic::remote_storage_read_miss);
if (type == core::CacheEntryType::result) {
local.increment_statistic(core::Statistic::remote_storage_miss);
+ } else if (m_config.depend_mode()) {
+ // With the depend mode enabled, a missing manifest means that we can't
+ // even try to look up a result, so note the miss already now.
+ ASSERT(type == core::CacheEntryType::manifest);
+ local.increment_statistic(core::Statistic::remote_storage_miss);
}
}
}
if (type == core::CacheEntryType::result) {
increment_statistic(return_value ? core::Statistic::local_storage_hit
: core::Statistic::local_storage_miss);
+ } else if (m_config.depend_mode() && !return_value) {
+ // With the depend mode enabled, a missing manifest means that we can't even
+ // try to look up a result, so note the miss already now.
+ ASSERT(type == core::CacheEntryType::manifest);
+ increment_statistic(core::Statistic::local_storage_miss);
}
return return_value;
expect_stat files_in_cache 4
expect_file_count 3 '*' remote # CACHEDIR.TAG + result + manifest
+ # -------------------------------------------------------------------------
+ TEST "Depend mode"
+
+ export CCACHE_DEPEND=1
+
+ # Compile and send result to local and remote storage.
+ $CCACHE_COMPILE -MMD -c test.c
+ expect_stat direct_cache_hit 0
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+ expect_stat local_storage_hit 0
+ expect_stat local_storage_miss 1
+ expect_stat local_storage_read_hit 0
+ expect_stat local_storage_read_miss 1 # only manifest
+ expect_stat local_storage_write 2 # result + manifest
+ expect_stat remote_storage_hit 0
+ expect_stat remote_storage_miss 1
+ expect_stat remote_storage_read_hit 0
+ expect_stat remote_storage_read_miss 1 # only manifest
+ expect_stat remote_storage_write 2 # result + manifest
+
+ # Get result from local storage.
+ $CCACHE_COMPILE -MMD -c test.c
+ expect_stat direct_cache_hit 1
+ expect_stat cache_miss 1
+ expect_stat local_storage_hit 1
+ expect_stat local_storage_miss 1
+ expect_stat local_storage_read_hit 2 # result + manifest
+ expect_stat local_storage_read_miss 1 # manifest
+ expect_stat local_storage_write 2 # result + manifest
+ expect_stat remote_storage_hit 0
+ expect_stat remote_storage_miss 1
+ expect_stat remote_storage_read_hit 0
+ expect_stat remote_storage_read_miss 1
+ expect_stat remote_storage_write 2
+
+ # Clear local storage.
+ $CCACHE -C >/dev/null
+
+ # Get result from remote storage, copying it to local storage.
+ # TERM=xterm-256color gdb --args $CCACHE_COMPILE -MMD -c test.c
+ $CCACHE_COMPILE -MMD -c test.c
+ expect_stat direct_cache_hit 2
+ expect_stat cache_miss 1
+ expect_stat local_storage_hit 1
+ expect_stat local_storage_miss 3
+ expect_stat local_storage_read_hit 2
+ expect_stat local_storage_read_miss 3
+ expect_stat local_storage_write 4
+ expect_stat remote_storage_hit 1
+ expect_stat remote_storage_miss 1
+ expect_stat remote_storage_read_hit 2 # result + manifest
+ expect_stat remote_storage_read_miss 1
+ expect_stat remote_storage_write 2 # result + manifest
+
# -------------------------------------------------------------------------
TEST "umask"