* [PATCH v2] tests/avocado/tuxrun_baselines.py: improve code coverage for ppc64
@ 2023-04-19 9:22 Kautuk Consul
2023-04-20 4:59 ` Harsh Prateek Bora
2023-04-20 7:57 ` Philippe Mathieu-Daudé
0 siblings, 2 replies; 5+ messages in thread
From: Kautuk Consul @ 2023-04-19 9:22 UTC (permalink / raw)
To: Alex Bennée, Philippe Mathieu-Daudé, Thomas Huth,
Wainer dos Santos Moschetta, Beraldo Leal, Cleber Rosa
Cc: qemu-devel, Kautuk Consul
Commit c0c8687ef0fd990db8db1655a8a6c5a5e35dd4bb disabled the
boot_linux.py test-case due to which the code coverage for ppc
decreased by around 2%. As per the discussion on
https://lore.kernel.org/qemu-devel/87sfdpqcy4.fsf@linaro.org/ it
was mentioned that the baseline test for ppc64 could be modified
to make up this 2% code coverage. This patch attempts to achieve
this 2% code coverage by adding various device command line
arguments (to ./qemu-system-ppc64) in the tuxrun_baselines.py
test-case.
The code coverage report with boot_linux.py, without it and finally
with these tuxrun_baselines.py changes is as follows:
With boot_linux.py
------------------
lines......: 13.8% (58006 of 420997 lines)
functions..: 20.7% (7675 of 36993 functions)
branches...: 9.2% (22146 of 240611 branches)
Without boot_linux.py (without this patch changes)
--------------------------------------------------
lines......: 11.9% (50174 of 420997 lines)
functions..: 18.8% (6947 of 36993 functions)
branches...: 7.4% (17580 of 239017 branches)
Without boot_linux.py (with this patch changes)
-----------------------------------------------
lines......: 13.8% (58287 of 420997 lines)
functions..: 20.7% (7640 of 36993 functions)
branches...: 8.4% (20223 of 240611 branches)
Signed-off-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
Reported-by: Alex Bennée <alex.bennee@linaro.org>
---
tests/avocado/tuxrun_baselines.py | 124 +++++++++++++++++++++++++++++-
1 file changed, 122 insertions(+), 2 deletions(-)
diff --git a/tests/avocado/tuxrun_baselines.py b/tests/avocado/tuxrun_baselines.py
index d343376faa..f763ee5d50 100644
--- a/tests/avocado/tuxrun_baselines.py
+++ b/tests/avocado/tuxrun_baselines.py
@@ -11,6 +11,8 @@
import os
import time
+import string
+import random
from avocado import skip, skipIf
from avocado_qemu import QemuSystemTest
@@ -308,7 +310,7 @@ def test_ppc64(self):
"""
:avocado: tags=arch:ppc64
:avocado: tags=machine:pseries
- :avocado: tags=cpu:POWER8
+ :avocado: tags=cpu:POWER10
:avocado: tags=endian:big
:avocado: tags=console:hvc0
:avocado: tags=tuxboot:ppc64
@@ -316,21 +318,139 @@ def test_ppc64(self):
:avocado: tags=extradev:driver=spapr-vscsi
:avocado: tags=root:sda
"""
+ # Generate a random string
+ res = ''.join(random.choices(string.ascii_lowercase +
+ string.digits, k=8))
+
+ # create qcow2 image to be used later.
+ process.run('./qemu-img create -f qcow2 '
+ '/tmp/tuxrun_baselines_ppc64_' + str(res) +
+ '.qcow2 1G')
+
+ # add device args to command line.
+ self.vm.add_args('-netdev', 'user,id=vnet,hostfwd=:127.0.0.1:0-:22',
+ '-device', 'virtio-net,netdev=vnet')
+ self.vm.add_args('-netdev', '{"type":"user","id":"hostnet0"}',
+ '-device', '{"driver":"virtio-net-pci","netdev":'
+ '"hostnet0","id":"net0","mac":"52:54:00:4c:e3:86",'
+ '"bus":"pci.0","addr":"0x9"}')
+ self.vm.add_args('-device', '{"driver":"qemu-xhci","p2":15,"p3":15,'
+ '"id":"usb","bus":"pci.0","addr":"0x2"}')
+ self.vm.add_args('-device', '{"driver":"virtio-scsi-pci","id":"scsi0"'
+ ',"bus":"pci.0","addr":"0x3"}')
+ self.vm.add_args('-device', '{"driver":"virtio-serial-pci","id":'
+ '"virtio-serial0","bus":"pci.0","addr":"0x4"}')
+ self.vm.add_args('-device', '{"driver":"scsi-cd","bus":"scsi0.0"'
+ ',"channel":0,"scsi-id":0,"lun":0,"device_id":'
+ '"drive-scsi0-0-0-0","id":"scsi0-0-0-0"}')
+ self.vm.add_args('-device', '{"driver":"virtio-balloon-pci",'
+ '"id":"balloon0","bus":"pci.0","addr":"0x6"}')
+ self.vm.add_args('-audiodev', '{"id":"audio1","driver":"none"}')
+ self.vm.add_args('-device', '{"driver":"usb-tablet","id":"input0"'
+ ',"bus":"usb.0","port":"1"}')
+ self.vm.add_args('-device', '{"driver":"usb-kbd","id":"input1"'
+ ',"bus":"usb.0","port":"2"}')
+ self.vm.add_args('-device', '{"driver":"VGA","id":"video0",'
+ '"vgamem_mb":16,"bus":"pci.0","addr":"0x7"}')
+ self.vm.add_args('-object', '{"qom-type":"rng-random","id":"objrng0"'
+ ',"filename":"/dev/urandom"}',
+ '-device', '{"driver":"virtio-rng-pci","rng":"objrng0"'
+ ',"id":"rng0","bus":"pci.0","addr":"0x8"}')
+ self.vm.add_args('-object', '{"qom-type":"cryptodev-backend-builtin",'
+ '"id":"objcrypto0","queues":1}',
+ '-device', '{"driver":"virtio-crypto-pci",'
+ '"cryptodev":"objcrypto0","id":"crypto0","bus"'
+ ':"pci.0","addr":"0xa"}')
+ self.vm.add_args('-device', '{"driver":"spapr-pci-host-bridge"'
+ ',"index":1,"id":"pci.1"}')
+ self.vm.add_args('-device', '{"driver":"spapr-vscsi","id":"scsi1"'
+ ',"reg":12288}')
+ self.vm.add_args('-m', '2G,slots=32,maxmem=4G',
+ '-object', 'memory-backend-ram,id=ram1,size=1G',
+ '-device', 'pc-dimm,id=dimm1,memdev=ram1')
+ self.vm.add_args('-drive', 'file=/tmp/tuxrun_baselines_ppc64_' +
+ str(res) + '.qcow2,format=qcow2,if=none,id='
+ 'drive-virtio-disk1',
+ '-device', 'virtio-blk-pci,scsi=off,bus=pci.0,'
+ 'addr=0xb,drive=drive-virtio-disk1,id=virtio-disk1'
+ ',bootindex=2')
self.common_tuxrun(drive="scsi-hd")
+ # remove qcow2 image
+ process.run('rm /tmp/tuxrun_baselines_ppc64_' + str(res) + '.qcow2')
+
def test_ppc64le(self):
"""
:avocado: tags=arch:ppc64
:avocado: tags=machine:pseries
- :avocado: tags=cpu:POWER8
+ :avocado: tags=cpu:POWER10
:avocado: tags=console:hvc0
:avocado: tags=tuxboot:ppc64le
:avocado: tags=image:vmlinux
:avocado: tags=extradev:driver=spapr-vscsi
:avocado: tags=root:sda
"""
+ # Generate a random string
+ res = ''.join(random.choices(string.ascii_lowercase +
+ string.digits, k=8))
+
+ # create qcow2 image to be used later.
+ process.run('./qemu-img create -f qcow2 '
+ '/tmp/tuxrun_baselines_ppc64le_' + str(res) +
+ '.qcow2 1G')
+
+ # add device args to command line.
+ self.vm.add_args('-netdev', 'user,id=vnet,hostfwd=:127.0.0.1:0-:22',
+ '-device', 'virtio-net,netdev=vnet')
+ self.vm.add_args('-netdev', '{"type":"user","id":"hostnet0"}',
+ '-device', '{"driver":"virtio-net-pci","netdev":'
+ '"hostnet0","id":"net0","mac":"52:54:00:4c:e3:86",'
+ '"bus":"pci.0","addr":"0x9"}')
+ self.vm.add_args('-device', '{"driver":"qemu-xhci","p2":15,"p3":15,'
+ '"id":"usb","bus":"pci.0","addr":"0x2"}')
+ self.vm.add_args('-device', '{"driver":"virtio-scsi-pci","id":"scsi0"'
+ ',"bus":"pci.0","addr":"0x3"}')
+ self.vm.add_args('-device', '{"driver":"virtio-serial-pci","id":'
+ '"virtio-serial0","bus":"pci.0","addr":"0x4"}')
+ self.vm.add_args('-device', '{"driver":"scsi-cd","bus":"scsi0.0"'
+ ',"channel":0,"scsi-id":0,"lun":0,"device_id":'
+ '"drive-scsi0-0-0-0","id":"scsi0-0-0-0"}')
+ self.vm.add_args('-device', '{"driver":"virtio-balloon-pci",'
+ '"id":"balloon0","bus":"pci.0","addr":"0x6"}')
+ self.vm.add_args('-audiodev', '{"id":"audio1","driver":"none"}')
+ self.vm.add_args('-device', '{"driver":"usb-tablet","id":"input0"'
+ ',"bus":"usb.0","port":"1"}')
+ self.vm.add_args('-device', '{"driver":"usb-kbd","id":"input1"'
+ ',"bus":"usb.0","port":"2"}')
+ self.vm.add_args('-device', '{"driver":"VGA","id":"video0",'
+ '"vgamem_mb":16,"bus":"pci.0","addr":"0x7"}')
+ self.vm.add_args('-object', '{"qom-type":"rng-random","id":"objrng0"'
+ ',"filename":"/dev/urandom"}',
+ '-device', '{"driver":"virtio-rng-pci","rng":"objrng0"'
+ ',"id":"rng0","bus":"pci.0","addr":"0x8"}')
+ self.vm.add_args('-object', '{"qom-type":"cryptodev-backend-builtin",'
+ '"id":"objcrypto0","queues":1}',
+ '-device', '{"driver":"virtio-crypto-pci",'
+ '"cryptodev":"objcrypto0","id":"crypto0","bus"'
+ ':"pci.0","addr":"0xa"}')
+ self.vm.add_args('-device', '{"driver":"spapr-pci-host-bridge"'
+ ',"index":1,"id":"pci.1"}')
+ self.vm.add_args('-device', '{"driver":"spapr-vscsi","id":"scsi1"'
+ ',"reg":12288}')
+ self.vm.add_args('-m', '2G,slots=32,maxmem=4G',
+ '-object', 'memory-backend-ram,id=ram1,size=1G',
+ '-device', 'pc-dimm,id=dimm1,memdev=ram1')
+ self.vm.add_args('-drive', 'file=/tmp/tuxrun_baselines_ppc64le_' +
+ str(res) + '.qcow2,format=qcow2,if=none,'
+ 'id=drive-virtio-disk1',
+ '-device', 'virtio-blk-pci,scsi=off,bus=pci.0,'
+ 'addr=0xb,drive=drive-virtio-disk1,id=virtio-disk1'
+ ',bootindex=2')
self.common_tuxrun(drive="scsi-hd")
+ # remove qcow2 image
+ process.run('rm /tmp/tuxrun_baselines_ppc64le_' + str(res) + '.qcow2')
+
def test_riscv32(self):
"""
:avocado: tags=arch:riscv32
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2] tests/avocado/tuxrun_baselines.py: improve code coverage for ppc64
2023-04-19 9:22 [PATCH v2] tests/avocado/tuxrun_baselines.py: improve code coverage for ppc64 Kautuk Consul
@ 2023-04-20 4:59 ` Harsh Prateek Bora
2023-04-20 7:57 ` Philippe Mathieu-Daudé
1 sibling, 0 replies; 5+ messages in thread
From: Harsh Prateek Bora @ 2023-04-20 4:59 UTC (permalink / raw)
To: Kautuk Consul, Alex Bennée, Philippe Mathieu-Daudé,
Thomas Huth, Wainer dos Santos Moschetta, Beraldo Leal,
Cleber Rosa
Cc: qemu-devel
One minor comment below:
On 4/19/23 14:52, Kautuk Consul wrote:
> Commit c0c8687ef0fd990db8db1655a8a6c5a5e35dd4bb disabled the
> boot_linux.py test-case due to which the code coverage for ppc
> decreased by around 2%. As per the discussion on
> https://lore.kernel.org/qemu-devel/87sfdpqcy4.fsf@linaro.org/ it
> was mentioned that the baseline test for ppc64 could be modified
> to make up this 2% code coverage. This patch attempts to achieve
> this 2% code coverage by adding various device command line
> arguments (to ./qemu-system-ppc64) in the tuxrun_baselines.py
> test-case.
>
> The code coverage report with boot_linux.py, without it and finally
> with these tuxrun_baselines.py changes is as follows:
>
> With boot_linux.py
> ------------------
> lines......: 13.8% (58006 of 420997 lines)
> functions..: 20.7% (7675 of 36993 functions)
> branches...: 9.2% (22146 of 240611 branches)
> Without boot_linux.py (without this patch changes)
> --------------------------------------------------
> lines......: 11.9% (50174 of 420997 lines)
> functions..: 18.8% (6947 of 36993 functions)
> branches...: 7.4% (17580 of 239017 branches)
> Without boot_linux.py (with this patch changes)
> -----------------------------------------------
> lines......: 13.8% (58287 of 420997 lines)
> functions..: 20.7% (7640 of 36993 functions)
> branches...: 8.4% (20223 of 240611 branches)
>
> Signed-off-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
> Reported-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> tests/avocado/tuxrun_baselines.py | 124 +++++++++++++++++++++++++++++-
> 1 file changed, 122 insertions(+), 2 deletions(-)
>
> diff --git a/tests/avocado/tuxrun_baselines.py b/tests/avocado/tuxrun_baselines.py
> index d343376faa..f763ee5d50 100644
> --- a/tests/avocado/tuxrun_baselines.py
> +++ b/tests/avocado/tuxrun_baselines.py
> @@ -11,6 +11,8 @@
>
> import os
> import time
> +import string
> +import random
>
> from avocado import skip, skipIf
> from avocado_qemu import QemuSystemTest
> @@ -308,7 +310,7 @@ def test_ppc64(self):
> """
> :avocado: tags=arch:ppc64
> :avocado: tags=machine:pseries
> - :avocado: tags=cpu:POWER8
> + :avocado: tags=cpu:POWER10
> :avocado: tags=endian:big
> :avocado: tags=console:hvc0
> :avocado: tags=tuxboot:ppc64
> @@ -316,21 +318,139 @@ def test_ppc64(self):
> :avocado: tags=extradev:driver=spapr-vscsi
> :avocado: tags=root:sda
> """
> + # Generate a random string
> + res = ''.join(random.choices(string.ascii_lowercase +
> + string.digits, k=8))
> +
We can have a tmpres = '/tmp/tuxrun_baselines_ppc64_' + str(res) +
'.qcow2 which can later be used at all 3 instances below. Same for
ppc64le as well. Also, prefix could be shortened to tuxrun_ppc64[le].
Otherwise, looks good to me.
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
> + # create qcow2 image to be used later.
> + process.run('./qemu-img create -f qcow2 '
> + '/tmp/tuxrun_baselines_ppc64_' + str(res) +
> + '.qcow2 1G')
> +
> + # add device args to command line.
> + self.vm.add_args('-netdev', 'user,id=vnet,hostfwd=:127.0.0.1:0-:22',
> + '-device', 'virtio-net,netdev=vnet')
> + self.vm.add_args('-netdev', '{"type":"user","id":"hostnet0"}',
> + '-device', '{"driver":"virtio-net-pci","netdev":'
> + '"hostnet0","id":"net0","mac":"52:54:00:4c:e3:86",'
> + '"bus":"pci.0","addr":"0x9"}')
> + self.vm.add_args('-device', '{"driver":"qemu-xhci","p2":15,"p3":15,'
> + '"id":"usb","bus":"pci.0","addr":"0x2"}')
> + self.vm.add_args('-device', '{"driver":"virtio-scsi-pci","id":"scsi0"'
> + ',"bus":"pci.0","addr":"0x3"}')
> + self.vm.add_args('-device', '{"driver":"virtio-serial-pci","id":'
> + '"virtio-serial0","bus":"pci.0","addr":"0x4"}')
> + self.vm.add_args('-device', '{"driver":"scsi-cd","bus":"scsi0.0"'
> + ',"channel":0,"scsi-id":0,"lun":0,"device_id":'
> + '"drive-scsi0-0-0-0","id":"scsi0-0-0-0"}')
> + self.vm.add_args('-device', '{"driver":"virtio-balloon-pci",'
> + '"id":"balloon0","bus":"pci.0","addr":"0x6"}')
> + self.vm.add_args('-audiodev', '{"id":"audio1","driver":"none"}')
> + self.vm.add_args('-device', '{"driver":"usb-tablet","id":"input0"'
> + ',"bus":"usb.0","port":"1"}')
> + self.vm.add_args('-device', '{"driver":"usb-kbd","id":"input1"'
> + ',"bus":"usb.0","port":"2"}')
> + self.vm.add_args('-device', '{"driver":"VGA","id":"video0",'
> + '"vgamem_mb":16,"bus":"pci.0","addr":"0x7"}')
> + self.vm.add_args('-object', '{"qom-type":"rng-random","id":"objrng0"'
> + ',"filename":"/dev/urandom"}',
> + '-device', '{"driver":"virtio-rng-pci","rng":"objrng0"'
> + ',"id":"rng0","bus":"pci.0","addr":"0x8"}')
> + self.vm.add_args('-object', '{"qom-type":"cryptodev-backend-builtin",'
> + '"id":"objcrypto0","queues":1}',
> + '-device', '{"driver":"virtio-crypto-pci",'
> + '"cryptodev":"objcrypto0","id":"crypto0","bus"'
> + ':"pci.0","addr":"0xa"}')
> + self.vm.add_args('-device', '{"driver":"spapr-pci-host-bridge"'
> + ',"index":1,"id":"pci.1"}')
> + self.vm.add_args('-device', '{"driver":"spapr-vscsi","id":"scsi1"'
> + ',"reg":12288}')
> + self.vm.add_args('-m', '2G,slots=32,maxmem=4G',
> + '-object', 'memory-backend-ram,id=ram1,size=1G',
> + '-device', 'pc-dimm,id=dimm1,memdev=ram1')
> + self.vm.add_args('-drive', 'file=/tmp/tuxrun_baselines_ppc64_' +
> + str(res) + '.qcow2,format=qcow2,if=none,id='
> + 'drive-virtio-disk1',
> + '-device', 'virtio-blk-pci,scsi=off,bus=pci.0,'
> + 'addr=0xb,drive=drive-virtio-disk1,id=virtio-disk1'
> + ',bootindex=2')
> self.common_tuxrun(drive="scsi-hd")
>
> + # remove qcow2 image
> + process.run('rm /tmp/tuxrun_baselines_ppc64_' + str(res) + '.qcow2')
> +
> def test_ppc64le(self):
> """
> :avocado: tags=arch:ppc64
> :avocado: tags=machine:pseries
> - :avocado: tags=cpu:POWER8
> + :avocado: tags=cpu:POWER10
> :avocado: tags=console:hvc0
> :avocado: tags=tuxboot:ppc64le
> :avocado: tags=image:vmlinux
> :avocado: tags=extradev:driver=spapr-vscsi
> :avocado: tags=root:sda
> """
> + # Generate a random string
> + res = ''.join(random.choices(string.ascii_lowercase +
> + string.digits, k=8))
> +
> + # create qcow2 image to be used later.
> + process.run('./qemu-img create -f qcow2 '
> + '/tmp/tuxrun_baselines_ppc64le_' + str(res) +
> + '.qcow2 1G')
> +
> + # add device args to command line.
> + self.vm.add_args('-netdev', 'user,id=vnet,hostfwd=:127.0.0.1:0-:22',
> + '-device', 'virtio-net,netdev=vnet')
> + self.vm.add_args('-netdev', '{"type":"user","id":"hostnet0"}',
> + '-device', '{"driver":"virtio-net-pci","netdev":'
> + '"hostnet0","id":"net0","mac":"52:54:00:4c:e3:86",'
> + '"bus":"pci.0","addr":"0x9"}')
> + self.vm.add_args('-device', '{"driver":"qemu-xhci","p2":15,"p3":15,'
> + '"id":"usb","bus":"pci.0","addr":"0x2"}')
> + self.vm.add_args('-device', '{"driver":"virtio-scsi-pci","id":"scsi0"'
> + ',"bus":"pci.0","addr":"0x3"}')
> + self.vm.add_args('-device', '{"driver":"virtio-serial-pci","id":'
> + '"virtio-serial0","bus":"pci.0","addr":"0x4"}')
> + self.vm.add_args('-device', '{"driver":"scsi-cd","bus":"scsi0.0"'
> + ',"channel":0,"scsi-id":0,"lun":0,"device_id":'
> + '"drive-scsi0-0-0-0","id":"scsi0-0-0-0"}')
> + self.vm.add_args('-device', '{"driver":"virtio-balloon-pci",'
> + '"id":"balloon0","bus":"pci.0","addr":"0x6"}')
> + self.vm.add_args('-audiodev', '{"id":"audio1","driver":"none"}')
> + self.vm.add_args('-device', '{"driver":"usb-tablet","id":"input0"'
> + ',"bus":"usb.0","port":"1"}')
> + self.vm.add_args('-device', '{"driver":"usb-kbd","id":"input1"'
> + ',"bus":"usb.0","port":"2"}')
> + self.vm.add_args('-device', '{"driver":"VGA","id":"video0",'
> + '"vgamem_mb":16,"bus":"pci.0","addr":"0x7"}')
> + self.vm.add_args('-object', '{"qom-type":"rng-random","id":"objrng0"'
> + ',"filename":"/dev/urandom"}',
> + '-device', '{"driver":"virtio-rng-pci","rng":"objrng0"'
> + ',"id":"rng0","bus":"pci.0","addr":"0x8"}')
> + self.vm.add_args('-object', '{"qom-type":"cryptodev-backend-builtin",'
> + '"id":"objcrypto0","queues":1}',
> + '-device', '{"driver":"virtio-crypto-pci",'
> + '"cryptodev":"objcrypto0","id":"crypto0","bus"'
> + ':"pci.0","addr":"0xa"}')
> + self.vm.add_args('-device', '{"driver":"spapr-pci-host-bridge"'
> + ',"index":1,"id":"pci.1"}')
> + self.vm.add_args('-device', '{"driver":"spapr-vscsi","id":"scsi1"'
> + ',"reg":12288}')
> + self.vm.add_args('-m', '2G,slots=32,maxmem=4G',
> + '-object', 'memory-backend-ram,id=ram1,size=1G',
> + '-device', 'pc-dimm,id=dimm1,memdev=ram1')
> + self.vm.add_args('-drive', 'file=/tmp/tuxrun_baselines_ppc64le_' +
> + str(res) + '.qcow2,format=qcow2,if=none,'
> + 'id=drive-virtio-disk1',
> + '-device', 'virtio-blk-pci,scsi=off,bus=pci.0,'
> + 'addr=0xb,drive=drive-virtio-disk1,id=virtio-disk1'
> + ',bootindex=2')
> self.common_tuxrun(drive="scsi-hd")
>
> + # remove qcow2 image
> + process.run('rm /tmp/tuxrun_baselines_ppc64le_' + str(res) + '.qcow2')
> +
> def test_riscv32(self):
> """
> :avocado: tags=arch:riscv32
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] tests/avocado/tuxrun_baselines.py: improve code coverage for ppc64
2023-04-19 9:22 [PATCH v2] tests/avocado/tuxrun_baselines.py: improve code coverage for ppc64 Kautuk Consul
2023-04-20 4:59 ` Harsh Prateek Bora
@ 2023-04-20 7:57 ` Philippe Mathieu-Daudé
2023-04-20 8:12 ` Thomas Huth
1 sibling, 1 reply; 5+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-04-20 7:57 UTC (permalink / raw)
To: Kautuk Consul, Alex Bennée, Thomas Huth,
Wainer dos Santos Moschetta, Beraldo Leal, Cleber Rosa
Cc: qemu-devel
Hi Kautuk,
On 19/4/23 11:22, Kautuk Consul wrote:
> Commit c0c8687ef0fd990db8db1655a8a6c5a5e35dd4bb disabled the
> boot_linux.py test-case due to which the code coverage for ppc
> decreased by around 2%. As per the discussion on
> https://lore.kernel.org/qemu-devel/87sfdpqcy4.fsf@linaro.org/ it
> was mentioned that the baseline test for ppc64 could be modified
> to make up this 2% code coverage. This patch attempts to achieve
> this 2% code coverage by adding various device command line
> arguments (to ./qemu-system-ppc64) in the tuxrun_baselines.py
> test-case.
>
> The code coverage report with boot_linux.py, without it and finally
> with these tuxrun_baselines.py changes is as follows:
>
> With boot_linux.py
> ------------------
> lines......: 13.8% (58006 of 420997 lines)
> functions..: 20.7% (7675 of 36993 functions)
> branches...: 9.2% (22146 of 240611 branches)
> Without boot_linux.py (without this patch changes)
> --------------------------------------------------
> lines......: 11.9% (50174 of 420997 lines)
> functions..: 18.8% (6947 of 36993 functions)
> branches...: 7.4% (17580 of 239017 branches)
> Without boot_linux.py (with this patch changes)
> -----------------------------------------------
> lines......: 13.8% (58287 of 420997 lines)
> functions..: 20.7% (7640 of 36993 functions)
> branches...: 8.4% (20223 of 240611 branches)
>
> Signed-off-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
> Reported-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> tests/avocado/tuxrun_baselines.py | 124 +++++++++++++++++++++++++++++-
> 1 file changed, 122 insertions(+), 2 deletions(-)
>
> diff --git a/tests/avocado/tuxrun_baselines.py b/tests/avocado/tuxrun_baselines.py
> index d343376faa..f763ee5d50 100644
> --- a/tests/avocado/tuxrun_baselines.py
> +++ b/tests/avocado/tuxrun_baselines.py
> @@ -11,6 +11,8 @@
>
> import os
> import time
> +import string
> +import random
>
> from avocado import skip, skipIf
> from avocado_qemu import QemuSystemTest
> @@ -308,7 +310,7 @@ def test_ppc64(self):
> """
> :avocado: tags=arch:ppc64
> :avocado: tags=machine:pseries
> - :avocado: tags=cpu:POWER8
> + :avocado: tags=cpu:POWER10
> :avocado: tags=endian:big
> :avocado: tags=console:hvc0
> :avocado: tags=tuxboot:ppc64
> @@ -316,21 +318,139 @@ def test_ppc64(self):
> :avocado: tags=extradev:driver=spapr-vscsi
> :avocado: tags=root:sda
> """
> + # Generate a random string
> + res = ''.join(random.choices(string.ascii_lowercase +
> + string.digits, k=8))
> +
> + # create qcow2 image to be used later.
> + process.run('./qemu-img create -f qcow2 '
Please take qemu-img from $PATH.
> + '/tmp/tuxrun_baselines_ppc64_' + str(res) +
> + '.qcow2 1G')
Do not use /tmp directly (i.e. Windows OS doesn't have it).
You can use:
- self.workdir
- with tempfile.NamedTemporaryFile() as qcow2:
- with tempfile.TemporaryDirectory(prefix='tuxrun_') as tmpdir:
Also, better to define the path once in a variable:
qcow_img_path = f'{tmpdir}/tuxrun_baselines.qcow2'
> + # add device args to command line.
> + self.vm.add_args('-netdev', 'user,id=vnet,hostfwd=:127.0.0.1:0-:22',
> + '-device', 'virtio-net,netdev=vnet')
> + self.vm.add_args('-netdev', '{"type":"user","id":"hostnet0"}',
> + '-device', '{"driver":"virtio-net-pci","netdev":'
> + '"hostnet0","id":"net0","mac":"52:54:00:4c:e3:86",'
> + '"bus":"pci.0","addr":"0x9"}')
> + self.vm.add_args('-device', '{"driver":"qemu-xhci","p2":15,"p3":15,'
> + '"id":"usb","bus":"pci.0","addr":"0x2"}')
> + self.vm.add_args('-device', '{"driver":"virtio-scsi-pci","id":"scsi0"'
> + ',"bus":"pci.0","addr":"0x3"}')
> + self.vm.add_args('-device', '{"driver":"virtio-serial-pci","id":'
> + '"virtio-serial0","bus":"pci.0","addr":"0x4"}')
> + self.vm.add_args('-device', '{"driver":"scsi-cd","bus":"scsi0.0"'
> + ',"channel":0,"scsi-id":0,"lun":0,"device_id":'
> + '"drive-scsi0-0-0-0","id":"scsi0-0-0-0"}')
> + self.vm.add_args('-device', '{"driver":"virtio-balloon-pci",'
> + '"id":"balloon0","bus":"pci.0","addr":"0x6"}')
> + self.vm.add_args('-audiodev', '{"id":"audio1","driver":"none"}')
> + self.vm.add_args('-device', '{"driver":"usb-tablet","id":"input0"'
> + ',"bus":"usb.0","port":"1"}')
> + self.vm.add_args('-device', '{"driver":"usb-kbd","id":"input1"'
> + ',"bus":"usb.0","port":"2"}')
> + self.vm.add_args('-device', '{"driver":"VGA","id":"video0",'
> + '"vgamem_mb":16,"bus":"pci.0","addr":"0x7"}')
> + self.vm.add_args('-object', '{"qom-type":"rng-random","id":"objrng0"'
> + ',"filename":"/dev/urandom"}',
> + '-device', '{"driver":"virtio-rng-pci","rng":"objrng0"'
> + ',"id":"rng0","bus":"pci.0","addr":"0x8"}')
> + self.vm.add_args('-object', '{"qom-type":"cryptodev-backend-builtin",'
> + '"id":"objcrypto0","queues":1}',
> + '-device', '{"driver":"virtio-crypto-pci",'
> + '"cryptodev":"objcrypto0","id":"crypto0","bus"'
> + ':"pci.0","addr":"0xa"}')
> + self.vm.add_args('-device', '{"driver":"spapr-pci-host-bridge"'
> + ',"index":1,"id":"pci.1"}')
> + self.vm.add_args('-device', '{"driver":"spapr-vscsi","id":"scsi1"'
> + ',"reg":12288}')
> + self.vm.add_args('-m', '2G,slots=32,maxmem=4G',
> + '-object', 'memory-backend-ram,id=ram1,size=1G',
> + '-device', 'pc-dimm,id=dimm1,memdev=ram1')
> + self.vm.add_args('-drive', 'file=/tmp/tuxrun_baselines_ppc64_' +
> + str(res) + '.qcow2,format=qcow2,if=none,id='
Using it here:
self.vm.add_args('-drive', f'file={qcow_img_path},...
> + 'drive-virtio-disk1',
> + '-device', 'virtio-blk-pci,scsi=off,bus=pci.0,'
> + 'addr=0xb,drive=drive-virtio-disk1,id=virtio-disk1'
> + ',bootindex=2')
> self.common_tuxrun(drive="scsi-hd")
>
> + # remove qcow2 image
> + process.run('rm /tmp/tuxrun_baselines_ppc64_' + str(res) + '.qcow2')
No need if using the 'with ...' syntax, automatically cleaned up.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] tests/avocado/tuxrun_baselines.py: improve code coverage for ppc64
2023-04-20 7:57 ` Philippe Mathieu-Daudé
@ 2023-04-20 8:12 ` Thomas Huth
2023-04-20 12:57 ` Kautuk Consul
0 siblings, 1 reply; 5+ messages in thread
From: Thomas Huth @ 2023-04-20 8:12 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Kautuk Consul, Alex Bennée,
Wainer dos Santos Moschetta, Beraldo Leal, Cleber Rosa
Cc: qemu-devel
On 20/04/2023 09.57, Philippe Mathieu-Daudé wrote:
> Hi Kautuk,
>
> On 19/4/23 11:22, Kautuk Consul wrote:
>> Commit c0c8687ef0fd990db8db1655a8a6c5a5e35dd4bb disabled the
>> boot_linux.py test-case due to which the code coverage for ppc
>> decreased by around 2%. As per the discussion on
>> https://lore.kernel.org/qemu-devel/87sfdpqcy4.fsf@linaro.org/ it
>> was mentioned that the baseline test for ppc64 could be modified
>> to make up this 2% code coverage. This patch attempts to achieve
>> this 2% code coverage by adding various device command line
>> arguments (to ./qemu-system-ppc64) in the tuxrun_baselines.py
>> test-case.
>>
>> The code coverage report with boot_linux.py, without it and finally
>> with these tuxrun_baselines.py changes is as follows:
>>
>> With boot_linux.py
>> ------------------
>> lines......: 13.8% (58006 of 420997 lines)
>> functions..: 20.7% (7675 of 36993 functions)
>> branches...: 9.2% (22146 of 240611 branches)
>> Without boot_linux.py (without this patch changes)
>> --------------------------------------------------
>> lines......: 11.9% (50174 of 420997 lines)
>> functions..: 18.8% (6947 of 36993 functions)
>> branches...: 7.4% (17580 of 239017 branches)
>> Without boot_linux.py (with this patch changes)
>> -----------------------------------------------
>> lines......: 13.8% (58287 of 420997 lines)
>> functions..: 20.7% (7640 of 36993 functions)
>> branches...: 8.4% (20223 of 240611 branches)
>>
>> Signed-off-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
>> Reported-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> tests/avocado/tuxrun_baselines.py | 124 +++++++++++++++++++++++++++++-
>> 1 file changed, 122 insertions(+), 2 deletions(-)
>>
>> diff --git a/tests/avocado/tuxrun_baselines.py
>> b/tests/avocado/tuxrun_baselines.py
>> index d343376faa..f763ee5d50 100644
>> --- a/tests/avocado/tuxrun_baselines.py
>> +++ b/tests/avocado/tuxrun_baselines.py
>> @@ -11,6 +11,8 @@
>> import os
>> import time
>> +import string
>> +import random
>> from avocado import skip, skipIf
>> from avocado_qemu import QemuSystemTest
>> @@ -308,7 +310,7 @@ def test_ppc64(self):
>> """
>> :avocado: tags=arch:ppc64
>> :avocado: tags=machine:pseries
>> - :avocado: tags=cpu:POWER8
>> + :avocado: tags=cpu:POWER10
>> :avocado: tags=endian:big
>> :avocado: tags=console:hvc0
>> :avocado: tags=tuxboot:ppc64
>> @@ -316,21 +318,139 @@ def test_ppc64(self):
>> :avocado: tags=extradev:driver=spapr-vscsi
>> :avocado: tags=root:sda
>> """
>> + # Generate a random string
>> + res = ''.join(random.choices(string.ascii_lowercase +
>> + string.digits, k=8))
>> +
>> + # create qcow2 image to be used later.
>> + process.run('./qemu-img create -f qcow2 '
>
> Please take qemu-img from $PATH.
I think it would even be better to provide a function in the base class to
call qemu-img ... we already have some code in
tests/avocado/avocado_qemu/__init__.py to find a usable qemu-img binary, I
think that could be extended?
Thomas
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] tests/avocado/tuxrun_baselines.py: improve code coverage for ppc64
2023-04-20 8:12 ` Thomas Huth
@ 2023-04-20 12:57 ` Kautuk Consul
0 siblings, 0 replies; 5+ messages in thread
From: Kautuk Consul @ 2023-04-20 12:57 UTC (permalink / raw)
To: Thomas Huth
Cc: Philippe Mathieu-Daudé, Alex Bennée,
Wainer dos Santos Moschetta, Beraldo Leal, Cleber Rosa,
qemu-devel
On 2023-04-20 10:12:37, Thomas Huth wrote:
> On 20/04/2023 09.57, Philippe Mathieu-Daud wrote:
> > Hi Kautuk,
> >
> > On 19/4/23 11:22, Kautuk Consul wrote:
> > > Commit c0c8687ef0fd990db8db1655a8a6c5a5e35dd4bb disabled the
> > > boot_linux.py test-case due to which the code coverage for ppc
> > > decreased by around 2%. As per the discussion on
> > > https://lore.kernel.org/qemu-devel/87sfdpqcy4.fsf@linaro.org/ it
> > > was mentioned that the baseline test for ppc64 could be modified
> > > to make up this 2% code coverage. This patch attempts to achieve
> > > this 2% code coverage by adding various device command line
> > > arguments (to ./qemu-system-ppc64) in the tuxrun_baselines.py
> > > test-case.
> > >
> > > The code coverage report with boot_linux.py, without it and finally
> > > with these tuxrun_baselines.py changes is as follows:
> > >
> > > With boot_linux.py
> > > ------------------
> > > ߦߦ lines......: 13.8% (58006 of 420997 lines)
> > > ߦߦ functions..: 20.7% (7675 of 36993 functions)
> > > ߦߦ branches...: 9.2% (22146 of 240611 branches)
> > > Without boot_linux.py (without this patch changes)
> > > --------------------------------------------------
> > > ߦߦ lines......: 11.9% (50174 of 420997 lines)
> > > ߦߦ functions..: 18.8% (6947 of 36993 functions)
> > > ߦߦ branches...: 7.4% (17580 of 239017 branches)
> > > Without boot_linux.py (with this patch changes)
> > > -----------------------------------------------
> > > ߦߦ lines......: 13.8% (58287 of 420997 lines)
> > > ߦߦ functions..: 20.7% (7640 of 36993 functions)
> > > ߦߦ branches...: 8.4% (20223 of 240611 branches)
> > >
> > > Signed-off-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
> > > Reported-by: Alex Benne <alex.bennee@linaro.org>
> > > ---
> > > ߦ tests/avocado/tuxrun_baselines.py | 124 +++++++++++++++++++++++++++++-
> > > ߦ 1 file changed, 122 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/tests/avocado/tuxrun_baselines.py
> > > b/tests/avocado/tuxrun_baselines.py
> > > index d343376faa..f763ee5d50 100644
> > > --- a/tests/avocado/tuxrun_baselines.py
> > > +++ b/tests/avocado/tuxrun_baselines.py
> > > @@ -11,6 +11,8 @@
> > > ߦ import os
> > > ߦ import time
> > > +import string
> > > +import random
> > > ߦ from avocado import skip, skipIf
> > > ߦ from avocado_qemu import QemuSystemTest
> > > @@ -308,7 +310,7 @@ def test_ppc64(self):
> > > ߦߦߦߦߦߦߦߦߦ """
> > > ߦߦߦߦߦߦߦߦߦ :avocado: tags=arch:ppc64
> > > ߦߦߦߦߦߦߦߦߦ :avocado: tags=machine:pseries
> > > -ߦߦߦߦߦߦߦ :avocado: tags=cpu:POWER8
> > > +ߦߦߦߦߦߦߦ :avocado: tags=cpu:POWER10
> > > ߦߦߦߦߦߦߦߦߦ :avocado: tags=endian:big
> > > ߦߦߦߦߦߦߦߦߦ :avocado: tags=console:hvc0
> > > ߦߦߦߦߦߦߦߦߦ :avocado: tags=tuxboot:ppc64
> > > @@ -316,21 +318,139 @@ def test_ppc64(self):
> > > ߦߦߦߦߦߦߦߦߦ :avocado: tags=extradev:driver=spapr-vscsi
> > > ߦߦߦߦߦߦߦߦߦ :avocado: tags=root:sda
> > > ߦߦߦߦߦߦߦߦߦ """
> > > +ߦߦߦߦߦߦߦ # Generate a random string
> > > +ߦߦߦߦߦߦߦ res = ''.join(random.choices(string.ascii_lowercase +
> > > +ߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦߦ string.digits, k=8))
> > > +
> > > +ߦߦߦߦߦߦߦ # create qcow2 image to be used later.
> > > +ߦߦߦߦߦߦߦ process.run('./qemu-img create -f qcow2 '
> >
> > Please take qemu-img from $PATH.
>
> I think it would even be better to provide a function in the base class to
> call qemu-img ... we already have some code in
> tests/avocado/avocado_qemu/__init__.py to find a usable qemu-img binary, I
> think that could be extended?
Thanks everybody for the comments.
I have extended the __init__.py source code to introduce a new function
that finds the qemu-img binary. This function is now getting called from
tuxrun_baselines.py in the v3 patchset I just sent.
I haven't created a function that actually executes qemu-img as there
didn't seem adequate reason to do so.
>
> Thomas
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-04-20 12:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-19 9:22 [PATCH v2] tests/avocado/tuxrun_baselines.py: improve code coverage for ppc64 Kautuk Consul
2023-04-20 4:59 ` Harsh Prateek Bora
2023-04-20 7:57 ` Philippe Mathieu-Daudé
2023-04-20 8:12 ` Thomas Huth
2023-04-20 12:57 ` Kautuk Consul
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).