This patch adds a set of tests for vmd config parsing. Comments? Ok?
diff --git regress/usr.sbin/Makefile regress/usr.sbin/Makefile index 3912e794d4d..f19a656d45e 100644 --- regress/usr.sbin/Makefile +++ regress/usr.sbin/Makefile @@ -12,6 +12,7 @@ SUBDIR += relayd SUBDIR += snmpd SUBDIR += switchd SUBDIR += syslogd +SUBDIR += vmd .if defined(REGRESS_FULL) || make(clean) || make(cleandir) || make(obj) SUBDIR += pkg_add diff --git regress/usr.sbin/vmd/Makefile regress/usr.sbin/vmd/Makefile new file mode 100644 index 00000000000..6c6671ada3f --- /dev/null +++ regress/usr.sbin/vmd/Makefile @@ -0,0 +1,5 @@ +# $OpenBSD$ + +SUBDIR += config + +.include <bsd.subdir.mk> diff --git regress/usr.sbin/vmd/config/Makefile regress/usr.sbin/vmd/config/Makefile new file mode 100644 index 00000000000..f5f58658af6 --- /dev/null +++ regress/usr.sbin/vmd/config/Makefile @@ -0,0 +1,32 @@ +# $OpenBSD$ + +VMD ?= /usr/sbin/vmd + +VMD_PASS=boot-keyword memory-round memory-just-enough +VMD_FAIL=kernel-keyword too-few-ram vm-name-too-long too-many-ifs \ + boot-name-too-long disk-path-too-long too-many-disks + +REGRESS_TARGETS= + +.for n in ${VMD_PASS} +REGRESS_TARGETS += vmd-pass-${n} + +vmd-pass-${n}: + @echo '======== $@ ========' + ${VMD} -n -f ${.CURDIR}/vmd-pass-${n}.conf 2>&1 | \ + diff -u ${.CURDIR}/vmd-pass-${n}.ok /dev/stdin +.endfor + +.for n in ${VMD_FAIL} +REGRESS_TARGETS += vmd-fail-${n} + +vmd-fail-${n}: + @echo '======== $@ ========' + ${VMD} -n -f ${.CURDIR}/vmd-fail-${n}.conf 2>&1 | \ + cut -d : -f 2,3,4 | \ + diff -u ${.CURDIR}/vmd-fail-${n}.ok /dev/stdin +.endfor + +.PHONY: ${REGRESS_TARGETS} + +.include <bsd.regress.mk> diff --git regress/usr.sbin/vmd/config/vmd-fail-boot-name-too-long.conf regress/usr.sbin/vmd/config/vmd-fail-boot-name-too-long.conf new file mode 100644 index 00000000000..bc569a9119e --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-boot-name-too-long.conf @@ -0,0 +1,6 @@ +# $OpenBSD$ +# Fail on boot path (> 128) +ramdisk="/some/absolutepath/somewhere/abcdefghijklmnopqrstuvwxyz0123456789/abcdefghijklmnopqrstuvwxyz0123456789/abcdefghijklmnopqrstuvwxyz0123456789/bsd.rd" +vm "x" { + boot $ramdisk +} diff --git regress/usr.sbin/vmd/config/vmd-fail-boot-name-too-long.ok regress/usr.sbin/vmd/config/vmd-fail-boot-name-too-long.ok new file mode 100644 index 00000000000..56cb73b98cf --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-boot-name-too-long.ok @@ -0,0 +1 @@ +5: kernel name too long diff --git regress/usr.sbin/vmd/config/vmd-fail-disk-path-too-long.conf regress/usr.sbin/vmd/config/vmd-fail-disk-path-too-long.conf new file mode 100644 index 00000000000..b70c3acf507 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-disk-path-too-long.conf @@ -0,0 +1,6 @@ +# $OpenBSD$ +# Fail on disk path (> 128) +rdisk="/some/absolutepath/somewhere/abcdefghijklmnopqrstuvwxyz0123456789/abcdefghijklmnopqrstuvwxyz0123456789/abcdefghijklmnopqrstuvwxyz0123456789/bsd.img" +vm "x" { + disk $rdisk +} diff --git regress/usr.sbin/vmd/config/vmd-fail-disk-path-too-long.ok regress/usr.sbin/vmd/config/vmd-fail-disk-path-too-long.ok new file mode 100644 index 00000000000..a384c812362 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-disk-path-too-long.ok @@ -0,0 +1,2 @@ +disk path too long +5: failed to parse disks: /some/absolutepath/somewhere/abcdefghijklmnopqrstuvwxyz0123456789/abcdefghijklmnopqrstuvwxyz0123456789/abcdefghijklmnopqrstuvwxyz0123456789/bsd.img diff --git regress/usr.sbin/vmd/config/vmd-fail-kernel-keyword.conf regress/usr.sbin/vmd/config/vmd-fail-kernel-keyword.conf new file mode 100644 index 00000000000..3505def581b --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-kernel-keyword.conf @@ -0,0 +1,12 @@ +# $OpenBSD$ +# Fail on kernel keyword; has been replaced by boot. +ramdisk="/bsd.rd" +switch "sw" { + add vether0 +} +vm "x" { + kernel $ramdisk + memory 1G + disable + interface { switch "sw" } +} diff --git regress/usr.sbin/vmd/config/vmd-fail-kernel-keyword.ok regress/usr.sbin/vmd/config/vmd-fail-kernel-keyword.ok new file mode 100644 index 00000000000..348817b1477 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-kernel-keyword.ok @@ -0,0 +1 @@ +8: syntax error diff --git regress/usr.sbin/vmd/config/vmd-fail-too-few-ram.conf regress/usr.sbin/vmd/config/vmd-fail-too-few-ram.conf new file mode 100644 index 00000000000..f8b27056dea --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-too-few-ram.conf @@ -0,0 +1,5 @@ +# $OpenBSD$ +# Fail on memory (less than 1MB) +vm "x" { + memory 1048575 +} diff --git regress/usr.sbin/vmd/config/vmd-fail-too-few-ram.ok regress/usr.sbin/vmd/config/vmd-fail-too-few-ram.ok new file mode 100644 index 00000000000..0cf48a97eaf --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-too-few-ram.ok @@ -0,0 +1,2 @@ +size must be at least one megabyte +4: failed to parse size: 1048575 diff --git regress/usr.sbin/vmd/config/vmd-fail-too-many-disks.conf regress/usr.sbin/vmd/config/vmd-fail-too-many-disks.conf new file mode 100644 index 00000000000..d1b8253e386 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-too-many-disks.conf @@ -0,0 +1,9 @@ +# $OpenBSD$ +# Fail on num disks (> 4) +vm "x" { + disk "disk0.img" + disk "disk1.img" + disk "disk2.img" + disk "disk3.img" + disk "disk4.img" +} diff --git regress/usr.sbin/vmd/config/vmd-fail-too-many-disks.ok regress/usr.sbin/vmd/config/vmd-fail-too-many-disks.ok new file mode 100644 index 00000000000..64794fbf074 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-too-many-disks.ok @@ -0,0 +1,2 @@ +too many disks +8: failed to parse disks: disk4.img diff --git regress/usr.sbin/vmd/config/vmd-fail-too-many-ifs.conf regress/usr.sbin/vmd/config/vmd-fail-too-many-ifs.conf new file mode 100644 index 00000000000..04fb2adea23 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-too-many-ifs.conf @@ -0,0 +1,5 @@ +# $OpenBSD$ +# Fail on nifs (> 4) +vm "a" { + nifs 5 +} diff --git regress/usr.sbin/vmd/config/vmd-fail-too-many-ifs.ok regress/usr.sbin/vmd/config/vmd-fail-too-many-ifs.ok new file mode 100644 index 00000000000..219cba51f0b --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-too-many-ifs.ok @@ -0,0 +1 @@ +4: syntax error diff --git regress/usr.sbin/vmd/config/vmd-fail-vm-name-too-long.conf regress/usr.sbin/vmd/config/vmd-fail-vm-name-too-long.conf new file mode 100644 index 00000000000..72872a25c4d --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-vm-name-too-long.conf @@ -0,0 +1,4 @@ +# $OpenBSD$ +# Fail on VM name (> 32chars) +vm "abcdefghijklmnopqrstuvwxyz0123456789" { +} diff --git regress/usr.sbin/vmd/config/vmd-fail-vm-name-too-long.ok regress/usr.sbin/vmd/config/vmd-fail-vm-name-too-long.ok new file mode 100644 index 00000000000..1b99d3d7810 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-fail-vm-name-too-long.ok @@ -0,0 +1 @@ +3: vm name too long diff --git regress/usr.sbin/vmd/config/vmd-pass-boot-keyword.conf regress/usr.sbin/vmd/config/vmd-pass-boot-keyword.conf new file mode 100644 index 00000000000..06821482e89 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-pass-boot-keyword.conf @@ -0,0 +1,12 @@ +# $OpenBSD$ +# Pass on boot keyword as it has replaced the kernel keyword. +ramdisk="/bsd.rd" +switch "sw" { + add vether0 +} +vm "x" { + boot $ramdisk + memory 1G + disable + interface { switch "sw" } +} diff --git regress/usr.sbin/vmd/config/vmd-pass-boot-keyword.ok regress/usr.sbin/vmd/config/vmd-pass-boot-keyword.ok new file mode 100644 index 00000000000..403d828b763 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-pass-boot-keyword.ok @@ -0,0 +1 @@ +configuration OK diff --git regress/usr.sbin/vmd/config/vmd-pass-memory-just-enough.conf regress/usr.sbin/vmd/config/vmd-pass-memory-just-enough.conf new file mode 100644 index 00000000000..54bd5777e0e --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-pass-memory-just-enough.conf @@ -0,0 +1,5 @@ +# $OpenBSD$ +# Pass on memory (exactly 1MB) +vm "x" { + memory 1048576 +} diff --git regress/usr.sbin/vmd/config/vmd-pass-memory-just-enough.ok regress/usr.sbin/vmd/config/vmd-pass-memory-just-enough.ok new file mode 100644 index 00000000000..403d828b763 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-pass-memory-just-enough.ok @@ -0,0 +1 @@ +configuration OK diff --git regress/usr.sbin/vmd/config/vmd-pass-memory-round.conf regress/usr.sbin/vmd/config/vmd-pass-memory-round.conf new file mode 100644 index 00000000000..d193aa74aa5 --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-pass-memory-round.conf @@ -0,0 +1,5 @@ +# $OpenBSD$ +# Pass on memory (rounding to 1023MB) +vm "x" { + memory 1048575K +} diff --git regress/usr.sbin/vmd/config/vmd-pass-memory-round.ok regress/usr.sbin/vmd/config/vmd-pass-memory-round.ok new file mode 100644 index 00000000000..def650c449e --- /dev/null +++ regress/usr.sbin/vmd/config/vmd-pass-memory-round.ok @@ -0,0 +1,2 @@ +size rounded to 1023 megabytes +configuration OK -- 2.14.2