Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F177300297
D60981.1794110306.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None
D60981.1794110306.diff
View Options
diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile
--- a/usr.sbin/bhyve/Makefile
+++ b/usr.sbin/bhyve/Makefile
@@ -137,4 +137,7 @@
NO_WCAST_ALIGN=
+HAS_TESTS=
+SUBDIR.${MK_TESTS}+= tests
+
.include <bsd.prog.mk>
diff --git a/usr.sbin/bhyve/tests/Makefile b/usr.sbin/bhyve/tests/Makefile
new file mode 100644
--- /dev/null
+++ b/usr.sbin/bhyve/tests/Makefile
@@ -0,0 +1,5 @@
+PACKAGE= tests
+
+ATF_TESTS_SH+= bhyve_test
+
+.include <bsd.test.mk>
diff --git a/usr.sbin/bhyve/tests/bhyve_test.sh b/usr.sbin/bhyve/tests/bhyve_test.sh
new file mode 100644
--- /dev/null
+++ b/usr.sbin/bhyve/tests/bhyve_test.sh
@@ -0,0 +1,137 @@
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2026 The FreeBSD Foundation
+
+atf_test_case check_s_list
+check_s_list_head()
+{
+ atf_set "descr" "Check PCI device listing"
+ atf_set "require.progs" "bhyve"
+}
+
+check_s_list_body()
+{
+ atf_check -o save:devices bhyve -s help
+
+ # Output must be non-empty
+ atf_check test -s devices
+
+ # Confirm that device names contain no whitespace
+ atf_check -s ignore grep -E "[[:space:]]+" devices
+
+ # Confirm that duplicates aren't printed out
+ sort devices > devices.sorted
+ sort -u devices > devices.sorted-unique
+ atf_check diff -u devices.sorted-unique devices.sorted
+
+ # Check some essential devices available on all arches
+ for device in hostbridge nvme virtio-net; do
+ atf_check grep -Fxq "${device}" devices
+ done
+}
+
+atf_test_case check_l_list
+check_l_list_head()
+{
+ atf_set "descr" "Check LPC device listing"
+ atf_set "require.arch" "amd64"
+ atf_set "require.progs" "bhyve"
+}
+
+check_l_list_body()
+{
+ cat >expected <<EOF
+bootrom
+com1
+com2
+com3
+com4
+tpm
+pc-testdev
+EOF
+ atf_check -o file:expected bhyve -l help
+}
+
+atf_test_case check_o_list
+check_o_list_head()
+{
+ atf_set "descr" "Check config option listing"
+ atf_set "require.progs" "bhyve"
+}
+
+check_o_list_body()
+{
+ atf_check -o save:options bhyve -o help
+
+ # Output must be non-empty
+ atf_check test -s options
+
+ # Confirm that option names contain no whitespace
+ atf_check -s ignore grep -E "[[:space:]]+" options
+
+ # Confirm that duplicates aren't printed out
+ sort options > options.sorted
+ sort -u options > options.sorted-unique
+ atf_check diff -u options.sorted-unique options.sorted
+
+ # Options are sorted
+ atf_check env LC_ALL=C sort -c options
+
+ # Check the base schema, a linker-set extension,
+ # and an option-set inheritance
+ for option in memory.size pci.B.S.F.maxq pci.B.S.F.path; do
+ atf_check grep -Fxq "${option}" options
+ done
+
+ # Arch-specific option
+ case "$(uname -p)" in
+ amd64)
+ machdep_option="x86.strictmsr"
+ ;;
+ aarch64|riscv64)
+ machdep_option="console"
+ ;;
+ *)
+ atf_fail "unsupported architecture: $(uname -p)"
+ ;;
+ esac
+
+ atf_check grep -Fxq "${machdep_option}" options
+}
+
+atf_test_case check_config_dump_sanity
+check_config_dump_sanity_head()
+{
+ atf_set "descr" "Check config.dump=1 sanity"
+ atf_set "require.progs" "bhyve"
+}
+
+check_config_dump_sanity_body()
+{
+ atf_check -s exit:1 -o save:config \
+ bhyve -o memory.size=123M -o config.dump=1 test-vm
+
+ # Basic sanity
+ for value in \
+ "config.dump=1" \
+ "memory.size=123M" \
+ "name=test-vm"; do
+ atf_check grep -Fxq "${value}" config
+ done
+
+ # Check that generated config could be fed back with -k
+ atf_check -s exit:1 -o save:config.2 bhyve -k config
+
+ atf_check -o save:config.sorted env LC_ALL=C sort config
+ atf_check -o save:config.2.sorted env LC_ALL=C sort config.2
+
+ atf_check diff -u config.sorted config.2.sorted
+}
+
+atf_init_test_cases()
+{
+ atf_add_test_case check_s_list
+ atf_add_test_case check_l_list
+ atf_add_test_case check_o_list
+ atf_add_test_case check_config_dump_sanity
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Nov 8, 3:58 AM (13 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41566399
Default Alt Text
D60981.1794110306.diff (3 KB)
Attached To
Mode
D60981: bhyve: add basic tests
Attached
Detach File
Event Timeline