On Tue, Oct 10, 2017 at 07:54:20PM -0700, Carlos Cardenas wrote: > This patch adds a set of tests for vmd config parsing. > > Comments? Ok? >
ok by me. I think bluhm@ also looked at this. bluhm, ok to commit? -ml > > 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 >