From c642441beb504278819e43914516b5eda30f2c15 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 23 Apr 2013 12:43:28 +0200 Subject: [PATCH] Test NAR info caching --- scripts/download-from-binary-cache.pl.in | 16 ++++++++++++---- tests/binary-cache.sh | 4 +++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/scripts/download-from-binary-cache.pl.in b/scripts/download-from-binary-cache.pl.in index 03c331a636..68414ea63a 100644 --- a/scripts/download-from-binary-cache.pl.in +++ b/scripts/download-from-binary-cache.pl.in @@ -27,6 +27,8 @@ my $didExpiration = 0; my $debug = ($ENV{"NIX_DEBUG_SUBST"} // "") eq 1; open(STDERR, ">>/dev/tty") if $debug; +my $cacheFileURLs = ($ENV{"_NIX_CACHE_FILE_URLS"} // "") eq 1; # for testing + my ($dbh, $queryCache, $insertNAR, $queryNAR, $insertNARExistence, $queryNARExistence, $expireNARExistence); my $curlm = WWW::Curl::Multi->new; @@ -267,6 +269,12 @@ sub getAvailableCaches { } +sub shouldCache { + my ($url) = @_; + return $cacheFileURLs || $url !~ /^file:/; +} + + sub processNARInfo { my ($storePath, $cache, $request) = @_; @@ -276,7 +284,7 @@ sub processNARInfo { ($request->{result} != 0 ? "Curl error $request->{result}" : "HTTP status $request->{httpStatus}") . ")\n"; } else { $insertNARExistence->execute($cache->{id}, basename($storePath), 0, time()) - unless $request->{url} =~ /^file:/; + if shouldCache $request->{url}; } return undef; } @@ -289,7 +297,7 @@ sub processNARInfo { $cache->{id}, basename($storePath), $narInfo->{url}, $narInfo->{compression}, $narInfo->{fileHash}, $narInfo->{fileSize}, $narInfo->{narHash}, $narInfo->{narSize}, join(" ", @{$narInfo->{refs}}), $narInfo->{deriver}, $narInfo->{system}, time()) - unless $request->{url} =~ /^file:/; + if shouldCache $request->{url}; return $narInfo; } @@ -455,12 +463,12 @@ sub printSubstitutablePaths { ($request->{result} != 0 ? "Curl error $request->{result}" : "HTTP status $request->{httpStatus}") . ")\n"; } else { $insertNARExistence->execute($cache->{id}, basename($request->{storePath}), 0, time()) - unless $request->{url} =~ /^file:/; + if shouldCache $request->{url}; } push @left2, $request->{storePath}; } else { $insertNARExistence->execute($cache->{id}, basename($request->{storePath}), 1, time()) - unless $request->{url} =~ /^file:/; + if shouldCache $request->{url}; print "$request->{storePath}\n"; } } diff --git a/tests/binary-cache.sh b/tests/binary-cache.sh index 2e38a9d938..b02456220d 100644 --- a/tests/binary-cache.sh +++ b/tests/binary-cache.sh @@ -5,7 +5,7 @@ clearManifests # Create the binary cache. cacheDir=$TEST_ROOT/binary-cache -rm -rf $cacheDir +rm -rf "$cacheDir" outPath=$(nix-build dependencies.nix --no-out-link) @@ -17,6 +17,8 @@ nix-push --dest $cacheDir $outPath clearStore rm -f $NIX_STATE_DIR/binary-cache* +export _NIX_CACHE_FILE_URLS=1 + nix-env --option binary-caches "file://$cacheDir" -f dependencies.nix -qas \* | grep -- "---" nix-store --option binary-caches "file://$cacheDir" -r $outPath