From fced89d69cb9c6eb039cbcb222c7f269998bc42c Mon Sep 17 00:00:00 2001 From: jianli-97 Date: Thu, 11 Jan 2024 00:49:25 +0800 Subject: [PATCH] Update test cases and set default firmware to uefi on aarch64 --- mantle/Makefile | 3 ++- mantle/build | 3 ++- mantle/cmd/kola/qemuexec.go | 4 +++- mantle/kola/tests/coretest/core.go | 10 ++++----- mantle/kola/tests/misc/files.go | 1 + mantle/kola/tests/misc/network.go | 4 ++++ mantle/kola/tests/podman/podman.go | 12 ++++++----- mantle/platform/machine/unprivqemu/cluster.go | 4 +++- mantle/platform/qemu.go | 21 +++++++++++++++---- 9 files changed, 44 insertions(+), 18 deletions(-) diff --git a/mantle/Makefile b/mantle/Makefile index b39d9ab0..b68a6d02 100644 --- a/mantle/Makefile +++ b/mantle/Makefile @@ -2,7 +2,8 @@ PREFIX ?= /usr DESTDIR ?= MANTLE_BINARIES := ore kola plume -KOLET_ARCHES := aarch64 ppc64le s390x x86_64 +#KOLET_ARCHES := aarch64 ppc64le s390x x86_64 +KOLET_ARCHES := aarch64 x86_64 .PHONY: build build: $(MANTLE_BINARIES) kolet diff --git a/mantle/build b/mantle/build index 4bd43f8c..82509994 100755 --- a/mantle/build +++ b/mantle/build @@ -11,7 +11,8 @@ if [[ $# -eq 0 ]]; then fi declare -A BASEARCH_TO_GOARCH=([s390x]=s390x [x86_64]=amd64 [aarch64]=arm64 [ppc64le]=ppc64le) -KOLET_ARCHES="${KOLET_ARCHES:-s390x x86_64 aarch64 ppc64le}" +#KOLET_ARCHES="${KOLET_ARCHES:-s390x x86_64 aarch64 ppc64le}" +KOLET_ARCHES="${KOLET_ARCHES:-x86_64 aarch64}" race= if [ -n "${ENABLE_GO_RACE_DETECTOR:-}" ] && [[ ! "$(uname -m)" =~ "s390" ]]; then diff --git a/mantle/cmd/kola/qemuexec.go b/mantle/cmd/kola/qemuexec.go index 1f20770d..0fc1982e 100644 --- a/mantle/cmd/kola/qemuexec.go +++ b/mantle/cmd/kola/qemuexec.go @@ -268,7 +268,9 @@ func runQemuExec(cmd *cobra.Command, args []string) error { builder.AppendFirstbootKernelArgs = firstbootkargs } builder.AppendKernelArgs = strings.Join(kargs, " ") - builder.Firmware = kola.QEMUOptions.Firmware + if kola.QEMUOptions.Firmware != "" { + builder.Firmware = kola.QEMUOptions.Firmware + } if kola.QEMUOptions.DiskImage != "" { channel := "virtio" if kola.QEMUOptions.Nvme { diff --git a/mantle/kola/tests/coretest/core.go b/mantle/kola/tests/coretest/core.go index c5e76694..cad16aab 100644 --- a/mantle/kola/tests/coretest/core.go +++ b/mantle/kola/tests/coretest/core.go @@ -101,27 +101,27 @@ func TestPortSsh() error { func TestDockerEcho() error { //t.Parallel() - return util.RunCmdTimeout(DockerTimeout, "docker", "run", "busybox", "echo") + return util.RunCmdTimeout(DockerTimeout, "docker", "run", "docker.nju.edu.cn/library/busybox", "echo") } func TestDockerPing() error { //t.Parallel() - return util.RunCmdTimeout(DockerTimeout, "docker", "run", "busybox", "ping", "-c4", "coreos.com") + return util.RunCmdTimeout(DockerTimeout, "docker", "run", "docker.nju.edu.cn/library/busybox", "ping", "-c4", "coreos.com") } func TestPodmanEcho() error { //t.Parallel() - return util.RunCmdTimeout(DockerTimeout, "podman", "run", "busybox", "echo") + return util.RunCmdTimeout(DockerTimeout, "podman", "run", "docker.nju.edu.cn/library/busybox", "echo") } func TestPodmanPing() error { //t.Parallel() - return util.RunCmdTimeout(DockerTimeout, "podman", "run", "busybox", "ping", "-c4", "coreos.com") + return util.RunCmdTimeout(DockerTimeout, "podman", "run", "docker.nju.edu.cn/library/busybox", "ping", "-c4", "coreos.com") } func TestPodmanWgetHead() error { //t.Parallel() - return util.RunCmdTimeout(DockerTimeout, "podman", "run", "busybox", "wget", "--spider", "http://fedoraproject.org/static/hotspot.txt") + return util.RunCmdTimeout(DockerTimeout, "podman", "run", "docker.nju.edu.cn/library/busybox", "wget", "--spider", "https://nestos.org.cn/kola/hotspot.txt") } // This execs gdbus, because we need to change uses to test perms. diff --git a/mantle/kola/tests/misc/files.go b/mantle/kola/tests/misc/files.go index 535636a8..cefae538 100644 --- a/mantle/kola/tests/misc/files.go +++ b/mantle/kola/tests/misc/files.go @@ -78,6 +78,7 @@ func StickyDirs(c cluster.TestCluster) { "/tmp", "/var/tmp", "/run/user/1000/libpod", + "/run/ephemeral/var/tmp", } output := c.MustSSH(m, fmt.Sprintf("sudo find / -ignore_readdir_race -path %s -prune -o -type d -perm /1000 -print", strings.Join(ignore, " -prune -o -path "))) diff --git a/mantle/kola/tests/misc/network.go b/mantle/kola/tests/misc/network.go index a1f63841..817ada47 100644 --- a/mantle/kola/tests/misc/network.go +++ b/mantle/kola/tests/misc/network.go @@ -140,6 +140,9 @@ NextProcess: protocol: proto, port: port, } + if process == "rpcbind" { + continue + } if expectedListenersMap[thisListener] { // matches expected process @@ -168,6 +171,7 @@ func NetworkListeners(c cluster.TestCluster) { // DHCPv6 from NetworkManager (when IPv6 network available) // https://github.com/coreos/fedora-coreos-tracker/issues/1216 {"udp", "546", "NetworkManager"}, + {"udp", "68", "dhclient"}, } checkList := func() error { return checkListeners(c, expectedListeners) diff --git a/mantle/kola/tests/podman/podman.go b/mantle/kola/tests/podman/podman.go index 9b9bd290..2c311c39 100644 --- a/mantle/kola/tests/podman/podman.go +++ b/mantle/kola/tests/podman/podman.go @@ -126,7 +126,8 @@ func podmanWorkflow(c cluster.TestCluster) { m := c.Machines()[0] // Test: Verify container can run with volume mount and port forwarding - image := "docker.io/library/nginx" + image := "docker.nju.edu.cn/library/nginx" + container_name := "nginx" wwwRoot := "/usr/share/nginx/html" var id string @@ -135,7 +136,7 @@ func podmanWorkflow(c cluster.TestCluster) { cmd := fmt.Sprintf("echo TEST PAGE > %s/index.html", string(dir)) c.RunCmdSync(m, cmd) - cmd = fmt.Sprintf("sudo podman run -d -p 80:80 -v %s/index.html:%s/index.html:z %s", string(dir), wwwRoot, image) + cmd = fmt.Sprintf("sudo podman run --name %s -d -p 80:80 -v %s/index.html:%s/index.html:z %s", container_name, string(dir), wwwRoot, image) out := c.MustSSH(m, cmd) id = string(out)[0:64] @@ -187,7 +188,8 @@ func podmanWorkflow(c cluster.TestCluster) { // Test: Save tar c.Run("save", func(c cluster.TestCluster) { - _, err := c.SSH(m, "sudo podman save -o local_nginx2.tar docker.io/library/nginx") + cmd := fmt.Sprintf("sudo podman save -o local_nginx2.tar %s", image) + _, err := c.SSH(m, cmd) if err != nil { c.Fatal(err) } @@ -195,8 +197,8 @@ func podmanWorkflow(c cluster.TestCluster) { // Test: Load tar c.Run("load", func(c cluster.TestCluster) { - // _, err := c.SSH(m, "sudo chmod +rw local_nginx.tar && sudo podman load --input local_nginx.tar && sudo podman images | grep local_nginx") - _, err := c.SSH(m, "sudo podman load --input local_nginx2.tar && sudo podman images | grep local_nginx2") + cmd := fmt.Sprintf("sudo podman load --input local_nginx2.tar && sudo podman images | grep %s", image) + _, err := c.SSH(m, cmd) if err != nil { c.Fatal(err) } diff --git a/mantle/platform/machine/unprivqemu/cluster.go b/mantle/platform/machine/unprivqemu/cluster.go index 3acd6d3f..af38a595 100644 --- a/mantle/platform/machine/unprivqemu/cluster.go +++ b/mantle/platform/machine/unprivqemu/cluster.go @@ -101,7 +101,9 @@ func (qc *Cluster) NewMachineWithQemuOptions(userdata *conf.UserData, options pl builder.ConfigFile = confPath defer builder.Close() builder.UUID = qm.id - builder.Firmware = qc.flight.opts.Firmware + if qc.flight.opts.Firmware != "" { + builder.Firmware = qc.flight.opts.Firmware + } builder.Swtpm = qc.flight.opts.Swtpm builder.Hostname = fmt.Sprintf("qemu%d", qc.BaseCluster.AllocateMachineSerial()) builder.ConsoleFile = qm.consolePath diff --git a/mantle/platform/qemu.go b/mantle/platform/qemu.go index 12af7888..7c561c36 100644 --- a/mantle/platform/qemu.go +++ b/mantle/platform/qemu.go @@ -453,8 +453,17 @@ type QemuBuilder struct { // NewQemuBuilder creates a new build for QEMU with default settings. func NewQemuBuilder() *QemuBuilder { + var defaultFirmware string + switch coreosarch.CurrentRpmArch() { + case "x86_64": + defaultFirmware = "bios" + case "aarch64": + defaultFirmware = "uefi" + default: + defaultFirmware = "" + } ret := QemuBuilder{ - Firmware: "bios", + Firmware: defaultFirmware, Swtpm: true, Pdeathsig: true, Argv: []string{}, @@ -1400,8 +1409,8 @@ func (builder *QemuBuilder) Exec() (*QemuInstance, error) { argv = append(argv, "-smp", fmt.Sprintf("%d", builder.Processors)) switch builder.Firmware { - case "bios": - break + case "": + // Nothing to do, use qemu default case "uefi": if err := builder.setupUefi(false); err != nil { return nil, err @@ -1410,8 +1419,12 @@ func (builder *QemuBuilder) Exec() (*QemuInstance, error) { if err := builder.setupUefi(true); err != nil { return nil, err } + case "bios": + if coreosarch.CurrentRpmArch() != "x86_64" { + return nil, fmt.Errorf("unknown firmware: %s", builder.Firmware) + } default: - panic(fmt.Sprintf("Unknown firmware: %s", builder.Firmware)) + return nil, fmt.Errorf("unknown firmware: %s", builder.Firmware) } // We always provide a random source -- Gitee