From nobody Fri May  9 22:09:05 2025
Delivered-To: importer@patchew.org
Authentication-Results: mx.zohomail.com;
	dkim=pass;
	spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as
 permitted sender)
  smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org;
	dmarc=pass(p=none dis=none)  header.from=redhat.com
ARC-Seal: i=1; a=rsa-sha256; t=1734520403; cv=none;
	d=zohomail.com; s=zohoarc;
	b=P2jjEL2ZFVKfqRk2r6teOGjvQhKZDt9VzU+aII4eSgTQaxGmpH7rSkdK1U8fU6UiJMRtWFPZwo9C+HKSNl32pL0Q1omvKxDRhM+JUcWg5vzbdJd/rOosXY++NgRZkUdeO1d5+9PgCyVYtzEuwQOvPNiulIf/xMEZ8WGMQi+ih8o=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1734520403;
 h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To;
	bh=icK9mZ+BTwutXpAcicRi0lYfEt7an4Ag3b0ftFSB2fE=;
	b=bAoTS+SV8Fbq/hXiPhVR13B5PDgU8Be7uJ+dFFjOeamNzXF9vSUhpM5zSpQjN1sC2/aLFNhI9Ha/2IorEVw4J6G4Hj+ggFqfUvuy90/LiLW9U1n3kFSh9R7r/5gBWh6WK7mo7bKL6i7u0zvwJqvLz7DQc/lM3xokZSf9xofV8o8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass;
	spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as
 permitted sender)
  smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org;
	dmarc=pass header.from=<thuth@redhat.com> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1734520403946135.26559408934247;
 Wed, 18 Dec 2024 03:13:23 -0800 (PST)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces@nongnu.org>)
	id 1tNry3-00013p-L2; Wed, 18 Dec 2024 06:11:52 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <thuth@redhat.com>) id 1tNrxz-0000vh-Qs
 for qemu-devel@nongnu.org; Wed, 18 Dec 2024 06:11:47 -0500
Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <thuth@redhat.com>) id 1tNrxt-0005zy-Af
 for qemu-devel@nongnu.org; Wed, 18 Dec 2024 06:11:47 -0500
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-137-uBRrxH4FM562Q-Uac020Dw-1; Wed,
 18 Dec 2024 06:11:37 -0500
Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest
 SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 52E1C195421D
 for <qemu-devel@nongnu.org>; Wed, 18 Dec 2024 11:11:36 +0000 (UTC)
Received: from thuth-p1g4.redhat.com (unknown [10.39.192.114])
 by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 05F5819560AD; Wed, 18 Dec 2024 11:11:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
 s=mimecast20190719; t=1734520299;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=icK9mZ+BTwutXpAcicRi0lYfEt7an4Ag3b0ftFSB2fE=;
 b=fCLQhPPcqKiDkXsOA/RwBuvqJvq/Tty3zn/RJR+AC4UsIXdpziKHfAZKspnTMaSjPIP0nP
 UC01RY+4eX61yaqtVYBIe5IjD6KkoRD5IpqqJ+kChYYLZvzB0qM7rnjiturFd7tjjJ+hkh
 pI6QPMD6ivdNXtsul865AOEBQdVnmV0=
X-MC-Unique: uBRrxH4FM562Q-Uac020Dw-1
X-Mimecast-MFC-AGG-ID: uBRrxH4FM562Q-Uac020Dw
From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Subject: [PULL 37/38] tests/functional: Convert the hotplug_cpu avocado test
Date: Wed, 18 Dec 2024 12:09:57 +0100
Message-ID: <20241218110958.226932-38-thuth@redhat.com>
In-Reply-To: <20241218110958.226932-1-thuth@redhat.com>
References: <20241218110958.226932-1-thuth@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40
Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17
 as permitted sender) client-ip=209.51.188.17;
 envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org;
 helo=lists.gnu.org;
Received-SPF: pass client-ip=170.10.129.124; envelope-from=thuth@redhat.com;
 helo=us-smtp-delivery-124.mimecast.com
X-Spam_score_int: -31
X-Spam_score: -3.2
X-Spam_bar: ---
X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,
 DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1.116,
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-BeenThere: qemu-devel@nongnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org
X-ZohoMail-DKIM: pass (identity @redhat.com)
X-ZM-MESSAGEID: 1734520405107116600

Since we don't have ssh support in the functional test framework yet,
simply use the serial console for this test instead. It's also
sufficient to only boot into an initrd here, no need to fire up a
full-blown guest, so the test now finishes much faster.

While we're at it, also unplug the CPU now and check that it is gone
in the guest.

Message-ID: <20241217142020.155776-1-thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/avocado/hotplug_cpu.py                | 37 -----------
 tests/functional/meson.build                |  1 +
 tests/functional/test_x86_64_hotplug_cpu.py | 69 +++++++++++++++++++++
 3 files changed, 70 insertions(+), 37 deletions(-)
 delete mode 100644 tests/avocado/hotplug_cpu.py
 create mode 100755 tests/functional/test_x86_64_hotplug_cpu.py

