forked from lix-project/lix
Test the NAR info cache
This commit is contained in:
parent
3593c8285d
commit
bac123ddd9
|
@ -1,5 +1,6 @@
|
||||||
#include "binary-cache-store.hh"
|
#include "binary-cache-store.hh"
|
||||||
#include "globals.hh"
|
#include "globals.hh"
|
||||||
|
#include "nar-info-disk-cache.hh"
|
||||||
|
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
|
||||||
|
@ -16,6 +17,9 @@ public:
|
||||||
: BinaryCacheStore(params)
|
: BinaryCacheStore(params)
|
||||||
, binaryCacheDir(binaryCacheDir)
|
, binaryCacheDir(binaryCacheDir)
|
||||||
{
|
{
|
||||||
|
/* For testing the NAR info cache. */
|
||||||
|
if (getEnv("_NIX_CACHE_FILE_URLS") == "1")
|
||||||
|
diskCache = getNarInfoDiskCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
void init() override;
|
void init() override;
|
||||||
|
@ -53,6 +57,9 @@ void LocalBinaryCacheStore::init()
|
||||||
{
|
{
|
||||||
createDirs(binaryCacheDir + "/nar");
|
createDirs(binaryCacheDir + "/nar");
|
||||||
BinaryCacheStore::init();
|
BinaryCacheStore::init();
|
||||||
|
|
||||||
|
if (diskCache && !diskCache->cacheExists(getUri()))
|
||||||
|
diskCache->createCache(getUri(), wantMassQuery_, priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void atomicWrite(const Path & path, const std::string & s)
|
static void atomicWrite(const Path & path, const std::string & s)
|
||||||
|
|
|
@ -12,7 +12,7 @@ nix-push --dest $cacheDir $outPath
|
||||||
# By default, a binary cache doesn't support "nix-env -qas", but does
|
# By default, a binary cache doesn't support "nix-env -qas", but does
|
||||||
# support installation.
|
# support installation.
|
||||||
clearStore
|
clearStore
|
||||||
rm -f $NIX_STATE_DIR/binary-cache*
|
clearCacheCache
|
||||||
|
|
||||||
export _NIX_CACHE_FILE_URLS=1
|
export _NIX_CACHE_FILE_URLS=1
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ nix-store --option binary-caches "file://$cacheDir" -r $outPath
|
||||||
|
|
||||||
# But with the right configuration, "nix-env -qas" should also work.
|
# But with the right configuration, "nix-env -qas" should also work.
|
||||||
clearStore
|
clearStore
|
||||||
rm -f $NIX_STATE_DIR/binary-cache*
|
clearCacheCache
|
||||||
echo "WantMassQuery: 1" >> $cacheDir/nix-cache-info
|
echo "WantMassQuery: 1" >> $cacheDir/nix-cache-info
|
||||||
|
|
||||||
nix-env --option binary-caches "file://$cacheDir" -f dependencies.nix -qas \* | grep -- "--S"
|
nix-env --option binary-caches "file://$cacheDir" -f dependencies.nix -qas \* | grep -- "--S"
|
||||||
|
@ -55,8 +55,7 @@ mv $nar.good $nar
|
||||||
|
|
||||||
# Test whether this unsigned cache is rejected if the user requires signed caches.
|
# Test whether this unsigned cache is rejected if the user requires signed caches.
|
||||||
clearStore
|
clearStore
|
||||||
|
clearCacheCache
|
||||||
rm -f $NIX_STATE_DIR/binary-cache*
|
|
||||||
|
|
||||||
if nix-store --option binary-caches "file://$cacheDir" --option signed-binary-caches '*' -r $outPath; then
|
if nix-store --option binary-caches "file://$cacheDir" --option signed-binary-caches '*' -r $outPath; then
|
||||||
echo "unsigned binary cache incorrectly accepted"
|
echo "unsigned binary cache incorrectly accepted"
|
||||||
|
@ -107,16 +106,14 @@ nix-push --dest $cacheDir --key-file $TEST_ROOT/sk1 $outPath
|
||||||
|
|
||||||
# Downloading should fail if we don't provide a key.
|
# Downloading should fail if we don't provide a key.
|
||||||
clearStore
|
clearStore
|
||||||
|
clearCacheCache
|
||||||
rm -f $NIX_STATE_DIR/binary-cache*
|
|
||||||
|
|
||||||
(! nix-store -r $outPath --option binary-caches "file://$cacheDir" --option signed-binary-caches '*' )
|
(! nix-store -r $outPath --option binary-caches "file://$cacheDir" --option signed-binary-caches '*' )
|
||||||
|
|
||||||
|
|
||||||
# And it should fail if we provide an incorrect key.
|
# And it should fail if we provide an incorrect key.
|
||||||
clearStore
|
clearStore
|
||||||
|
clearCacheCache
|
||||||
rm -f $NIX_STATE_DIR/binary-cache*
|
|
||||||
|
|
||||||
(! nix-store -r $outPath --option binary-caches "file://$cacheDir" --option signed-binary-caches '*' --option binary-cache-public-keys "$badKey")
|
(! nix-store -r $outPath --option binary-caches "file://$cacheDir" --option signed-binary-caches '*' --option binary-cache-public-keys "$badKey")
|
||||||
|
|
||||||
|
@ -133,7 +130,7 @@ for i in $cacheDir/*.narinfo; do
|
||||||
mv $i.tmp $i
|
mv $i.tmp $i
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -f $NIX_STATE_DIR/binary-cache*
|
clearCacheCache
|
||||||
|
|
||||||
(! nix-store -r $outPath --option binary-caches "file://$cacheDir" --option signed-binary-caches '*' --option binary-cache-public-keys "$publicKey")
|
(! nix-store -r $outPath --option binary-caches "file://$cacheDir" --option signed-binary-caches '*' --option binary-cache-public-keys "$publicKey")
|
||||||
|
|
||||||
|
|
|
@ -2,18 +2,15 @@ source common.sh
|
||||||
|
|
||||||
clearProfiles
|
clearProfiles
|
||||||
|
|
||||||
rm -f $TEST_ROOT/.nix-channels
|
rm -f $TEST_HOME/.nix-channels $TEST_HOME/.nix-profile
|
||||||
|
|
||||||
# Override location of ~/.nix-channels.
|
|
||||||
export HOME=$TEST_ROOT
|
|
||||||
|
|
||||||
# Test add/list/remove.
|
# Test add/list/remove.
|
||||||
nix-channel --add http://foo/bar xyzzy
|
nix-channel --add http://foo/bar xyzzy
|
||||||
nix-channel --list | grep -q http://foo/bar
|
nix-channel --list | grep -q http://foo/bar
|
||||||
nix-channel --remove xyzzy
|
nix-channel --remove xyzzy
|
||||||
|
|
||||||
[ -e $TEST_ROOT/.nix-channels ]
|
[ -e $TEST_HOME/.nix-channels ]
|
||||||
[ "$(cat $TEST_ROOT/.nix-channels)" = '' ]
|
[ "$(cat $TEST_HOME/.nix-channels)" = '' ]
|
||||||
|
|
||||||
# Create a channel.
|
# Create a channel.
|
||||||
rm -rf $TEST_ROOT/foo
|
rm -rf $TEST_ROOT/foo
|
||||||
|
@ -41,10 +38,8 @@ grep -q 'item.*attrPath="foo".*name="dependencies"' $TEST_ROOT/meta.xml
|
||||||
nix-env -i dependencies
|
nix-env -i dependencies
|
||||||
[ -e $TEST_ROOT/var/nix/profiles/default/foobar ]
|
[ -e $TEST_ROOT/var/nix/profiles/default/foobar ]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
clearProfiles
|
clearProfiles
|
||||||
rm -f $TEST_ROOT/.nix-channels
|
rm -f $TEST_HOME/.nix-channels
|
||||||
|
|
||||||
# Test updating from a tarball
|
# Test updating from a tarball
|
||||||
nix-channel --add file://$TEST_ROOT/foo/nixexprs.tar.bz2 foo
|
nix-channel --add file://$TEST_ROOT/foo/nixexprs.tar.bz2 foo
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
source common.sh
|
source common.sh
|
||||||
|
|
||||||
home=$TEST_ROOT/home
|
|
||||||
user=$(whoami)
|
user=$(whoami)
|
||||||
rm -rf $home
|
rm -rf $TEST_HOME
|
||||||
mkdir -p $home
|
mkdir -p $TEST_HOME
|
||||||
HOME=$home USER=$user $SHELL -e -c ". ../scripts/nix-profile.sh"
|
USER=$user $SHELL -e -c ". ../scripts/nix-profile.sh"
|
||||||
HOME=$home USER=$user $SHELL -e -c ". ../scripts/nix-profile.sh" # test idempotency
|
USER=$user $SHELL -e -c ". ../scripts/nix-profile.sh" # test idempotency
|
||||||
|
|
||||||
[ -L $home/.nix-profile ]
|
[ -L $TEST_HOME/.nix-profile ]
|
||||||
[ -e $home/.nix-channels ]
|
[ -e $TEST_HOME/.nix-channels ]
|
||||||
|
|
|
@ -2,8 +2,7 @@ source common.sh
|
||||||
|
|
||||||
clearStore
|
clearStore
|
||||||
|
|
||||||
export HOME=$TEST_ROOT/home
|
rm -rf $TEST_HOME
|
||||||
rm -rf $TEST_ROOT/home
|
|
||||||
|
|
||||||
tarroot=$TEST_ROOT/tarball
|
tarroot=$TEST_ROOT/tarball
|
||||||
rm -rf $tarroot
|
rm -rf $tarroot
|
||||||
|
|
|
@ -6,8 +6,7 @@ clearProfiles
|
||||||
# Query installed: should be empty.
|
# Query installed: should be empty.
|
||||||
test "$(nix-env -p $profiles/test -q '*' | wc -l)" -eq 0
|
test "$(nix-env -p $profiles/test -q '*' | wc -l)" -eq 0
|
||||||
|
|
||||||
export HOME=$TEST_ROOT/home
|
mkdir -p $TEST_HOME
|
||||||
mkdir -p $HOME
|
|
||||||
nix-env --switch-profile $profiles/test
|
nix-env --switch-profile $profiles/test
|
||||||
|
|
||||||
# Query available: should contain several.
|
# Query available: should contain several.
|
||||||
|
|
Loading…
Reference in a new issue