Re: [PATCH] tests for vmd config parsing

2017-10-11 Thread Alexander Bluhm
On Tue, Oct 10, 2017 at 10:57:22PM -0700, Mike Larkin wrote:
> 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

Committed, thanks for the test.  Passes on amd64 and i386.
Added to my daily test list.

bluhm



Re: [PATCH] tests for vmd config parsing

2017-10-10 Thread Mike Larkin
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 000..6c6671ada3f
> --- /dev/null
> +++ regress/usr.sbin/vmd/Makefile
> @@ -0,0 +1,5 @@
> +#$OpenBSD$
> +
> +SUBDIR += config
> +
> +.include 
> diff --git regress/usr.sbin/vmd/config/Makefile 
> regress/usr.sbin/vmd/config/Makefile
> new file mode 100644
> index 000..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 
> 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 000..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 000..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 000..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 000..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 000..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 000..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 000..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" {
> +  

[PATCH] tests for vmd config parsing

2017-10-10 Thread Carlos Cardenas
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 000..6c6671ada3f
--- /dev/null
+++ regress/usr.sbin/vmd/Makefile
@@ -0,0 +1,5 @@
+#  $OpenBSD$
+
+SUBDIR += config
+
+.include 
diff --git regress/usr.sbin/vmd/config/Makefile 
regress/usr.sbin/vmd/config/Makefile
new file mode 100644
index 000..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 
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 000..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 000..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 000..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 000..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 000..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 000..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 000..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 000..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