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:
Florian Klink 2023-09-25 13:59:25 +03:00 committed by clbot
parent 242949ecfb
commit 1b3d6975ed
4 changed files with 44 additions and 41 deletions

View file

@ -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-

View file

@ -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" ];
} }

View 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" ];
};
}