diff --git a/tests/avocado/hotplug_cpu.py b/tests/avocado/hotplug_cpu.py
deleted file mode 100644
index 342c838539..0000000000
--- a/tests/avocado/hotplug_cpu.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Functional test that hotplugs a CPU and checks it on a Linux guest
-#
-# Copyright (c) 2021 Red Hat, Inc.
-#
-# Author:
-#  Cleber Rosa <crosa@redhat.com>
-#
-# This work is licensed under the terms of the GNU GPL, version 2 or
-# later.  See the COPYING file in the top-level directory.
-
-from avocado_qemu.linuxtest import LinuxTest
-
-
-class HotPlugCPU(LinuxTest):
-
-    def test(self):
-        """
-        :avocado: tags=3Darch:x86_64
-        :avocado: tags=3Dmachine:q35
-        :avocado: tags=3Daccel:kvm
-        """
-        self.require_accelerator('kvm')
-        self.vm.add_args('-accel', 'kvm')
-        self.vm.add_args('-cpu', 'Haswell')
-        self.vm.add_args('-smp', '1,sockets=3D1,cores=3D2,threads=3D1,maxc=
pus=3D2')
-        self.launch_and_wait()
-
-        self.ssh_command('test -e /sys/devices/system/cpu/cpu0')
-        with self.assertRaises(AssertionError):
-            self.ssh_command('test -e /sys/devices/system/cpu/cpu1')
-
-        self.vm.cmd('device_add',
-                    driver=3D'Haswell-x86_64-cpu',
-                    socket_id=3D0,
-                    core_id=3D1,
-                    thread_id=3D0)
-        self.ssh_command('test -e /sys/devices/system/cpu/cpu1')
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index d03fe0ca36..24f7f8f2f1 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -233,6 +233,7 @@ tests_x86_64_system_thorough =3D [
   'multiprocess',
   'netdev_ethtool',
   'virtio_gpu',
+  'x86_64_hotplug_cpu',
   'x86_64_tuxrun',
 ]
=20
diff --git a/tests/functional/test_x86_64_hotplug_cpu.py b/tests/functional=
/test_x86_64_hotplug_cpu.py
new file mode 100755
index 0000000000..b1d5156c72
--- /dev/null
+++ b/tests/functional/test_x86_64_hotplug_cpu.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python3
+#
+# Functional test that hotplugs a CPU and checks it on a Linux guest
+#
+# Copyright (c) 2021 Red Hat, Inc.
+#
+# Author:
+#  Cleber Rosa <crosa@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or
+# later.  See the COPYING file in the top-level directory.
+
+from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pa=
ttern
+
+
+class HotPlugCPU(LinuxKernelTest):
+
+    ASSET_KERNEL =3D Asset(
+        ('https://archives.fedoraproject.org/pub/archive/fedora/linux/rele=
ases'
+         '/31/Server/x86_64/os/images/pxeboot/vmlinuz'),
+        'd4738d03dbbe083ca610d0821d0a8f1488bebbdccef54ce33e3adb35fda00129')
+
+    ASSET_INITRD =3D Asset(
+        ('https://archives.fedoraproject.org/pub/archive/fedora/linux/rele=
ases'
+         '/31/Server/x86_64/os/images/pxeboot/initrd.img'),
+        '277cd6c7adf77c7e63d73bbb2cded8ef9e2d3a2f100000e92ff1f8396513cd8b')
+
+    def test_hotplug(self):
+
+        self.require_accelerator('kvm')
+        self.vm.add_args('-accel', 'kvm')
+        self.vm.add_args('-cpu', 'Haswell')
+        self.vm.add_args('-smp', '1,sockets=3D1,cores=3D2,threads=3D1,maxc=
pus=3D2')
+        self.vm.add_args('-m', '1G')
+        self.vm.add_args('-append', 'console=3DttyS0 rd.rescue')
+
+        self.launch_kernel(self.ASSET_KERNEL.fetch(),
+                           self.ASSET_INITRD.fetch(),
+                           wait_for=3D'Entering emergency mode.')
+        prompt =3D '# '
+        self.wait_for_console_pattern(prompt)
+
+        exec_command_and_wait_for_pattern(self,
+                                          'cd /sys/devices/system/cpu/cpu0=
',
+                                          'cpu0#')
+        exec_command_and_wait_for_pattern(self,
+                                          'cd /sys/devices/system/cpu/cpu1=
',
+                                          'No such file or directory')
+
+        self.vm.cmd('device_add',
+                    driver=3D'Haswell-x86_64-cpu',
+                    id=3D'c1',
+                    socket_id=3D0,
+                    core_id=3D1,
+                    thread_id=3D0)
+        self.wait_for_console_pattern('CPU1 has been hot-added')
+
+        exec_command_and_wait_for_pattern(self,
+                                          'cd /sys/devices/system/cpu/cpu1=
',
+                                          'cpu1#')
+
+        self.vm.cmd('device_del', id=3D'c1')
+
+        exec_command_and_wait_for_pattern(self,
+                                          'cd /sys/devices/system/cpu/cpu1=
',
+                                          'No such file or directory')
+
+if __name__ =3D=3D '__main__':
+    LinuxKernelTest.main()
--=20
2.47.1