diff mbox series

[v3,18/20] Boot Linux Console Test: add a test for arm + virt

Message ID 20190221005753.27955-19-crosa@redhat.com
State New
Headers show
Series Acceptance Tests: target architecture support | expand

Commit Message

Cleber Rosa Feb. 21, 2019, 12:57 a.m. UTC
Just like the previous tests, boots a Linux kernel on an arm target
using the virt machine.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
Reviewed-by: Caio Carrara <ccarrara@redhat.com>
---
 .travis.yml                            |  2 +-
 tests/acceptance/boot_linux_console.py | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

Comments

Philippe Mathieu-Daudé March 2, 2019, 8:13 p.m. UTC | #1
Hi Cleber,

On 2/21/19 1:57 AM, Cleber Rosa wrote:
> Just like the previous tests, boots a Linux kernel on an arm target
> using the virt machine.
> 
> Signed-off-by: Cleber Rosa <crosa@redhat.com>
> Reviewed-by: Caio Carrara <ccarrara@redhat.com>
> ---
>  .travis.yml                            |  2 +-
>  tests/acceptance/boot_linux_console.py | 20 ++++++++++++++++++++
>  2 files changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/.travis.yml b/.travis.yml
> index 60a4bc00b8..f34bd8dc2b 100644
> --- a/.travis.yml
> +++ b/.travis.yml
> @@ -198,7 +198,7 @@ matrix:
>  
>      # Acceptance (Functional) tests
>      - env:
> -        - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,ppc64-softmmu,aarch64-softmmu"
> +        - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,ppc64-softmmu,aarch64-softmmu,arm-softmmu"
>          - TEST_CMD="make check-acceptance"
>        addons:
>          apt:
> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
> index 1f2dfa3654..311f6fbb96 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -177,3 +177,23 @@ class BootLinuxConsole(Test):
>          self.vm.launch()
>          console_pattern = 'Kernel command line: %s' % kernel_command_line
>          self.wait_for_console_pattern(console_pattern)
> +
> +    def test_arm_virt(self):
> +        """
> +        :avocado: tags=arch:arm
> +        :avocado: tags=machine:virt
> +        """
> +        kernel_url = ('https://sjc.edge.kernel.org/fedora-buffet/fedora/linux/'
> +                      'releases/29/Server/armhfp/os/images/pxeboot/vmlinuz')
> +        kernel_hash = 'e9826d741b4fb04cadba8d4824d1ed3b7fb8b4d4'
> +        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
> +
> +        self.vm.set_machine('virt')
> +        self.vm.set_console()
> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> +                               'console=ttyAMA0')
> +        self.vm.add_args('-kernel', kernel_path,
> +                         '-append', kernel_command_line)
> +        self.vm.launch()
> +        console_pattern = 'Kernel command line: %s' % kernel_command_line
> +        self.wait_for_console_pattern(console_pattern)
> 

This one sometime hangs:

$ make check-acceptance AVOCADO_SHOW=app,console
  AVOCADO tests/acceptance
JOB ID     : 9e363f10363c90882716d6be254f07eb5f355172
JOB LOG    :
/source/qemu/build/gcc/tests/results/job-2019-03-02T21.00-9e363f1/job.log
...
 (06/16)
