From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from atuin.qyliss.net (localhost [IPv6:::1]) by atuin.qyliss.net (Postfix) with ESMTP id 60C55D41B; Fri, 13 Jun 2025 14:05:43 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 993) id E8811D25E; Fri, 13 Jun 2025 14:05:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on atuin.qyliss.net X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DMARC_MISSING,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 Received: from fhigh-a3-smtp.messagingengine.com (fhigh-a3-smtp.messagingengine.com [103.168.172.154]) by atuin.qyliss.net (Postfix) with ESMTPS id 629FFD296 for ; Fri, 13 Jun 2025 14:05:26 +0000 (UTC) Received: from phl-compute-01.internal (phl-compute-01.phl.internal [10.202.2.41]) by mailfhigh.phl.internal (Postfix) with ESMTP id 6D4BA114018D; Fri, 13 Jun 2025 10:05:23 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-01.internal (MEProxy); Fri, 13 Jun 2025 10:05:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alyssa.is; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1749823523; x= 1749909923; bh=TTo9863U8UncHglcsw3EyQV5ELxOH02BLZ0xPrtkb6U=; b=D EjM5grIHWaPiXeEGVCp13bZymUhDziDGS7Ru+x9767qZxUAuL+U4PWrkzChpAqdi 8dQlslMUuaqNExIE/ctIdm96dXASuWAjNU7muefNdEsIldNb4vN3pFBXGALAmCr+ GjwpPwPYbi3EMoJzcspyozaxKihXsEDgeJNbZ0Qa4/meecfKLWFp7+EZR/dHhkT3 uOP8raVxTDNU7QmHf2hgHNpf+0G05BpfghC+pt8JVQQgwFrq3gLj6ZzAmk4GMc+8 rFr2ysSAquUccL8MxmEc5eXSN0xFlESC4p94e12wrpS72uez9EracxQOlHRXtJJ8 /uyqv2iqJwiZqdgI6UeUQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1749823523; x=1749909923; bh=T To9863U8UncHglcsw3EyQV5ELxOH02BLZ0xPrtkb6U=; b=aaFq/Zs1O8J6vyVJc cn9j6Rvs5O3qFU7hNgS5YrsbU+G/RAkEg6O0jgCK+373jO7NEOwSyfIUjS6mz/KO jlcxp8OmcKdgZsslMQimnC/8UJgWcyumBVllNjR7WbZQd3fnufgEiG1MB/P6OTX6 KqB1A0S6jlJC44MFdLFOJsa8csnNpQyUqzEeWkamjJ1oL1RWjk3N93+lCzNpI5Eh l4LjZbifvQkcBFZgeiv7SK/db4UCX52tFcVTisdpsnoVbDh+nMpiBiF/yS5b2LVC HQEQtfWOLJGYcGVSKcwT/BiB8ie3lIBOV5tyWslb0UqpVLA/jCdCWJFvpyeTMelW P1EOA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddugddukedugecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecunecujfgurhephffvve fufffkofgjfhgggfestdekredtredttdenucfhrhhomheptehlhihsshgrucftohhsshcu oehhihesrghlhihsshgrrdhisheqnecuggftrfgrthhtvghrnhepudeljeeuhffgkeettd eggeetheefueffhedvjeevgedtudeggedvffegtedukeevnecuffhomhgrihhnpehprhho vhhiuggvrhhsrdhnvghtpdhlihgsrhgvshhslhdrnhgtnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhephhhisegrlhihshhsrgdrihhspdhnsggp rhgtphhtthhopedvpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeguvghvvghlse hsphgvtghtrhhumhdqohhsrdhorhhgpdhrtghpthhtohephihukhgrseihuhhkrgdruggv vh X-ME-Proxy: Feedback-ID: i12284293:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 13 Jun 2025 10:05:22 -0400 (EDT) Received: by sf.qyliss.net (Postfix, from userid 1000) id BF138245D66FD; Fri, 13 Jun 2025 16:05:20 +0200 (CEST) From: Alyssa Ross To: devel@spectrum-os.org Subject: [PATCH 2/8] release/checks/integration: init from networking Date: Fri, 13 Jun 2025 16:05:02 +0200 Message-ID: <20250613140508.76998-3-hi@alyssa.is> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250613140508.76998-1-hi@alyssa.is> References: <20250613140508.76998-1-hi@alyssa.is> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: HSE4462RRXFK3Q4FRNCX6RE32LAKGU2Y X-Message-ID-Hash: HSE4462RRXFK3Q4FRNCX6RE32LAKGU2Y X-MailFrom: hi@alyssa.is X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-devel.spectrum-os.org-0; header-match-devel.spectrum-os.org-1; header-match-devel.spectrum-os.org-2; header-match-devel.spectrum-os.org-3; header-match-devel.spectrum-os.org-4; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Yureka X-Mailman-Version: 3.3.9 Precedence: list List-Id: Patches and low-level development discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Combining integration tests into a single Meson project will allow easily sharing code between tests. Signed-off-by: Alyssa Ross --- release/checks/default.nix | 4 +- release/checks/integration/default.nix | 87 +++++++++++++++++++ release/checks/integration/meson.build | 16 ++++ release/checks/integration/meson_options.txt | 6 ++ .../test.c => integration/networking.c} | 4 +- release/checks/networking/default.nix | 62 ------------- release/checks/pkg-tests.nix | 2 +- 7 files changed, 114 insertions(+), 67 deletions(-) create mode 100644 release/checks/integration/default.nix create mode 100644 release/checks/integration/meson.build create mode 100644 release/checks/integration/meson_options.txt rename release/checks/{networking/test.c => integration/networking.c} (98%) delete mode 100644 release/checks/networking/default.nix diff --git a/release/checks/default.nix b/release/checks/default.nix index e8ade9f..4c5ea2a 100644 --- a/release/checks/default.nix +++ b/release/checks/default.nix @@ -14,9 +14,9 @@ import ../../lib/call-package.nix ({ callSpectrumPackage }: doc-anchors = callSpectrumPackage ./doc-anchors.nix {}; - pkg-tests = callSpectrumPackage ./pkg-tests.nix {}; + integration = callSpectrumPackage ./integration {}; - networking = callSpectrumPackage ./networking {}; + pkg-tests = callSpectrumPackage ./pkg-tests.nix {}; no-roothash = callSpectrumPackage ./no-roothash.nix {}; diff --git a/release/checks/integration/default.nix b/release/checks/integration/default.nix new file mode 100644 index 0000000..f2996fd --- /dev/null +++ b/release/checks/integration/default.nix @@ -0,0 +1,87 @@ +# SPDX-License-Identifier: MIT +# SPDX-FileCopyrightText: 2023, 2025 Alyssa Ross + +import ../../../lib/call-package.nix ( +{ callSpectrumPackage, src, lib, stdenv, runCommand, writeShellScript +, clang-tools, meson, ninja, e2fsprogs, tar2ext4, libressl, qemu_kvm +}: + +let + live = callSpectrumPackage ../../live {}; + + ncVm = callSpectrumPackage ../../../vm/make-vm.nix {} { + providers.net = [ "sys.netvm" ]; + type = "nix"; + run = writeShellScript "run" '' + set -x + while ! echo hello | ${libressl.nc}/bin/nc -N 10.0.2.2 1234; do :; done + ''; + }; + + userData = runCommand "user-data.img" { + nativeBuildInputs = [ e2fsprogs tar2ext4 ]; + } '' + tar --transform=s,^${ncVm},vms/nc, -Pcvf root.tar ${ncVm} + tar2ext4 -i root.tar -o $out + tune2fs -U a7834806-2f82-4faf-8ac4-4f8fd8a474ca $out + ''; +in + +stdenv.mkDerivation (finalAttrs: { + name = "spectrum-integration-tests"; + + src = lib.fileset.toSource { + root = ../../..; + fileset = lib.fileset.union + (lib.fileset.intersection src ./.) + ../../../scripts/run-qemu.sh; + }; + sourceRoot = "source/release/checks/integration"; + + nativeBuildInputs = [ meson ninja ]; + nativeCheckInputs = [ qemu_kvm ]; + + mesonFlags = [ + "-Defi=${qemu_kvm}/share/qemu/edk2-${stdenv.hostPlatform.qemuArch}-code.fd" + "-Dimg=${live}" + "-Duser_data=${userData}" + ]; + + doCheck = true; + + installPhase = '' + runHook preInstall + cp meson-logs/testlog.txt $out + runHook postInstall + ''; + + shellHook = '' + unset QEMU_SYSTEM + ''; + + env = { + QEMU_SYSTEM = "qemu-system-${stdenv.hostPlatform.qemuArch} -nographic"; + }; + + passthru.tests = { + clang-tidy = finalAttrs.finalPackage.overrideAttrs ( + { name, src, nativeBuildInputs ? [], ... }: + { + name = "${name}-clang-tidy"; + + src = lib.fileset.toSource { + root = ../../..; + fileset = lib.fileset.union (lib.fileset.fromSource src) ../../../.clang-tidy; + }; + + nativeBuildInputs = nativeBuildInputs ++ [ clang-tools ]; + + buildPhase = '' + clang-tidy --warnings-as-errors='*' -p . ../*.c ../*.h + touch $out + exit 0 + ''; + } + ); + }; +})) (_: {}) diff --git a/release/checks/integration/meson.build b/release/checks/integration/meson.build new file mode 100644 index 0000000..3f273b4 --- /dev/null +++ b/release/checks/integration/meson.build @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: EUPL-1.2+ +# SPDX-FileCopyrightText: 2025 Alyssa Ross + +project('spectrum-integration-tests', 'c', + default_options : { 'c_std': 'c23' }, + meson_version : '>=1.6.0') + +add_project_arguments('-D_GNU_SOURCE', language : 'c') + +test('networking', executable('networking', 'networking.c'), + args : [ + find_program('../../../scripts/run-qemu.sh'), + get_option('efi'), + get_option('img'), + get_option('user_data'), + ]) diff --git a/release/checks/integration/meson_options.txt b/release/checks/integration/meson_options.txt new file mode 100644 index 0000000..2d290de --- /dev/null +++ b/release/checks/integration/meson_options.txt @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: EUPL-1.2+ +# SPDX-FileCopyrightText: 2025 Alyssa Ross + +option('efi', type : 'string') +option('img', type : 'string') +option('user_data', type : 'string') diff --git a/release/checks/networking/test.c b/release/checks/integration/networking.c similarity index 98% rename from release/checks/networking/test.c rename to release/checks/integration/networking.c index 2bf0eb4..44dccf3 100644 --- a/release/checks/networking/test.c +++ b/release/checks/integration/networking.c @@ -321,8 +321,8 @@ int main(int argc, char *argv[]) "mount \"$(findfs UUID=a7834806-2f82-4faf-8ac4-4f8fd8a474ca)\" /run/mnt\n" "s6-rc -bu change vmm-env\n" "vm-import user /run/mnt/vms\n" - "vm-start user.vm\n" - "tail -Fc +0 /run/log/current /run/user.vm.log\r\n", + "vm-start user.nc\n" + "tail -Fc +0 /run/log/current /run/user.nc.log\r\n", console) == EOF) { fputs("error writing to console\n", stderr); exit(EXIT_FAILURE); diff --git a/release/checks/networking/default.nix b/release/checks/networking/default.nix deleted file mode 100644 index 4280e7e..0000000 --- a/release/checks/networking/default.nix +++ /dev/null @@ -1,62 +0,0 @@ -# SPDX-License-Identifier: MIT -# SPDX-FileCopyrightText: 2023, 2025 Alyssa Ross - -import ../../../lib/call-package.nix ( -{ callSpectrumPackage, lib, stdenv, runCommand, runCommandCC, writeShellScript -, clang-tools, e2fsprogs, tar2ext4, libressl, qemu_kvm -}: - -let - live = callSpectrumPackage ../../live {}; - - vm = callSpectrumPackage ../../../vm/make-vm.nix {} { - providers.net = [ "sys.netvm" ]; - type = "nix"; - run = writeShellScript "run" '' - set -x - while ! echo hello | ${libressl.nc}/bin/nc -N 10.0.2.2 1234; do :; done - ''; - }; - - userData = runCommand "user-data.img" { - nativeBuildInputs = [ e2fsprogs tar2ext4 ]; - } '' - tar --transform=s,^${vm},vms/vm, -Pcvf root.tar ${vm} - tar2ext4 -i root.tar -o $out - tune2fs -U a7834806-2f82-4faf-8ac4-4f8fd8a474ca $out - ''; - - cflags = [ "-std=c23" "-D_GNU_SOURCE" ]; - - test = runCommandCC "test" {} '' - $CC -o $out ${lib.escapeShellArgs cflags} ${./test.c} - ''; - - testScript = writeShellScript "spectrum-networking-test" '' - PATH=${lib.escapeShellArg (lib.makeBinPath [ qemu_kvm ])}:"$PATH" - exec ${test} \ - ${../../../scripts/run-qemu.sh} \ - ${qemu_kvm}/share/qemu/edk2-${stdenv.hostPlatform.qemuArch}-code.fd \ - ${live} \ - ${userData} - ''; -in - -runCommand "run-${testScript.name}" { - inherit testScript userData; - - passthru.tests = { - clang-tidy = runCommand "run-${testScript.name}-clang-tidy" { - nativeBuildInputs = [ clang-tools ]; - } '' - clang-tidy --config-file=${../../../.clang-tidy} --warnings-as-errors='*' \ - ${lib.escapeShellArgs (map (flag: "--extra-arg=${flag}") cflags)} \ - ${./test.c} - touch $out - ''; - }; -} '' - export QEMU_SYSTEM='qemu-system-${stdenv.hostPlatform.qemuArch} -nographic' - $testScript - touch $out -'') (_: {}) diff --git a/release/checks/pkg-tests.nix b/release/checks/pkg-tests.nix index 97baaf3..cf58603 100644 --- a/release/checks/pkg-tests.nix +++ b/release/checks/pkg-tests.nix @@ -9,7 +9,7 @@ import ../../lib/call-package.nix ( lseek = lib.recurseIntoAttrs lseek.tests; - networking = lib.recurseIntoAttrs (callSpectrumPackage ./networking {}).tests; + integration = lib.recurseIntoAttrs (callSpectrumPackage ./integration {}).tests; start-vmm = lib.recurseIntoAttrs start-vmm.tests; -- 2.49.0