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

Reply via email to