/source/qemu/tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_virt:
/console: Booting Linux on physical CPU 0x0
console: Linux version 4.18.16-300.fc29.armv7hl
(mockbuild@buildvm-armv7-06.arm.fedoraproject.org) (gcc version 8.2.1
20180801 (Red Hat 8.2.1-2) (GCC)) #1 SMP Sun Oct 21 00:56:28 UTC 2018
console: CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=10c5387d
console: CPU: div instructions available: patching division code
console: CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
console: OF: fdt: Machine model: linux,dummy-virt
console: Memory policy: Data cache writealloc
console: efi: Getting EFI parameters from FDT:
console: efi: UEFI not found.
console: cma: Failed to reserve 64 MiB
console: psci: probing for conduit method from DT.
console: psci: PSCIv0.2 detected in firmware.
console: psci: Using standard PSCI v0.2 function IDs
console: psci: Trusted OS migration not required
console: percpu: Embedded 16 pages/cpu @(ptrval) s34956 r8192 d22388 u65536
console: Built 1 zonelists, mobility grouping on.  Total pages: 32480
console: Kernel command line: printk.time=0 console=ttyAMA0
INTERRUPTED: Runner error occurred: Timeout reached\nOriginal status:
PASS\n{'name':
'06-/source/qemu/tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_virt',
'logdir':
'/source/qemu/build/gcc/tests/results/job-2019-03-02T21.00-df1a431...
(90.60 s)
...
RESULTS    : PASS 9 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 1 |
CANCEL 6
JOB TIME   : 105.35 s
make: *** [/source/qemu/tests/Makefile.include:1116: check-acceptance]
Error 8

$ uname -rom
4.20.11-200.fc29.x86_64 x86_64 GNU/Linux

The string is here, so I wonder if something is wrong in
wait_for_console_pattern().

The debug log isn't helpful:

2019-03-02 21:10:27,062 test             L0602 INFO | START
06-/source/qemu/tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_virt
2019-03-02 21:10:27,062 test             L0298 DEBUG| DATA
(filename=output.expected) => NOT FOUND (data sources: variant, test, file)
2019-03-02 21:10:27,063 parameters       L0146 DEBUG| PARAMS (key=arch,
path=*, default=arm) => 'arm'
2019-03-02 21:10:27,063 parameters       L0146 DEBUG| PARAMS
(key=qemu_bin, path=*, default=arm-softmmu/qemu-system-arm) =>
'arm-softmmu/qemu-system-arm'
2019-03-02 21:10:27,070 qemu             L0323 DEBUG| VM launch command:
'arm-softmmu/qemu-system-arm -chardev
socket,id=mon,path=/var/tmp/tmpv_rh95rv/qemu-25227-monitor.sock -mon
chardev=mon,mode=control -display none -vga none -machine virt -chardev
socket,id=console,path=/var/tmp/tmpv_rh95rv/qemu-25227-console.sock,server,nowait
-serial chardev:console -kernel
/avocado/data/cache/by_location/096923daa6943c0c1287e76b52cdd56a882fef8a/vmlinuz
-append printk.time=0 console=ttyAMA0'
2019-03-02 21:10:27,157 qmp              L0167 DEBUG| >>> {'execute':
'qmp_capabilities'}
2019-03-02 21:10:27,176 qmp              L0175 DEBUG| <<< {'return': {}}
2019-03-02 21:10:28,446 qmp              L0167 DEBUG| >>> {'execute':
'quit'}
2019-03-02 21:11:57,654 qemu             L0363 WARNI| qemu received
signal 9: arm-softmmu/qemu-system-arm -chardev
socket,id=mon,path=/var/tmp/tmpv_rh95rv/qemu-25227-monitor.sock -mon
chardev=mon,mode=control -display none -vga none -machine virt -chardev
socket,id=console,path=/var/tmp/tmpv_rh95rv/qemu-25227-console.sock,server,nowait
-serial chardev:console -kernel
/avocado/data/cache/by_location/096923daa6943c0c1287e76b52cdd56a882fef8a/vmlinuz
-append printk.time=0 console=ttyAMA0
2019-03-02 21:11:57,655 test             L0298 DEBUG| DATA
(filename=output.expected) => NOT FOUND (data sources: variant, test, file)
2019-03-02 21:11:57,655 test             L0298 DEBUG| DATA
(filename=stdout.expected) => NOT FOUND (data sources: variant, test, file)
2019-03-02 21:11:57,655 test             L0298 DEBUG| DATA
(filename=stderr.expected) => NOT FOUND (data sources: variant, test, file)
2019-03-02 21:11:57,682 sysinfo          L0355 DEBUG| Not logging
/var/log/messages (lack of permissions)
2019-03-02 21:11:57,682 test             L1013 INFO | PASS
06-/source/qemu/tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_virt
2019-03-02 21:11:57,682 test             L0996 INFO |
2019-03-02 21:11:57,690 runner           L0061 ERROR| Runner error
occurred: Timeout reached

Regards,

Phil.
Cleber Rosa March 12, 2019, 11:49 a.m. UTC | #2
On Sat, Mar 02, 2019 at 09:13:40PM +0100, Philippe Mathieu-Daudé wrote:
> Hi Cleber,
> 
> On 2/21/19 1:57 AM, Cleber Rosa wrote:
> > Just like the previous tests, boots a Linux kernel on an arm target
> > using the virt machine.
> > 
> > Signed-off-by: Cleber Rosa <crosa@redhat.com>
> > Reviewed-by: Caio Carrara <ccarrara@redhat.com>
> > ---
> >  .travis.yml                            |  2 +-
> >  tests/acceptance/boot_linux_console.py | 20 ++++++++++++++++++++
> >  2 files changed, 21 insertions(+), 1 deletion(-)
> > 
> > diff --git a/.travis.yml b/.travis.yml
> > index 60a4bc00b8..f34bd8dc2b 100644
> > --- a/.travis.yml
> > +++ b/.travis.yml
> > @@ -198,7 +198,7 @@ matrix:
> >  
> >      # Acceptance (Functional) tests
> >      - env:
> > -        - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,ppc64-softmmu,aarch64-softmmu"
> > +        - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,ppc64-softmmu,aarch64-softmmu,arm-softmmu"
> >          - TEST_CMD="make check-acceptance"
> >        addons:
> >          apt:
> > diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
> > index 1f2dfa3654..311f6fbb96 100644
> > --- a/tests/acceptance/boot_linux_console.py
> > +++ b/tests/acceptance/boot_linux_console.py
> > @@ -177,3 +177,23 @@ class BootLinuxConsole(Test):
> >          self.vm.launch()
> >          console_pattern = 'Kernel command line: %s' % kernel_command_line
> >          self.wait_for_console_pattern(console_pattern)
> > +
> > +    def test_arm_virt(self):
> > +        """
> > +        :avocado: tags=arch:arm
> > +        :avocado: tags=machine:virt
> > +        """
> > +        kernel_url = ('https://sjc.edge.kernel.org/fedora-buffet/fedora/linux/'
> > +                      'releases/29/Server/armhfp/os/images/pxeboot/vmlinuz')
> > +        kernel_hash = 'e9826d741b4fb04cadba8d4824d1ed3b7fb8b4d4'
> > +        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
> > +
> > +        self.vm.set_machine('virt')
> > +        self.vm.set_console()
> > +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> > +                               'console=ttyAMA0')
> > +        self.vm.add_args('-kernel', kernel_path,
> > +                         '-append', kernel_command_line)
> > +        self.vm.launch()
> > +        console_pattern = 'Kernel command line: %s' % kernel_command_line
> > +        self.wait_for_console_pattern(console_pattern)
> > 
> 
> This one sometime hangs:
> 
> $ make check-acceptance AVOCADO_SHOW=app,console
>   AVOCADO tests/acceptance
> JOB ID     : 9e363f10363c90882716d6be254f07eb5f355172
> JOB LOG    :
> /source/qemu/build/gcc/tests/results/job-2019-03-02T21.00-9e363f1/job.log
> ...
>  (06/16)
> /source/qemu/tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_virt:
> /console: Booting Linux on physical CPU 0x0
> console: Linux version 4.18.16-300.fc29.armv7hl
> (mockbuild@buildvm-armv7-06.arm.fedoraproject.org) (gcc version 8.2.1
> 20180801 (Red Hat 8.2.1-2) (GCC)) #1 SMP Sun Oct 21 00:56:28 UTC 2018
> console: CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=10c5387d
> console: CPU: div instructions available: patching division code
> console: CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
> console: OF: fdt: Machine model: linux,dummy-virt
> console: Memory policy: Data cache writealloc
> console: efi: Getting EFI parameters from FDT:
> console: efi: UEFI not found.
> console: cma: Failed to reserve 64 MiB
> console: psci: probing for conduit method from DT.
> console: psci: PSCIv0.2 detected in firmware.
> console: psci: Using standard PSCI v0.2 function IDs
> console: psci: Trusted OS migration not required
> console: percpu: Embedded 16 pages/cpu @(ptrval) s34956 r8192 d22388 u65536
> console: Built 1 zonelists, mobility grouping on.  Total pages: 32480
> console: Kernel command line: printk.time=0 console=ttyAMA0
> INTERRUPTED: Runner error occurred: Timeout reached\nOriginal status:
> PASS\n{'name':
> '06-/source/qemu/tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_virt',
> 'logdir':
> '/source/qemu/build/gcc/tests/results/job-2019-03-02T21.00-df1a431...
> (90.60 s)
> ...
> RESULTS    : PASS 9 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 1 |
> CANCEL 6
> JOB TIME   : 105.35 s
> make: *** [/source/qemu/tests/Makefile.include:1116: check-acceptance]
> Error 8

No, it looks more like this issue:

   https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg00192.html

> 
> $ uname -rom
> 4.20.11-200.fc29.x86_64 x86_64 GNU/Linux
> 
> The string is here, so I wonder if something is wrong in
> wait_for_console_pattern().
> 
> The debug log isn't helpful:
> 
> 2019-03-02 21:10:27,062 test             L0602 INFO | START
> 06-/source/qemu/tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_virt
> 2019-03-02 21:10:27,062 test             L0298 DEBUG| DATA
> (filename=output.expected) => NOT FOUND (data sources: variant, test, file)
> 2019-03-02 21:10:27,063 parameters       L0146 DEBUG| PARAMS (key=arch,
> path=*, default=arm) => 'arm'
> 2019-03-02 21:10:27,063 parameters       L0146 DEBUG| PARAMS
> (key=qemu_bin, path=*, default=arm-softmmu/qemu-system-arm) =>
> 'arm-softmmu/qemu-system-arm'
> 2019-03-02 21:10:27,070 qemu             L0323 DEBUG| VM launch command:
> 'arm-softmmu/qemu-system-arm -chardev
> socket,id=mon,path=/var/tmp/tmpv_rh95rv/qemu-25227-monitor.sock -mon
> chardev=mon,mode=control -display none -vga none -machine virt -chardev
> socket,id=console,path=/var/tmp/tmpv_rh95rv/qemu-25227-console.sock,server,nowait
> -serial chardev:console -kernel
> /avocado/data/cache/by_location/096923daa6943c0c1287e76b52cdd56a882fef8a/vmlinuz
> -append printk.time=0 console=ttyAMA0'
> 2019-03-02 21:10:27,157 qmp              L0167 DEBUG| >>> {'execute':
> 'qmp_capabilities'}
> 2019-03-02 21:10:27,176 qmp              L0175 DEBUG| <<< {'return': {}}
> 2019-03-02 21:10:28,446 qmp              L0167 DEBUG| >>> {'execute':
> 'quit'}

This is executed after wait_for_console_pattern() returns.  This is
really QEMU hanging after being told to quit, as part of the QEMUMachine
shutdown code.

Now the question is where to go from here.  In my own testing, on top of
377b155bd, I've run this test 100 times and could not reproduce it anymore.

- Cleber.

> 2019-03-02 21:11:57,654 qemu             L0363 WARNI| qemu received
> signal 9: arm-softmmu/qemu-system-arm -chardev
> socket,id=mon,path=/var/tmp/tmpv_rh95rv/qemu-25227-monitor.sock -mon
> chardev=mon,mode=control -display none -vga none -machine virt -chardev
> socket,id=console,path=/var/tmp/tmpv_rh95rv/qemu-25227-console.sock,server,nowait
> -serial chardev:console -kernel
> /avocado/data/cache/by_location/096923daa6943c0c1287e76b52cdd56a882fef8a/vmlinuz
> -append printk.time=0 console=ttyAMA0
> 2019-03-02 21:11:57,655 test             L0298 DEBUG| DATA
> (filename=output.expected) => NOT FOUND (data sources: variant, test, file)
> 2019-03-02 21:11:57,655 test             L0298 DEBUG| DATA
> (filename=stdout.expected) => NOT FOUND (data sources: variant, test, file)
> 2019-03-02 21:11:57,655 test             L0298 DEBUG| DATA
> (filename=stderr.expected) => NOT FOUND (data sources: variant, test, file)
> 2019-03-02 21:11:57,682 sysinfo          L0355 DEBUG| Not logging
> /var/log/messages (lack of permissions)
> 2019-03-02 21:11:57,682 test             L1013 INFO | PASS
> 06-/source/qemu/tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_virt
> 2019-03-02 21:11:57,682 test             L0996 INFO |
> 2019-03-02 21:11:57,690 runner           L0061 ERROR| Runner error
> occurred: Timeout reached
> 
> Regards,
> 
> Phil.
diff mbox series

Patch

diff --git a/.travis.yml b/.travis.yml
index 60a4bc00b8..f34bd8dc2b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -198,7 +198,7 @@  matrix:
 
     # Acceptance (Functional) tests
     - env:
-        - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,ppc64-softmmu,aarch64-softmmu"
+        - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,ppc64-softmmu,aarch64-softmmu,arm-softmmu"
         - TEST_CMD="make check-acceptance"
       addons:
         apt:
diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
index 1f2dfa3654..311f6fbb96 100644
--- a/tests/acceptance/boot_linux_console.py
+++ b/tests/acceptance/boot_linux_console.py
@@ -177,3 +177,23 @@  class BootLinuxConsole(Test):
         self.vm.launch()
         console_pattern = 'Kernel command line: %s' % kernel_command_line
         self.wait_for_console_pattern(console_pattern)
+
+    def test_arm_virt(self):
+        """
+        :avocado: tags=arch:arm
+        :avocado: tags=machine:virt
+        """
+        kernel_url = ('https://sjc.edge.kernel.org/fedora-buffet/fedora/linux/'
+                      'releases/29/Server/armhfp/os/images/pxeboot/vmlinuz')
+        kernel_hash = 'e9826d741b4fb04cadba8d4824d1ed3b7fb8b4d4'
+        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+
+        self.vm.set_machine('virt')
+        self.vm.set_console()
+        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
+                               'console=ttyAMA0')
+        self.vm.add_args('-kernel', kernel_path,
+                         '-append', kernel_command_line)
+        self.vm.launch()
+        console_pattern = 'Kernel command line: %s' % kernel_command_line
+        self.wait_for_console_pattern(console_pattern)