forked from DGNum/liminix
a test for liminix-rebuild
it's hacky as Selby, but it's better than no test
This commit is contained in:
parent
ec1ff283da
commit
2152a3f207
6 changed files with 96 additions and 1 deletions
|
@ -101,7 +101,7 @@
|
||||||
"-drive" (.. "if=none,format=raw,id=hd0,file=" disk)
|
"-drive" (.. "if=none,format=raw,id=hd0,file=" disk)
|
||||||
"-device" "virtio-blk-pci,drive=hd0"
|
"-device" "virtio-blk-pci,drive=hd0"
|
||||||
]
|
]
|
||||||
(let [cmdline (.. cmdline " mem=256M liminix mtdparts=phram0:16M(rootfs) phram.phram=phram0," options.phram-address ",16Mi,65536 root=/dev/mtdblock0")]
|
(let [cmdline (.. "root=/dev/mtdblock0" " " cmdline " mem=256M liminix mtdparts=phram0:16M(rootfs) phram.phram=phram0," options.phram-address ",16Mi,65536")]
|
||||||
["-kernel" options.kernel "-append" cmdline])))
|
["-kernel" options.kernel "-append" cmdline])))
|
||||||
|
|
||||||
(local bin {
|
(local bin {
|
||||||
|
|
8
tests/min-copy-closure/config-ext4.nix
Normal file
8
tests/min-copy-closure/config-ext4.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ config, pkgs, lib, ... } :
|
||||||
|
{
|
||||||
|
imports= [
|
||||||
|
./configuration.nix
|
||||||
|
../../modules/outputs/ext4fs.nix
|
||||||
|
];
|
||||||
|
rootfsType = lib.mkForce "ext4";
|
||||||
|
}
|
58
tests/min-copy-closure/test-liminix-rebuild.sh
Normal file
58
tests/min-copy-closure/test-liminix-rebuild.sh
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
# This is a test for liminix-rebuild. It's not a CI test because
|
||||||
|
# liminix-rebuild calls nix-build so won't run inside a derivation,
|
||||||
|
# meaning you have to remember to run it manually when changing
|
||||||
|
# liminix-rebuild
|
||||||
|
|
||||||
|
# nix-shell -p expect socat --run "sh ./tests/min-copy-closure/test-liminix-rebuild.sh "
|
||||||
|
|
||||||
|
. tests/test-helpers.sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
here=$(pwd)/tests/min-copy-closure
|
||||||
|
top=$(pwd)
|
||||||
|
|
||||||
|
work=$(mktemp -d -t "test-lim-rebuild-XXXXXX")
|
||||||
|
echo $work
|
||||||
|
cd $work
|
||||||
|
|
||||||
|
deriv(){
|
||||||
|
(cd $top && nix-build -I liminix-config=${here}/config-ext4.nix --arg device "import ./devices/qemu-armv7l" -A $1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
PATH=$(deriv pkgs.pkgsBuildBuild.min-copy-closure)/bin:$(deriv pkgs.pkgsBuildBuild.run-liminix-vm)/bin:$PATH
|
||||||
|
|
||||||
|
rootfs=$(deriv outputs.rootfs)
|
||||||
|
kernel=$(deriv outputs.zimage)
|
||||||
|
uboot=$(deriv outputs.u-boot)
|
||||||
|
|
||||||
|
test -d ./vm && rm -rf vm
|
||||||
|
mkdir ./vm
|
||||||
|
|
||||||
|
cat ${rootfs} > rootfs
|
||||||
|
|
||||||
|
truncate -s 24M rootfs
|
||||||
|
resize2fs rootfs
|
||||||
|
|
||||||
|
dd if=rootfs of=disk-image bs=512 seek=4 conv=sync
|
||||||
|
echo '4,-,L,*' | sfdisk disk-image
|
||||||
|
|
||||||
|
run-liminix-vm --background vm \
|
||||||
|
--command-line "console=ttyAMA0 panic=10 oops=panic loglevel=8 root=/dev/vda1 rootfstype=ext4" \
|
||||||
|
--phram-address 0x50000000 --arch arm \
|
||||||
|
--lan "user,hostfwd=tcp::2022-:22" \
|
||||||
|
--flag -append --flag "root=/dev/vda1" --flag -hda \
|
||||||
|
--flag disk-image $kernel /dev/null
|
||||||
|
|
||||||
|
expect ${here}/wait-until-ready.expect
|
||||||
|
echo "READY"
|
||||||
|
|
||||||
|
touch known_hosts
|
||||||
|
export SSH_COMMAND="ssh -o UserKnownHostsFile=${work}/known_hosts -o StrictHostKeyChecking=no -p 2022 -i ${here}/id"
|
||||||
|
|
||||||
|
(cd ${top} && liminix-rebuild root@localhost -I liminix-config=${here}/with-figlet.nix --arg device "import ./devices/qemu-armv7l")
|
||||||
|
|
||||||
|
ls -l vm
|
||||||
|
|
||||||
|
cd ${work} && expect $here/wait-for-reboot.expect
|
||||||
|
cd / ; rm -rf $work
|
18
tests/min-copy-closure/wait-for-reboot.expect
Normal file
18
tests/min-copy-closure/wait-for-reboot.expect
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
set timeout 60
|
||||||
|
|
||||||
|
spawn socat unix-connect:vm/console -
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"s6-svscan exited" { }
|
||||||
|
timeout { exit 1 }
|
||||||
|
}
|
||||||
|
expect {
|
||||||
|
"s6-linux-init" { send "\r\n" };
|
||||||
|
"# " { send "\r\n" };
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"# " { send "echo \$PATH; md5sum /persist/activate; figlet Yes\r\n" };
|
||||||
|
}
|
||||||
|
|
||||||
|
expect "#"
|
|
@ -2,3 +2,7 @@ set timeout 60
|
||||||
|
|
||||||
spawn socat unix-connect:vm/console -
|
spawn socat unix-connect:vm/console -
|
||||||
send "\r\n"
|
send "\r\n"
|
||||||
|
expect {
|
||||||
|
"# " { send "hostname\r\n" };
|
||||||
|
}
|
||||||
|
expect "(none)"
|
7
tests/min-copy-closure/with-figlet.nix
Normal file
7
tests/min-copy-closure/with-figlet.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{ pkgs, ... } :
|
||||||
|
{
|
||||||
|
imports= [./config-ext4.nix];
|
||||||
|
defaultProfile.packages = with pkgs; [
|
||||||
|
figlet
|
||||||
|
];
|
||||||
|
}
|
Loading…
Reference in a new issue