diff --git a/tvix/tests/README.md b/tvix/boot/README.md similarity index 91% rename from tvix/tests/README.md rename to tvix/boot/README.md index 8cb4e9a65..79fca31eb 100644 --- a/tvix/tests/README.md +++ b/tvix/boot/README.md @@ -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 -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. +In the `tests/` subdirectory, there's some integration tests. ## //tvix/tests:runVM A script spinning up a `tvix-store virtiofs` daemon, then starting a cloud- diff --git a/tvix/tests/default.nix b/tvix/boot/default.nix similarity index 74% rename from tvix/tests/default.nix rename to tvix/boot/default.nix index 875fe0b9f..8c20c35f6 100644 --- a/tvix/tests/default.nix +++ b/tvix/boot/default.nix @@ -103,35 +103,9 @@ rec { --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 - # store path in the output. - test-docs = pkgs.stdenv.mkDerivation { - name = "run-vm"; - 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" ]; + meta.ci.targets = [ + "initrd" + "kernel" + "runVM" + ]; } diff --git a/tvix/boot/tests/default.nix b/tvix/boot/tests/default.nix new file mode 100644 index 000000000..d725a7ac9 --- /dev/null +++ b/tvix/boot/tests/default.nix @@ -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" ]; + }; +} diff --git a/tvix/tests/tvix-init.go b/tvix/boot/tvix-init.go similarity index 100% rename from tvix/tests/tvix-init.go rename to tvix/boot/tvix-init.go