aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2020-10-07 12:24:53 +0200
committerregnat <rg@regnat.ovh>2020-10-27 07:29:25 +0100
commitab21ab65016275c224d1d40c42bdfed80dfbcbb0 (patch)
treeabd9eddaf21a92846d6911bca6cfbba505b5e906
parentbc081bcd816542d66f1578788b93df4d7e07b135 (diff)
Test the remote caching of non-ca-depending-on-ca derivations
Although the non-resolved derivation will never get a cache-hit (it doesn't have an output path to query the cache for anyways), we might get one on the resolved derivation.
-rw-r--r--tests/content-addressed.sh57
1 files changed, 41 insertions, 16 deletions
diff --git a/tests/content-addressed.sh b/tests/content-addressed.sh
index 547919660..bdab09c86 100644
--- a/tests/content-addressed.sh
+++ b/tests/content-addressed.sh
@@ -5,24 +5,49 @@ source common.sh
drv=$(nix-instantiate --experimental-features ca-derivations ./content-addressed.nix -A rootCA --arg seed 1)
nix --experimental-features 'nix-command ca-derivations' show-derivation --derivation "$drv" --arg seed 1
-testDerivation () {
+buildAttr () {
local derivationPath=$1
- local commonArgs=("--experimental-features" "ca-derivations" "./content-addressed.nix" "-A" "$derivationPath" "--no-out-link")
+ shift
+ local args=("--experimental-features" "ca-derivations" "./content-addressed.nix" "-A" "$derivationPath" "--no-out-link")
+ args+=("$@")
+ nix-build "${args[@]}"
+}
+
+testRemoteCache () {
+ clearCache
+ local outPath=$(buildAttr dependentNonCA)
+ nix copy --to file://$cacheDir $outPath
+ clearStore
+ buildAttr dependentNonCA --option substituters file://$cacheDir --no-require-sigs |& (! grep "building dependent-non-ca")
+}
+
+testDeterministicCA () {
+ [[ $(buildAttr rootCA) = $(buildAttr rootCA) ]]
+}
+
+testCutoffFor () {
local out1 out2
- out1=$(nix-build "${commonArgs[@]}" --arg seed 1)
- out2=$(nix-build "${commonArgs[@]}" --arg seed 2 "${secondSeedArgs[@]}")
+ out1=$(buildAttr $1)
+ # The seed only changes the root derivation, and not it's output, so the
+ # dependent derivations should only need to be built once.
+ out2=$(buildAttr $1 -j0)
test "$out1" == "$out2"
}
-testDerivation rootCA
-# The seed only changes the root derivation, and not it's output, so the
-# dependent derivations should only need to be built once.
-secondSeedArgs=(-j0)
-# Don't directly build depenentCA, that way we'll make sure we dodn't rely on
-# dependent derivations always being already built.
-#testDerivation dependentCA
-testDerivation transitivelyDependentCA
-testDerivation dependentNonCA
-
-nix-instantiate --experimental-features ca-derivations ./content-addressed.nix -A rootCA --arg seed 5
-nix-collect-garbage --experimental-features ca-derivations --option keep-derivations true
+testCutoff () {
+ # Don't directly build depenentCA, that way we'll make sure we dodn't rely on
+ # dependent derivations always being already built.
+ #testDerivation dependentCA
+ testCutoffFor transitivelyDependentCA
+ testCutoffFor dependentNonCA
+}
+
+testGC () {
+ nix-instantiate --experimental-features ca-derivations ./content-addressed.nix -A rootCA --arg seed 5
+ nix-collect-garbage --experimental-features ca-derivations --option keep-derivations true
+}
+
+testRemoteCache
+testDeterministicCA
+testCutoff
+testGC