chore(tvix/tests): rename to //tvix/boot
This is mostly boot tooling, the integration test is just one instance making use of it. Expose initrd, kernel and runVM as a separate target to CI, and move the tests to a subdirectory. Change-Id: I1d22cd68bf5af095bc11dd9d7117b62956c7f7f2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9465 Reviewed-by: raitobezarius <tvl@lahfa.xyz> Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
242949ecfb
commit
1b3d6975ed
4 changed files with 44 additions and 41 deletions
|
@ -1,15 +1,9 @@
|
||||||
# tvix/tests
|
# tvix/boot
|
||||||
|
|
||||||
This directory provides a bunch of integration tests using tvix.
|
This directory provides tooling to boot VMs with /nix/store provided by
|
||||||
|
virtiofs.
|
||||||
|
|
||||||
The currently most interesting (and only) ones ;-) are using a cloud-hypervisor
|
In the `tests/` subdirectory, there's some integration tests.
|
||||||
VM.
|
|
||||||
|
|
||||||
## //tvix/tests:test-docs
|
|
||||||
This is a test encapsulated in a nix build.
|
|
||||||
It seeds a tvix-store with the tvix docs, then starts a VM, asks it to list all
|
|
||||||
files in /nix/store, and ensures the store path is present, which acts as a
|
|
||||||
nice smoketest.
|
|
||||||
|
|
||||||
## //tvix/tests:runVM
|
## //tvix/tests:runVM
|
||||||
A script spinning up a `tvix-store virtiofs` daemon, then starting a cloud-
|
A script spinning up a `tvix-store virtiofs` daemon, then starting a cloud-
|
|
@ -103,35 +103,9 @@ rec {
|
||||||
--fs tag=tvix,socket=$tempdir/tvix.sock,num_queues=1,queue_size=512
|
--fs tag=tvix,socket=$tempdir/tvix.sock,num_queues=1,queue_size=512
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Seed a tvix-store with the tvix docs, then start a VM and search for the
|
meta.ci.targets = [
|
||||||
# store path in the output.
|
"initrd"
|
||||||
test-docs = pkgs.stdenv.mkDerivation {
|
"kernel"
|
||||||
name = "run-vm";
|
"runVM"
|
||||||
nativeBuildInputs = [
|
|
||||||
depot.tvix.store
|
|
||||||
];
|
];
|
||||||
buildCommand = ''
|
|
||||||
touch $out
|
|
||||||
|
|
||||||
# Configure tvix to put data in the local working directory
|
|
||||||
export BLOB_SERVICE_ADDR=sled://$PWD/blobs.sled
|
|
||||||
export DIRECTORY_SERVICE_ADDR=sled://$PWD/directories.sled
|
|
||||||
export PATH_INFO_SERVICE_ADDR=sled://$PWD/pathinfo.sled
|
|
||||||
|
|
||||||
# Seed the tvix store with some data
|
|
||||||
# Create a `docs` directory with the contents from ../docs
|
|
||||||
# Make sure it still is called "docs" when calling import, so we can
|
|
||||||
# predict the store path.
|
|
||||||
cp -R ${../docs} docs
|
|
||||||
outpath=$(tvix-store import docs)
|
|
||||||
|
|
||||||
echo "Store contents imported to $outpath"
|
|
||||||
|
|
||||||
CH_CMDLINE="tvix.find" ${runVM}/bin/run-tvix-vm 2>&1 | tee output.txt
|
|
||||||
grep ${../docs} output.txt
|
|
||||||
'';
|
|
||||||
requiredSystemFeatures = [ "kvm" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
meta.ci.targets = [ "test-docs" ];
|
|
||||||
}
|
}
|
35
tvix/boot/tests/default.nix
Normal file
35
tvix/boot/tests/default.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{ depot, pkgs, ... }:
|
||||||
|
|
||||||
|
depot.nix.readTree.drvTargets {
|
||||||
|
# Seed a tvix-store with the tvix docs, then start a VM, ask it to list all
|
||||||
|
# files in /nix/store, and ensure the store path is present, which acts as a
|
||||||
|
# nice smoketest.
|
||||||
|
docs = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "run-vm";
|
||||||
|
nativeBuildInputs = [
|
||||||
|
depot.tvix.store
|
||||||
|
depot.tvix.boot.runVM
|
||||||
|
];
|
||||||
|
buildCommand = ''
|
||||||
|
touch $out
|
||||||
|
|
||||||
|
# Configure tvix to put data in the local working directory
|
||||||
|
export BLOB_SERVICE_ADDR=sled://$PWD/blobs.sled
|
||||||
|
export DIRECTORY_SERVICE_ADDR=sled://$PWD/directories.sled
|
||||||
|
export PATH_INFO_SERVICE_ADDR=sled://$PWD/pathinfo.sled
|
||||||
|
|
||||||
|
# Seed the tvix store with some data
|
||||||
|
# Create a `docs` directory with the contents from ../docs
|
||||||
|
# Make sure it still is called "docs" when calling import, so we can
|
||||||
|
# predict the store path.
|
||||||
|
cp -R ${../../docs} docs
|
||||||
|
outpath=$(tvix-store import docs)
|
||||||
|
|
||||||
|
echo "Store contents imported to $outpath"
|
||||||
|
|
||||||
|
CH_CMDLINE="tvix.find" run-tvix-vm 2>&1 | tee output.txt
|
||||||
|
grep ${../../docs} output.txt
|
||||||
|
'';
|
||||||
|
requiredSystemFeatures = [ "kvm" ];
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue