Add qemuArgs to tests, invoke tests with testEnv
Execute QEMU tests with ${qemuArgs}, rename env to testEnv and merge testEnv into test shell variables.
This commit is contained in:
parent
9349b3acb8
commit
629e6930c7
|
@ -37,22 +37,22 @@ let
|
||||||
defaultScript = ''run_genode_until {[init] child "harness" exited with exit value 0} 60'';
|
defaultScript = ''run_genode_until {[init] child "harness" exited with exit value 0} 60'';
|
||||||
|
|
||||||
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig, testInputs ? [ ]
|
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig, testInputs ? [ ]
|
||||||
, env ? { }, ... # TODO: remove ...
|
, testEnv ? { }, qemuArgs ? [], ...
|
||||||
}@t:
|
}@t:
|
||||||
let
|
let
|
||||||
testConfig' = "${./driver-hw-config.dhall} ${testConfig}";
|
testConfig' = "${./driver-hw-config.dhall} ${testConfig}";
|
||||||
manifest = lib.mergeManifests (with testPkgs;
|
manifest = lib.mergeManifests (with testPkgs;
|
||||||
[ base-hw-pc genode.os sotest-producer ]
|
[ base-hw-pc genode.os sotest-producer ]
|
||||||
++ testInputs);
|
++ testInputs);
|
||||||
env' = {
|
testEnv' = {
|
||||||
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
||||||
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
||||||
MANIFEST = manifest;
|
MANIFEST = manifest;
|
||||||
XDG_CACHE_HOME = "/tmp";
|
XDG_CACHE_HOME = "/tmp";
|
||||||
} // env;
|
} // testEnv;
|
||||||
|
|
||||||
image = apps.hw-image.function env' testConfig';
|
image = apps.hw-image.function testEnv' testConfig';
|
||||||
|
|
||||||
baseSetup = ''
|
baseSetup = ''
|
||||||
##
|
##
|
||||||
|
@ -93,12 +93,13 @@ let
|
||||||
|
|
||||||
global env
|
global env
|
||||||
global spawn_id
|
global spawn_id
|
||||||
set TEST_MIB [expr ($env(TEST_RAM) / 1048576) + 16]
|
set TEST_MIB [expr (([file size ${image}] + $env(TEST_RAM)) >> 20) + 24]
|
||||||
spawn ${hostPkgs.qemu_test}/bin/qemu-system-x86_64 \
|
spawn ${hostPkgs.qemu_test}/bin/qemu-system-x86_64 \
|
||||||
-machine q35 -serial mon:stdio -nographic \
|
-machine q35 -serial mon:stdio -nographic \
|
||||||
-m size=$TEST_MIB \
|
-m size=$TEST_MIB \
|
||||||
-kernel "${testPkgs.bender}" \
|
-kernel "${testPkgs.bender}" \
|
||||||
-initrd "${image}"
|
-initrd "${image}" \
|
||||||
|
${toString qemuArgs}
|
||||||
wait_for_output $wait_for_re $timeout_value $spawn_id
|
wait_for_output $wait_for_re $timeout_value $spawn_id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,19 +109,17 @@ let
|
||||||
'';
|
'';
|
||||||
|
|
||||||
driver = with hostPkgs;
|
driver = with hostPkgs;
|
||||||
buildPackages.runCommand "genode-test-driver-${name}" {
|
buildPackages.runCommand "genode-test-driver-${name}" ({
|
||||||
buildInputs = [ makeWrapper expect ];
|
buildInputs = [ makeWrapper expect ];
|
||||||
inherit baseSetup testScript;
|
inherit baseSetup testScript;
|
||||||
preferLocalBuild = true;
|
preferLocalBuild = true;
|
||||||
testName = name;
|
testName = name;
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
} // testEnv') ''
|
||||||
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
|
||||||
MANIFEST = manifest;
|
|
||||||
} ''
|
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
echo "$testScript" > $out/test-script
|
echo "$testScript" > $out/test-script
|
||||||
echo "$baseSetup" > $out/base-setup
|
echo "$baseSetup" > $out/base-setup
|
||||||
eval $(${apps.dhall-to-bash.program} --declare "TEST_RAM" <<< "${./boot-ram.dhall} (${testConfig'})")
|
eval $(${apps.dhall-to-bash.program} --declare "TEST_RAM" \
|
||||||
|
<<< "${./boot-ram.dhall} (${testConfig'})")
|
||||||
ln -s ${testDriver}/bin/genode-test-driver $out/bin/
|
ln -s ${testDriver}/bin/genode-test-driver $out/bin/
|
||||||
wrapProgram $out/bin/genode-test-driver \
|
wrapProgram $out/bin/genode-test-driver \
|
||||||
--set testScript "$testScript" \
|
--set testScript "$testScript" \
|
||||||
|
@ -137,16 +136,16 @@ let
|
||||||
in test // {
|
in test // {
|
||||||
inherit driver image test manifest;
|
inherit driver image test manifest;
|
||||||
|
|
||||||
config = hostPkgs.runCommand (name + ".dhall") env' ''
|
config = hostPkgs.runCommand (name + ".dhall") testEnv' ''
|
||||||
${apps.dhall.program} <<< "${testConfig'}" > $out
|
${apps.dhall.program} <<< "${testConfig'}" > $out
|
||||||
'';
|
'';
|
||||||
|
|
||||||
iso = apps.hw-iso.function env' testConfig';
|
iso = apps.hw-iso.function testEnv' testConfig';
|
||||||
|
|
||||||
xml = hostPkgs.runCommand (name + ".config") env' ''
|
xml = hostPkgs.runCommand (name + ".config") testEnv' ''
|
||||||
${apps.render-init.program} "(${testConfig'}).config" > $out'';
|
${apps.render-init.program} "(${testConfig'}).config" > $out'';
|
||||||
|
|
||||||
sotest = hostPkgs.runCommand "hw-${name}-sotest" env' ''
|
sotest = hostPkgs.runCommand "hw-${name}-sotest" testEnv' ''
|
||||||
cp "${testPkgs.bender}" bender
|
cp "${testPkgs.bender}" bender
|
||||||
cp ${image} image.elf
|
cp ${image} image.elf
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
|
|
|
@ -37,22 +37,22 @@ let
|
||||||
defaultScript = ''run_genode_until {[init] child "harness" exited with exit value 0} 60'';
|
defaultScript = ''run_genode_until {[init] child "harness" exited with exit value 0} 60'';
|
||||||
|
|
||||||
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig, testInputs ? [ ]
|
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig, testInputs ? [ ]
|
||||||
, env ? { }, ... # TODO: remove ...
|
, testEnv ? { }, qemuArgs ? [], ...
|
||||||
}@t:
|
}@t:
|
||||||
let
|
let
|
||||||
testConfig' = "${./driver-nova-config.dhall} ${testConfig}";
|
testConfig' = "${./driver-nova-config.dhall} ${testConfig}";
|
||||||
manifest = lib.mergeManifests (with testPkgs;
|
manifest = lib.mergeManifests (with testPkgs;
|
||||||
[ base-nova genode.os sotest-producer ]
|
[ base-nova genode.os sotest-producer ]
|
||||||
++ testInputs);
|
++ testInputs);
|
||||||
env' = {
|
testEnv' = {
|
||||||
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
||||||
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
||||||
MANIFEST = manifest;
|
MANIFEST = manifest;
|
||||||
XDG_CACHE_HOME = "/tmp";
|
XDG_CACHE_HOME = "/tmp";
|
||||||
} // env;
|
} // testEnv;
|
||||||
|
|
||||||
image = apps.nova-image.function env' testConfig';
|
image = apps.nova-image.function testEnv' testConfig';
|
||||||
|
|
||||||
baseSetup = ''
|
baseSetup = ''
|
||||||
##
|
##
|
||||||
|
@ -93,12 +93,13 @@ let
|
||||||
|
|
||||||
global env
|
global env
|
||||||
global spawn_id
|
global spawn_id
|
||||||
set TEST_MIB [expr ($env(TEST_RAM) / 1048576) + 24]
|
set TEST_MIB [expr (([file size ${image}] + $env(TEST_RAM)) >> 20) + 24]
|
||||||
spawn ${hostPkgs.qemu_test}/bin/qemu-system-x86_64 \
|
spawn ${hostPkgs.qemu_test}/bin/qemu-system-x86_64 \
|
||||||
-machine q35 -serial mon:stdio -nographic \
|
-machine q35 -serial mon:stdio -nographic \
|
||||||
-m size=$TEST_MIB \
|
-m size=$TEST_MIB \
|
||||||
-kernel "${testPkgs.bender}" \
|
-kernel "${testPkgs.bender}" \
|
||||||
-initrd "${testPkgs.NOVA}/hypervisor-x86_64 arg=iommu novpid serial,${image}"
|
-initrd "${testPkgs.NOVA}/hypervisor-x86_64 arg=iommu novpid serial,${image}" \
|
||||||
|
${toString qemuArgs}
|
||||||
wait_for_output $wait_for_re $timeout_value $spawn_id
|
wait_for_output $wait_for_re $timeout_value $spawn_id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,19 +109,17 @@ let
|
||||||
'';
|
'';
|
||||||
|
|
||||||
driver = with hostPkgs;
|
driver = with hostPkgs;
|
||||||
buildPackages.runCommand "genode-test-driver-${name}" {
|
buildPackages.runCommand "genode-test-driver-${name}" ({
|
||||||
buildInputs = [ makeWrapper expect ];
|
buildInputs = [ makeWrapper expect ];
|
||||||
inherit baseSetup testScript;
|
inherit baseSetup testScript;
|
||||||
preferLocalBuild = true;
|
preferLocalBuild = true;
|
||||||
testName = name;
|
testName = name;
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
} // testEnv') ''
|
||||||
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
|
||||||
MANIFEST = manifest;
|
|
||||||
} ''
|
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
echo "$testScript" > $out/test-script
|
echo "$testScript" > $out/test-script
|
||||||
echo "$baseSetup" > $out/base-setup
|
echo "$baseSetup" > $out/base-setup
|
||||||
eval $(${apps.dhall-to-bash.program} --declare "TEST_RAM" <<< "${./boot-ram.dhall} (${testConfig'})")
|
eval $(${apps.dhall-to-bash.program} --declare "TEST_RAM" \
|
||||||
|
<<< "${./boot-ram.dhall} (${testConfig'})")
|
||||||
ln -s ${testDriver}/bin/genode-test-driver $out/bin/
|
ln -s ${testDriver}/bin/genode-test-driver $out/bin/
|
||||||
wrapProgram $out/bin/genode-test-driver \
|
wrapProgram $out/bin/genode-test-driver \
|
||||||
--set testScript "$testScript" \
|
--set testScript "$testScript" \
|
||||||
|
@ -137,17 +136,17 @@ let
|
||||||
in test // {
|
in test // {
|
||||||
inherit driver image test manifest;
|
inherit driver image test manifest;
|
||||||
|
|
||||||
config = hostPkgs.runCommand (name + ".dhall") env' ''
|
config = hostPkgs.runCommand (name + ".dhall") testEnv' ''
|
||||||
export XDG_CACHE_HOME=''${TMPDIR:-/tmp}
|
export XDG_CACHE_HOME=''${TMPDIR:-/tmp}
|
||||||
${apps.dhall.program} <<< "${testConfig'}" > $out
|
${apps.dhall.program} <<< "${testConfig'}" > $out
|
||||||
'';
|
'';
|
||||||
|
|
||||||
iso = apps.nova-iso.function env' "${testConfig'}";
|
iso = apps.nova-iso.function testEnv' "${testConfig'}";
|
||||||
|
|
||||||
xml = hostPkgs.runCommand (name + ".config") env' ''
|
xml = hostPkgs.runCommand (name + ".config") testEnv' ''
|
||||||
${apps.render-init.program} "(${testConfig'}).config" > $out'';
|
${apps.render-init.program} "(${testConfig'}).config" > $out'';
|
||||||
|
|
||||||
sotest = hostPkgs.runCommand "nova-${name}-sotest" env' ''
|
sotest = hostPkgs.runCommand "nova-${name}-sotest" testEnv' ''
|
||||||
cp "${testPkgs.bender}" bender
|
cp "${testPkgs.bender}" bender
|
||||||
cp "${testPkgs.NOVA}/hypervisor-x86_64" hypervisor
|
cp "${testPkgs.NOVA}/hypervisor-x86_64" hypervisor
|
||||||
cp ${image} image.elf
|
cp ${image} image.elf
|
||||||
|
|
Loading…
Reference in New Issue