forked from M-Labs/nix-scripts
windows tests: rename default.nix to run-test.nix
default.nix will now run the tests outside of hydra.
This commit is contained in:
parent
448934fe6e
commit
d7917b4b5b
@ -12,8 +12,8 @@ Then press **return** to automatically complete the installation via SSH. The vi
|
||||
Move the image `c.img` to one of Nix' `extra-sandbox-paths` (`nix.sandboxPaths` on NixOS).
|
||||
|
||||
|
||||
# Running the tests
|
||||
# Running the tests manually
|
||||
|
||||
```shell
|
||||
nix-build --arg diskImage "\"…/c.img\""
|
||||
nix-build --pure --arg diskImage "\"…/c.img\"" -I artiqSrc=…/artiq
|
||||
```
|
||||
|
@ -2,61 +2,25 @@
|
||||
diskImage ? "/opt/windows/c.img",
|
||||
qemuMem ? "2G",
|
||||
testTimeout ? 180,
|
||||
artiqPkg ? import ../conda-artiq.nix { inherit pkgs; },
|
||||
testCommand ? "python -m unittest discover -v artiq.test",
|
||||
}:
|
||||
|
||||
with pkgs;
|
||||
|
||||
let
|
||||
escape = builtins.replaceStrings [ "\\" ] [ "\\\\" ];
|
||||
qemu = import ./qemu.nix {
|
||||
inherit pkgs qemuMem;
|
||||
diskImage = "c.img";
|
||||
};
|
||||
# Double-escape because we produce a script from a shell heredoc
|
||||
ssh = cmd: qemu.ssh (escape cmd);
|
||||
scp = qemu.scp;
|
||||
condaEnv = "artiq-env";
|
||||
windowsRunner = overrides:
|
||||
import ./run-test.nix {
|
||||
inherit pkgs diskImage qemuMem testTimeout;
|
||||
};
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "windows-test-runner";
|
||||
name = "windows-test";
|
||||
src = ./.;
|
||||
|
||||
propagatedBuildInputs = qemu.inputs;
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cat > $out/bin/run.sh << EOF
|
||||
# +1 day from last modification of the disk image
|
||||
CLOCK=$(date -Is -d @$(expr $(stat -c %Y ${diskImage}) + 86400))
|
||||
${qemu.runQemu true [
|
||||
"-boot" "order=c"
|
||||
"-snapshot"
|
||||
"-drive" "file=${diskImage},index=0,media=disk,cache=unsafe"
|
||||
"-rtc" "base=\\$CLOCK"
|
||||
"-display" "none"
|
||||
]} &
|
||||
|
||||
echo "Wait for Windows to boot"
|
||||
sleep 10
|
||||
${ssh "ver"}
|
||||
for pkg in ${artiqPkg}/noarch/artiq*.tar.bz2 ; do
|
||||
${scp "\\$pkg" "artiq.tar.bz2"}
|
||||
${ssh "anaconda\\scripts\\activate ${condaEnv} && conda install artiq.tar.bz2"}
|
||||
done
|
||||
|
||||
# Allow tests to run for 2 minutes
|
||||
${ssh "shutdown -s -t ${toString testTimeout}"}
|
||||
|
||||
${ssh "anaconda\\scripts\\activate ${condaEnv} && ${testCommand}"}
|
||||
|
||||
# Abort timeouted shutdown
|
||||
${ssh "shutdown -a"}
|
||||
# Power off immediately
|
||||
${ssh "shutdown -p -f"}
|
||||
EOF
|
||||
chmod a+x $out/bin/run.sh
|
||||
phases = [ "installPhase" "checkPhase" ];
|
||||
installPhase = "touch $out";
|
||||
doCheck = true;
|
||||
checkPhase = ''
|
||||
${windowsRunner { testCommand = "set ARTIQ_ROOT=%cd%\\anaconda\\envs\\artiq-env\\Lib\\site-packages\\artiq\\examples\\kc705_nist_clock&&set ARTIQ_LOW_LATENCY=1&&python -m unittest discover -v artiq.test"; }}/bin/run.sh
|
||||
'';
|
||||
}
|
||||
|
62
artiq/windows/run-test.nix
Normal file
62
artiq/windows/run-test.nix
Normal file
@ -0,0 +1,62 @@
|
||||
{ pkgs ? import <nixpkgs> {},
|
||||
diskImage ? "/opt/windows/c.img",
|
||||
qemuMem ? "2G",
|
||||
testTimeout ? 180,
|
||||
artiqPkg ? import ../conda-artiq.nix { inherit pkgs; },
|
||||
testCommand ? "python -m unittest discover -v artiq.test",
|
||||
}:
|
||||
|
||||
with pkgs;
|
||||
|
||||
let
|
||||
escape = builtins.replaceStrings [ "\\" ] [ "\\\\" ];
|
||||
qemu = import ./qemu.nix {
|
||||
inherit pkgs qemuMem;
|
||||
diskImage = "c.img";
|
||||
};
|
||||
# Double-escape because we produce a script from a shell heredoc
|
||||
ssh = cmd: qemu.ssh (escape cmd);
|
||||
scp = qemu.scp;
|
||||
condaEnv = "artiq-env";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "windows-test-runner";
|
||||
src = ./.;
|
||||
|
||||
propagatedBuildInputs = qemu.inputs;
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cat > $out/bin/run.sh << EOF
|
||||
# +1 day from last modification of the disk image
|
||||
CLOCK=$(date -Is -d @$(expr $(stat -c %Y ${diskImage}) + 86400))
|
||||
${qemu.runQemu true [
|
||||
"-boot" "order=c"
|
||||
"-snapshot"
|
||||
"-drive" "file=${diskImage},index=0,media=disk,cache=unsafe"
|
||||
"-rtc" "base=\\$CLOCK"
|
||||
"-display" "none"
|
||||
]} &
|
||||
|
||||
echo "Wait for Windows to boot"
|
||||
sleep 10
|
||||
${ssh "ver"}
|
||||
for pkg in ${artiqPkg}/noarch/artiq*.tar.bz2 ; do
|
||||
${scp "\\$pkg" "artiq.tar.bz2"}
|
||||
${ssh "anaconda\\scripts\\activate ${condaEnv} && conda install artiq.tar.bz2"}
|
||||
done
|
||||
|
||||
# Allow tests to run for 2 minutes
|
||||
${ssh "shutdown -s -t ${toString testTimeout}"}
|
||||
|
||||
${ssh "anaconda\\scripts\\activate ${condaEnv} && ${testCommand}"}
|
||||
|
||||
# Abort timeouted shutdown
|
||||
${ssh "shutdown -a"}
|
||||
# Power off immediately
|
||||
${ssh "shutdown -p -f"}
|
||||
EOF
|
||||
chmod a+x $out/bin/run.sh
|
||||
'';
|
||||
}
|
2
main.nix
2
main.nix
@ -31,7 +31,7 @@ let
|
||||
artiqpkgs = import "${generatedNix}/default.nix" { inherit pkgs; };
|
||||
artiqVersion = import "${generatedNix}/pkgs/artiq-version.nix";
|
||||
windowsRunner = overrides:
|
||||
import "${generatedNix}/windows" ({
|
||||
import "${generatedNix}/windows/run-test.nix" ({
|
||||
inherit pkgs;
|
||||
artiqPkg = artiqpkgs.conda-artiq;
|
||||
} // overrides);
|
||||
|
Loading…
Reference in New Issue
Block a user