aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorThomas Huth <thuth@redhat.com>2023-04-19 16:45:53 +0200
committerThomas Huth <thuth@redhat.com>2023-04-20 11:28:16 +0200
commitec6fb1c8cd8d55c3d2a34cacfea6df0fe6c76057 (patch)
tree5d5b95370511320131300c58c41af5d56cb53170 /tests
parentbcbbd95d2ae002242ebf971d6e1e9aefb75ac8e2 (diff)
tests/vm/freebsd: Update to FreeBSD 13.2
According to QEMU's support policy, we stop supporting the previous major release two years after the the new major release has been published. So we can stop testing FreeBSD 12 now and should switch our FreeBSD VM to version 13 instead. Some changes are needed for this update: The downloadable .ISO images do not use the serial port as console by default anymore, so they are not usable in the same way as with FreeBSD 12. Fortunately, the FreeBSD project now also offers some pre-installed CI images that have the serial console enabled, so we can use those now, with the benefit that we can skip almost all parts of the previous installation process. Message-Id: <20230419144553.719749-1-thuth@redhat.com> Reviewed-by: Warner Losh <imp@bsdimp.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'tests')
-rwxr-xr-xtests/vm/freebsd101
1 files changed, 25 insertions, 76 deletions
diff --git a/tests/vm/freebsd b/tests/vm/freebsd
index ba2ba23d24..11de6473f4 100755
--- a/tests/vm/freebsd
+++ b/tests/vm/freebsd
@@ -28,15 +28,15 @@ class FreeBSDVM(basevm.BaseVM):
name = "freebsd"
arch = "x86_64"
- link = "https://download.freebsd.org/ftp/releases/ISO-IMAGES/12.4/FreeBSD-12.4-RELEASE-amd64-disc1.iso.xz"
- csum = "1dcf6446e31bf3f81b582e9aba3319a258c29a937a2af6138ee4b181ed719a87"
+ link = "https://download.freebsd.org/releases/CI-IMAGES/13.2-RELEASE/amd64/Latest/FreeBSD-13.2-RELEASE-amd64-BASIC-CI.raw.xz"
+ csum = "a4fb3b6c7b75dd4d58fb0d75e4caf72844bffe0ca00e66459c028b198ffb3c0e"
size = "20G"
pkgs = [
# build tools
"git",
"pkgconf",
"bzip2",
- "python37",
+ "python39",
"ninja",
# gnu tools
@@ -78,72 +78,42 @@ class FreeBSDVM(basevm.BaseVM):
mkdir src build; cd src;
tar -xf /dev/vtbd1;
cd ../build
- ../src/configure --python=python3.7 {configure_opts};
+ ../src/configure --python=python3.9 {configure_opts};
gmake --output-sync -j{jobs} {target} {verbose};
"""
- def console_boot_serial(self):
- self.console_wait_send("Autoboot", "3")
- self.console_wait_send("OK", "set console=comconsole\n")
- self.console_wait_send("OK", "boot\n")
-
def build_image(self, img):
- self.print_step("Downloading install iso")
+ self.print_step("Downloading disk image")
cimg = self._download_with_cache(self.link, sha256sum=self.csum)
- img_tmp = img + ".tmp"
- iso = img + ".install.iso"
- iso_xz = iso + ".xz"
-
- self.print_step("Preparing iso and disk image")
- subprocess.check_call(["cp", "-f", cimg, iso_xz])
- subprocess.check_call(["xz", "-dvf", iso_xz])
- self.exec_qemu_img("create", "-f", "qcow2", img_tmp, self.size)
-
- self.print_step("Booting installer")
+ tmp_raw = img + ".tmp.raw"
+ tmp_raw_xz = tmp_raw + ".xz"
+ img_tmp = img + ".tmp.qcow2"
+
+ self.print_step("Preparing disk image")
+ subprocess.check_call(["cp", "-f", cimg, tmp_raw_xz])
+ subprocess.check_call(["xz", "-dvf", tmp_raw_xz])
+ self.exec_qemu_img("convert", "-O", "qcow2", tmp_raw, img_tmp)
+ self.exec_qemu_img("resize", img_tmp, self.size)
+ os.remove(tmp_raw)
+
+ self.print_step("Preparing disk image")
self.boot(img_tmp, extra_args = [
"-machine", "graphics=off",
- "-device", "VGA",
- "-cdrom", iso
+ "-vga", "none"
])
self.console_init()
- self.console_boot_serial()
- self.console_wait_send("Console type", "xterm\n")
-
- # pre-install configuration
- self.console_wait_send("Welcome", "\n")
- self.console_wait_send("Keymap Selection", "\n")
- self.console_wait_send("Set Hostname", "freebsd\n")
- self.console_wait_send("Distribution Select", "\n")
- self.console_wait_send("Partitioning", "\n")
- self.console_wait_send("Partition", "\n")
- self.console_wait_send("Scheme", "\n")
- self.console_wait_send("Editor", "f")
- self.console_wait_send("Confirmation", "c")
-
- self.print_step("Installation started now, this will take a while")
-
- # post-install configuration
+ self.console_wait_send("login:", "root\n")
+ self.console_wait_send("~ #", "service growfs onestart\n")
+
+ # root user
+ self.console_wait_send("~ #", "passwd\n")
self.console_wait("New Password:")
self.console_send("%s\n" % self._config["root_pass"])
self.console_wait("Retype New Password:")
self.console_send("%s\n" % self._config["root_pass"])
- self.console_wait_send("Network Configuration", "\n")
- self.console_wait_send("IPv4", "y")
- self.console_wait_send("DHCP", "y")
- self.console_wait_send("IPv6", "n")
- self.console_wait_send("Resolver", "\n")
-
- self.console_wait_send("Time Zone Selector", "0\n")
- self.console_wait_send("Confirmation", "y")
- self.console_wait_send("Time & Date", "\n")
- self.console_wait_send("Time & Date", "\n")
-
- self.console_wait_send("System Configuration", "\n")
- self.console_wait_send("System Hardening", "\n")
-
# qemu user
- self.console_wait_send("Add User Accounts", "y")
+ self.console_wait_send("~ #", "adduser\n")
self.console_wait("Username")
self.console_send("%s\n" % self._config["guest_user"])
self.console_wait("Full name")
@@ -165,13 +135,7 @@ class FreeBSDVM(basevm.BaseVM):
self.console_wait_send("Lock out", "\n")
self.console_wait_send("OK", "yes\n")
self.console_wait_send("Add another user", "no\n")
-
- self.console_wait_send("Final Configuration", "\n")
- self.console_wait_send("Manual Configuration", "\n")
- self.console_wait_send("Complete", "\n")
-
- self.print_step("Installation finished, rebooting")
- self.console_boot_serial()
+ self.console_wait_send("~ #", "exit\n")
# setup qemu user
prompt = "$"
@@ -183,35 +147,20 @@ class FreeBSDVM(basevm.BaseVM):
self.console_ssh_init(prompt, "root", self._config["root_pass"])
self.console_sshd_config(prompt)
- # setup serial console
- self.console_wait(prompt)
- self.console_send("echo 'console=comconsole' >> /boot/loader.conf\n")
-
- # setup boot delay
- self.console_wait(prompt)
- self.console_send("echo 'autoboot_delay=1' >> /boot/loader.conf\n")
-
# setup virtio-blk #1 (tarfile)
self.console_wait(prompt)
self.console_send("echo 'chmod 666 /dev/vtbd1' >> /etc/rc.local\n")
- self.print_step("Configuration finished, rebooting")
- self.console_wait_send(prompt, "reboot\n")
- self.console_wait("login:")
- self.wait_ssh()
-
self.print_step("Installing packages")
self.ssh_root_check("pkg install -y %s\n" % " ".join(self.pkgs))
# shutdown
self.ssh_root(self.poweroff)
- self.console_wait("Uptime:")
self.wait()
if os.path.exists(img):
os.remove(img)
os.rename(img_tmp, img)
- os.remove(iso)
self.print_step("All done")
if __name__ == "__main__":