diff mbox series

tests/acceptance: add MIPS record/replay tests

Message ID 160276110297.2705.10918105269658307206.stgit@pasha-ThinkPad-X280
State New
Headers show
Series tests/acceptance: add MIPS record/replay tests | expand

Commit Message

Pavel Dovgalyuk Oct. 15, 2020, 11:25 a.m. UTC
This patch adds MIPS-targeted acceptance tests for
record/replay functions.

Signed-off-by: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>
---
 0 files changed

Comments

Philippe Mathieu-Daudé Oct. 16, 2020, 3:40 p.m. UTC | #1
On 10/15/20 1:25 PM, Pavel Dovgalyuk wrote:
> This patch adds MIPS-targeted acceptance tests for

> record/replay functions.

> 

> Signed-off-by: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>

> ---

>   0 files changed

> 

> diff --git a/tests/acceptance/replay_kernel.py b/tests/acceptance/replay_kernel.py

> index 952f429cac..6c3d1ec3fb 100644

> --- a/tests/acceptance/replay_kernel.py

> +++ b/tests/acceptance/replay_kernel.py

> @@ -9,6 +9,8 @@

>   # later.  See the COPYING file in the top-level directory.

>   

>   import os

> +import lzma

> +import shutil

>   import logging

>   import time

>   

> @@ -19,7 +21,7 @@ from avocado.utils import archive

>   from avocado.utils import process

>   from boot_linux_console import LinuxKernelTest

>   

> -class ReplayKernel(LinuxKernelTest):

> +class ReplayKernelBase(LinuxKernelTest):

>       """

>       Boots a Linux kernel in record mode and checks that the console

>       is operational and the kernel command line is properly passed

> @@ -74,6 +76,7 @@ class ReplayKernel(LinuxKernelTest):

>           logger = logging.getLogger('replay')

>           logger.info('replay overhead {:.2%}'.format(t2 / t1 - 1))

>   

> +class ReplayKernelNormal(ReplayKernelBase):

>       @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')

>       def test_x86_64_pc(self):

>           """

> @@ -91,6 +94,103 @@ class ReplayKernel(LinuxKernelTest):

>   

>           self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)

>   

> +    def test_mips_malta(self):

> +        """

> +        :avocado: tags=arch:mips

> +        :avocado: tags=machine:malta

> +        :avocado: tags=endian:big

> +        """

> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

> +                   '20130217T032700Z/pool/main/l/linux-2.6/'

> +                   'linux-image-2.6.32-5-4kc-malta_2.6.32-48_mips.deb')

> +        deb_hash = 'a8cfc28ad8f45f54811fc6cf74fc43ffcfe0ba04'

> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

> +        kernel_path = self.extract_from_deb(deb_path,

> +                                            '/boot/vmlinux-2.6.32-5-4kc-malta')

> +        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0'

> +        console_pattern = 'Kernel command line: %s' % kernel_command_line

> +

> +        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)

> +

> +    def test_mips64el_malta(self):

> +        """

> +        This test requires the ar tool to extract "data.tar.gz" from

> +        the Debian package.

> +

> +        The kernel can be rebuilt using this Debian kernel source [1] and

> +        following the instructions on [2].

> +

> +        [1] http://snapshot.debian.org/package/linux-2.6/2.6.32-48/

> +            #linux-source-2.6.32_2.6.32-48

> +        [2] https://kernel-team.pages.debian.net/kernel-handbook/

> +            ch-common-tasks.html#s-common-official

> +

> +        :avocado: tags=arch:mips64el

> +        :avocado: tags=machine:malta

> +        """

> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

> +                   '20130217T032700Z/pool/main/l/linux-2.6/'

> +                   'linux-image-2.6.32-5-5kc-malta_2.6.32-48_mipsel.deb')

> +        deb_hash = '1aaec92083bf22fda31e0d27fa8d9a388e5fc3d5'

> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

> +        kernel_path = self.extract_from_deb(deb_path,

> +                                            '/boot/vmlinux-2.6.32-5-5kc-malta')

> +        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0'

> +        console_pattern = 'Kernel command line: %s' % kernel_command_line

> +        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)

> +

> +    def do_test_mips_malta32el_nanomips(self, kernel_path_xz):

> +        kernel_path = self.workdir + "kernel"

> +        with lzma.open(kernel_path_xz, 'rb') as f_in:

> +            with open(kernel_path, 'wb') as f_out:

> +                shutil.copyfileobj(f_in, f_out)

> +

> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

> +                               + 'mem=256m@@0x0 '

> +                               + 'console=ttyS0')

> +        console_pattern = 'Kernel command line: %s' % kernel_command_line

> +        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5,

> +                    args=('-cpu', 'I7200'))

> +

> +    def test_mips_malta32el_nanomips_4k(self):

> +        """

> +        :avocado: tags=arch:mipsel

> +        :avocado: tags=machine:malta

> +        :avocado: tags=endian:little

> +        """

> +        kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

> +                      'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

> +                      'generic_nano32r6el_page4k.xz')

> +        kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6'

> +        kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)

> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

> +

> +    def test_mips_malta32el_nanomips_16k_up(self):

> +        """

> +        :avocado: tags=arch:mipsel

> +        :avocado: tags=machine:malta

> +        :avocado: tags=endian:little

> +        """

> +        kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

> +                      'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

> +                      'generic_nano32r6el_page16k_up.xz')

> +        kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc'

> +        kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)

> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

> +

> +    def test_mips_malta32el_nanomips_64k_dbg(self):

> +        """

> +        :avocado: tags=arch:mipsel

> +        :avocado: tags=machine:malta

> +        :avocado: tags=endian:little

> +        """

> +        kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

> +                      'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

> +                      'generic_nano32r6el_page64k_dbg.xz')

> +        kernel_hash = '18d1c68f2e23429e266ca39ba5349ccd0aeb7180'

> +        kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)

> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

> +


All the nanomips tests timeout (--enable-debug --extra-cflags=-ggdb
--enable-debug-tcg), can you move them to ReplayKernelSlow?

>       def test_aarch64_virt(self):

>           """

>           :avocado: tags=arch:aarch64

> @@ -302,3 +402,70 @@ class ReplayKernel(LinuxKernelTest):

>           file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)

>           self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf',

>                                    args=('-cpu', 'dc233c'))

> +

> +class ReplayKernelSlow(ReplayKernelBase):

> +    timeout = 180

> +

> +    def test_mips_malta_cpio(self):

> +        """

> +        :avocado: tags=arch:mips

> +        :avocado: tags=machine:malta

> +        :avocado: tags=endian:big

> +        :avocado: tags=slowness:high

> +        """

> +        # Override the timeout, because this kernel includes

> +        # an inner loop which is executed with TB recompilings during

> +        # replay, making it very slow.


I think this comment makes sense once for the class
(before "timeout = 180"), not for each test.

> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

> +                   '20160601T041800Z/pool/main/l/linux/'

> +                   'linux-image-4.5.0-2-4kc-malta_4.5.5-1_mips.deb')

> +        deb_hash = 'a3c84f3e88b54e06107d65a410d1d1e8e0f340f8'

> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

> +        kernel_path = self.extract_from_deb(deb_path,

> +                                            '/boot/vmlinux-4.5.0-2-4kc-malta')

> +        initrd_url = ('https://github.com/groeck/linux-build-test/raw/'

> +                      '8584a59ed9e5eb5ee7ca91f6d74bbb06619205b8/rootfs/'

> +                      'mips/rootfs.cpio.gz')

> +        initrd_hash = 'bf806e17009360a866bf537f6de66590de349a99'

> +        initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash)

> +        initrd_path = self.workdir + "rootfs.cpio"

> +        archive.gzip_uncompress(initrd_path_gz, initrd_path)

> +

> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

> +                               + 'console=ttyS0 console=tty '

> +                               + 'rdinit=/sbin/init noreboot')

> +        console_pattern = 'Boot successful.'

> +        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5,

> +                    args=('-initrd', initrd_path))

> +

> +    @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')

> +    def test_mips64el_malta_5KEc_cpio(self):

> +        """

> +        :avocado: tags=arch:mips64el

> +        :avocado: tags=machine:malta

> +        :avocado: tags=endian:little

> +        :avocado: tags=slowness:high

> +        """

> +        # Override the timeout, because this kernel includes

> +        # an inner loop which is executed with TB recompilings during

> +        # replay, making it very slow.

> +        kernel_url = ('https://github.com/philmd/qemu-testing-blob/'

> +                      'raw/9ad2df38/mips/malta/mips64el/'

> +                      'vmlinux-3.19.3.mtoman.20150408')

> +        kernel_hash = '00d1d268fb9f7d8beda1de6bebcc46e884d71754'

> +        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)

> +        initrd_url = ('https://github.com/groeck/linux-build-test/'

> +                      'raw/8584a59e/rootfs/'

> +                      'mipsel64/rootfs.mipsel64r1.cpio.gz')

> +        initrd_hash = '1dbb8a396e916847325284dbe2151167'

> +        initrd_path_gz = self.fetch_asset(initrd_url, algorithm='md5',

> +                                          asset_hash=initrd_hash)

> +        initrd_path = self.workdir + "rootfs.cpio"

> +        archive.gzip_uncompress(initrd_path_gz, initrd_path)

> +

> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

> +                               + 'console=ttyS0 console=tty '

> +                               + 'rdinit=/sbin/init noreboot')

> +        console_pattern = 'Boot successful.'

> +        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5,

> +                    args=('-initrd', initrd_path, '-cpu', '5KEc'))

> 


With nanomips tests moved to ReplayKernelSlow:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Philippe Mathieu-Daudé Oct. 16, 2020, 4:50 p.m. UTC | #2
On 10/16/20 5:40 PM, Philippe Mathieu-Daudé wrote:
> On 10/15/20 1:25 PM, Pavel Dovgalyuk wrote:

>> This patch adds MIPS-targeted acceptance tests for

>> record/replay functions.

>>

>> Signed-off-by: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>

>> ---

>>   0 files changed

>>

>> diff --git a/tests/acceptance/replay_kernel.py 

>> b/tests/acceptance/replay_kernel.py

>> index 952f429cac..6c3d1ec3fb 100644

>> --- a/tests/acceptance/replay_kernel.py

>> +++ b/tests/acceptance/replay_kernel.py

>> @@ -9,6 +9,8 @@

>>   # later.  See the COPYING file in the top-level directory.

>>   import os

>> +import lzma

>> +import shutil

>>   import logging

>>   import time

>> @@ -19,7 +21,7 @@ from avocado.utils import archive

>>   from avocado.utils import process

>>   from boot_linux_console import LinuxKernelTest

>> -class ReplayKernel(LinuxKernelTest):

>> +class ReplayKernelBase(LinuxKernelTest):

>>       """

>>       Boots a Linux kernel in record mode and checks that the console

>>       is operational and the kernel command line is properly passed

>> @@ -74,6 +76,7 @@ class ReplayKernel(LinuxKernelTest):

>>           logger = logging.getLogger('replay')

>>           logger.info('replay overhead {:.2%}'.format(t2 / t1 - 1))

>> +class ReplayKernelNormal(ReplayKernelBase):

>>       @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')

>>       def test_x86_64_pc(self):

>>           """

>> @@ -91,6 +94,103 @@ class ReplayKernel(LinuxKernelTest):

>>           self.run_rr(kernel_path, kernel_command_line, 

>> console_pattern, shift=5)

>> +    def test_mips_malta(self):

>> +        """

>> +        :avocado: tags=arch:mips

>> +        :avocado: tags=machine:malta

>> +        :avocado: tags=endian:big

>> +        """

>> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

>> +                   '20130217T032700Z/pool/main/l/linux-2.6/'

>> +                   'linux-image-2.6.32-5-4kc-malta_2.6.32-48_mips.deb')

>> +        deb_hash = 'a8cfc28ad8f45f54811fc6cf74fc43ffcfe0ba04'

>> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

>> +        kernel_path = self.extract_from_deb(deb_path,

>> +                                            

>> '/boot/vmlinux-2.6.32-5-4kc-malta')

>> +        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 

>> 'console=ttyS0'

>> +        console_pattern = 'Kernel command line: %s' % 

>> kernel_command_line

>> +

>> +        self.run_rr(kernel_path, kernel_command_line, 

>> console_pattern, shift=5)

>> +

>> +    def test_mips64el_malta(self):

>> +        """

>> +        This test requires the ar tool to extract "data.tar.gz" from

>> +        the Debian package.

>> +

>> +        The kernel can be rebuilt using this Debian kernel source [1] 

>> and

>> +        following the instructions on [2].

>> +

>> +        [1] http://snapshot.debian.org/package/linux-2.6/2.6.32-48/

>> +            #linux-source-2.6.32_2.6.32-48

>> +        [2] https://kernel-team.pages.debian.net/kernel-handbook/

>> +            ch-common-tasks.html#s-common-official

>> +

>> +        :avocado: tags=arch:mips64el

>> +        :avocado: tags=machine:malta

>> +        """

>> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

>> +                   '20130217T032700Z/pool/main/l/linux-2.6/'

>> +                   

>> 'linux-image-2.6.32-5-5kc-malta_2.6.32-48_mipsel.deb')

>> +        deb_hash = '1aaec92083bf22fda31e0d27fa8d9a388e5fc3d5'

>> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

>> +        kernel_path = self.extract_from_deb(deb_path,

>> +                                            

>> '/boot/vmlinux-2.6.32-5-5kc-malta')

>> +        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 

>> 'console=ttyS0'

>> +        console_pattern = 'Kernel command line: %s' % 

>> kernel_command_line

>> +        self.run_rr(kernel_path, kernel_command_line, 

>> console_pattern, shift=5)

>> +

>> +    def do_test_mips_malta32el_nanomips(self, kernel_path_xz):

>> +        kernel_path = self.workdir + "kernel"

>> +        with lzma.open(kernel_path_xz, 'rb') as f_in:

>> +            with open(kernel_path, 'wb') as f_out:

>> +                shutil.copyfileobj(f_in, f_out)

>> +

>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

>> +                               + 'mem=256m@@0x0 '

>> +                               + 'console=ttyS0')

>> +        console_pattern = 'Kernel command line: %s' % 

>> kernel_command_line

>> +        self.run_rr(kernel_path, kernel_command_line, 

>> console_pattern, shift=5,

>> +                    args=('-cpu', 'I7200'))

>> +

>> +    def test_mips_malta32el_nanomips_4k(self):

>> +        """

>> +        :avocado: tags=arch:mipsel

>> +        :avocado: tags=machine:malta

>> +        :avocado: tags=endian:little

>> +        """

>> +        kernel_url = 

>> ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

>> +                      

>> 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

>> +                      'generic_nano32r6el_page4k.xz')

>> +        kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6'

>> +        kernel_path_xz = self.fetch_asset(kernel_url, 

>> asset_hash=kernel_hash)

>> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

>> +

>> +    def test_mips_malta32el_nanomips_16k_up(self):

>> +        """

>> +        :avocado: tags=arch:mipsel

>> +        :avocado: tags=machine:malta

>> +        :avocado: tags=endian:little

>> +        """

>> +        kernel_url = 

>> ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

>> +                      

>> 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

>> +                      'generic_nano32r6el_page16k_up.xz')

>> +        kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc'

>> +        kernel_path_xz = self.fetch_asset(kernel_url, 

>> asset_hash=kernel_hash)

>> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

>> +

>> +    def test_mips_malta32el_nanomips_64k_dbg(self):

>> +        """

>> +        :avocado: tags=arch:mipsel

>> +        :avocado: tags=machine:malta

>> +        :avocado: tags=endian:little

>> +        """

>> +        kernel_url = 

>> ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

>> +                      

>> 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

>> +                      'generic_nano32r6el_page64k_dbg.xz')

>> +        kernel_hash = '18d1c68f2e23429e266ca39ba5349ccd0aeb7180'

>> +        kernel_path_xz = self.fetch_asset(kernel_url, 

>> asset_hash=kernel_hash)

>> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

>> +

> 

> All the nanomips tests timeout (--enable-debug --extra-cflags=-ggdb

> --enable-debug-tcg), can you move them to ReplayKernelSlow?


Patch applied to mips-next without the nanomips tests.

Please submit them as a new patch.

> 

>>       def test_aarch64_virt(self):

>>           """

>>           :avocado: tags=arch:aarch64

>> @@ -302,3 +402,70 @@ class ReplayKernel(LinuxKernelTest):

>>           file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)

>>           self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf',

>>                                    args=('-cpu', 'dc233c'))

>> +

>> +class ReplayKernelSlow(ReplayKernelBase):

>> +    timeout = 180

>> +

>> +    def test_mips_malta_cpio(self):

>> +        """

>> +        :avocado: tags=arch:mips

>> +        :avocado: tags=machine:malta

>> +        :avocado: tags=endian:big

>> +        :avocado: tags=slowness:high

>> +        """

>> +        # Override the timeout, because this kernel includes

>> +        # an inner loop which is executed with TB recompilings during

>> +        # replay, making it very slow.

> 

> I think this comment makes sense once for the class

> (before "timeout = 180"), not for each test.

> 

>> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

>> +                   '20160601T041800Z/pool/main/l/linux/'

>> +                   'linux-image-4.5.0-2-4kc-malta_4.5.5-1_mips.deb')

>> +        deb_hash = 'a3c84f3e88b54e06107d65a410d1d1e8e0f340f8'

>> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

>> +        kernel_path = self.extract_from_deb(deb_path,

>> +                                            

>> '/boot/vmlinux-4.5.0-2-4kc-malta')

>> +        initrd_url = ('https://github.com/groeck/linux-build-test/raw/'

>> +                      '8584a59ed9e5eb5ee7ca91f6d74bbb06619205b8/rootfs/'

>> +                      'mips/rootfs.cpio.gz')

>> +        initrd_hash = 'bf806e17009360a866bf537f6de66590de349a99'

>> +        initrd_path_gz = self.fetch_asset(initrd_url, 

>> asset_hash=initrd_hash)

>> +        initrd_path = self.workdir + "rootfs.cpio"

>> +        archive.gzip_uncompress(initrd_path_gz, initrd_path)

>> +

>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

>> +                               + 'console=ttyS0 console=tty '

>> +                               + 'rdinit=/sbin/init noreboot')

>> +        console_pattern = 'Boot successful.'

>> +        self.run_rr(kernel_path, kernel_command_line, 

>> console_pattern, shift=5,

>> +                    args=('-initrd', initrd_path))

>> +

>> +    @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted 

>> code')

>> +    def test_mips64el_malta_5KEc_cpio(self):

>> +        """

>> +        :avocado: tags=arch:mips64el

>> +        :avocado: tags=machine:malta

>> +        :avocado: tags=endian:little

>> +        :avocado: tags=slowness:high

>> +        """

>> +        # Override the timeout, because this kernel includes

>> +        # an inner loop which is executed with TB recompilings during

>> +        # replay, making it very slow.

>> +        kernel_url = ('https://github.com/philmd/qemu-testing-blob/'

>> +                      'raw/9ad2df38/mips/malta/mips64el/'

>> +                      'vmlinux-3.19.3.mtoman.20150408')

>> +        kernel_hash = '00d1d268fb9f7d8beda1de6bebcc46e884d71754'

>> +        kernel_path = self.fetch_asset(kernel_url, 

>> asset_hash=kernel_hash)

>> +        initrd_url = ('https://github.com/groeck/linux-build-test/'

>> +                      'raw/8584a59e/rootfs/'

>> +                      'mipsel64/rootfs.mipsel64r1.cpio.gz')

>> +        initrd_hash = '1dbb8a396e916847325284dbe2151167'

>> +        initrd_path_gz = self.fetch_asset(initrd_url, algorithm='md5',

>> +                                          asset_hash=initrd_hash)

>> +        initrd_path = self.workdir + "rootfs.cpio"

>> +        archive.gzip_uncompress(initrd_path_gz, initrd_path)

>> +

>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

>> +                               + 'console=ttyS0 console=tty '

>> +                               + 'rdinit=/sbin/init noreboot')

>> +        console_pattern = 'Boot successful.'

>> +        self.run_rr(kernel_path, kernel_command_line, 

>> console_pattern, shift=5,

>> +                    args=('-initrd', initrd_path, '-cpu', '5KEc'))

>>

> 

> With nanomips tests moved to ReplayKernelSlow:

> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>
Philippe Mathieu-Daudé Oct. 17, 2020, 9:05 a.m. UTC | #3
On 10/16/20 6:50 PM, Philippe Mathieu-Daudé wrote:
> On 10/16/20 5:40 PM, Philippe Mathieu-Daudé wrote:

>> On 10/15/20 1:25 PM, Pavel Dovgalyuk wrote:

>>> This patch adds MIPS-targeted acceptance tests for

>>> record/replay functions.

>>>

>>> Signed-off-by: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>

>>> ---

>>>   0 files changed

>>>

>>> diff --git a/tests/acceptance/replay_kernel.py 

>>> b/tests/acceptance/replay_kernel.py

>>> index 952f429cac..6c3d1ec3fb 100644

>>> --- a/tests/acceptance/replay_kernel.py

>>> +++ b/tests/acceptance/replay_kernel.py

>>> @@ -9,6 +9,8 @@

>>>   # later.  See the COPYING file in the top-level directory.

>>>   import os

>>> +import lzma

>>> +import shutil

>>>   import logging

>>>   import time

>>> @@ -19,7 +21,7 @@ from avocado.utils import archive

>>>   from avocado.utils import process

>>>   from boot_linux_console import LinuxKernelTest

>>> -class ReplayKernel(LinuxKernelTest):

>>> +class ReplayKernelBase(LinuxKernelTest):

>>>       """

>>>       Boots a Linux kernel in record mode and checks that the console

>>>       is operational and the kernel command line is properly passed

>>> @@ -74,6 +76,7 @@ class ReplayKernel(LinuxKernelTest):

>>>           logger = logging.getLogger('replay')

>>>           logger.info('replay overhead {:.2%}'.format(t2 / t1 - 1))

>>> +class ReplayKernelNormal(ReplayKernelBase):

>>>       @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')

>>>       def test_x86_64_pc(self):

>>>           """

>>> @@ -91,6 +94,103 @@ class ReplayKernel(LinuxKernelTest):

>>>           self.run_rr(kernel_path, kernel_command_line, 

>>> console_pattern, shift=5)

>>> +    def test_mips_malta(self):

>>> +        """

>>> +        :avocado: tags=arch:mips

>>> +        :avocado: tags=machine:malta

>>> +        :avocado: tags=endian:big

>>> +        """

>>> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

>>> +                   '20130217T032700Z/pool/main/l/linux-2.6/'

>>> +                   'linux-image-2.6.32-5-4kc-malta_2.6.32-48_mips.deb')

>>> +        deb_hash = 'a8cfc28ad8f45f54811fc6cf74fc43ffcfe0ba04'

>>> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

>>> +        kernel_path = self.extract_from_deb(deb_path,

>>> + '/boot/vmlinux-2.6.32-5-4kc-malta')

>>> +        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 

>>> 'console=ttyS0'

>>> +        console_pattern = 'Kernel command line: %s' % 

>>> kernel_command_line

>>> +

>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>> console_pattern, shift=5)

>>> +

>>> +    def test_mips64el_malta(self):

>>> +        """

>>> +        This test requires the ar tool to extract "data.tar.gz" from

>>> +        the Debian package.

>>> +

>>> +        The kernel can be rebuilt using this Debian kernel source 

>>> [1] and

>>> +        following the instructions on [2].

>>> +

>>> +        [1] http://snapshot.debian.org/package/linux-2.6/2.6.32-48/

>>> +            #linux-source-2.6.32_2.6.32-48

>>> +        [2] https://kernel-team.pages.debian.net/kernel-handbook/

>>> +            ch-common-tasks.html#s-common-official

>>> +

>>> +        :avocado: tags=arch:mips64el

>>> +        :avocado: tags=machine:malta

>>> +        """

>>> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

>>> +                   '20130217T032700Z/pool/main/l/linux-2.6/'

>>> + 'linux-image-2.6.32-5-5kc-malta_2.6.32-48_mipsel.deb')

>>> +        deb_hash = '1aaec92083bf22fda31e0d27fa8d9a388e5fc3d5'

>>> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

>>> +        kernel_path = self.extract_from_deb(deb_path,

>>> + '/boot/vmlinux-2.6.32-5-5kc-malta')

>>> +        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 

>>> 'console=ttyS0'

>>> +        console_pattern = 'Kernel command line: %s' % 

>>> kernel_command_line

>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>> console_pattern, shift=5)

>>> +

>>> +    def do_test_mips_malta32el_nanomips(self, kernel_path_xz):

>>> +        kernel_path = self.workdir + "kernel"

>>> +        with lzma.open(kernel_path_xz, 'rb') as f_in:

>>> +            with open(kernel_path, 'wb') as f_out:

>>> +                shutil.copyfileobj(f_in, f_out)

>>> +

>>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

>>> +                               + 'mem=256m@@0x0 '

>>> +                               + 'console=ttyS0')

>>> +        console_pattern = 'Kernel command line: %s' % 

>>> kernel_command_line

>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>> console_pattern, shift=5,

>>> +                    args=('-cpu', 'I7200'))

>>> +

>>> +    def test_mips_malta32el_nanomips_4k(self):

>>> +        """

>>> +        :avocado: tags=arch:mipsel

>>> +        :avocado: tags=machine:malta

>>> +        :avocado: tags=endian:little

>>> +        """

>>> +        kernel_url = 

>>> ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

>>> + 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

>>> +                      'generic_nano32r6el_page4k.xz')

>>> +        kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6'

>>> +        kernel_path_xz = self.fetch_asset(kernel_url, 

>>> asset_hash=kernel_hash)

>>> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

>>> +

>>> +    def test_mips_malta32el_nanomips_16k_up(self):

>>> +        """

>>> +        :avocado: tags=arch:mipsel

>>> +        :avocado: tags=machine:malta

>>> +        :avocado: tags=endian:little

>>> +        """

>>> +        kernel_url = 

>>> ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

>>> + 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

>>> +                      'generic_nano32r6el_page16k_up.xz')

>>> +        kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc'

>>> +        kernel_path_xz = self.fetch_asset(kernel_url, 

>>> asset_hash=kernel_hash)

>>> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

>>> +

>>> +    def test_mips_malta32el_nanomips_64k_dbg(self):

>>> +        """

>>> +        :avocado: tags=arch:mipsel

>>> +        :avocado: tags=machine:malta

>>> +        :avocado: tags=endian:little

>>> +        """

>>> +        kernel_url = 

>>> ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

>>> + 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

>>> +                      'generic_nano32r6el_page64k_dbg.xz')

>>> +        kernel_hash = '18d1c68f2e23429e266ca39ba5349ccd0aeb7180'

>>> +        kernel_path_xz = self.fetch_asset(kernel_url, 

>>> asset_hash=kernel_hash)

>>> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

>>> +

>>

>> All the nanomips tests timeout (--enable-debug --extra-cflags=-ggdb

>> --enable-debug-tcg), can you move them to ReplayKernelSlow?

> 

> Patch applied to mips-next without the nanomips tests.


ReplayKernelSlow.test_mips_malta_cpio timeouting :/
https://gitlab.com/philmd/qemu/-/jobs/795992189#L556

> 

> Please submit them as a new patch.

> 

>>

>>>       def test_aarch64_virt(self):

>>>           """

>>>           :avocado: tags=arch:aarch64

>>> @@ -302,3 +402,70 @@ class ReplayKernel(LinuxKernelTest):

>>>           file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)

>>>           self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf',

>>>                                    args=('-cpu', 'dc233c'))

>>> +

>>> +class ReplayKernelSlow(ReplayKernelBase):

>>> +    timeout = 180

>>> +

>>> +    def test_mips_malta_cpio(self):

>>> +        """

>>> +        :avocado: tags=arch:mips

>>> +        :avocado: tags=machine:malta

>>> +        :avocado: tags=endian:big

>>> +        :avocado: tags=slowness:high

>>> +        """

>>> +        # Override the timeout, because this kernel includes

>>> +        # an inner loop which is executed with TB recompilings during

>>> +        # replay, making it very slow.

>>

>> I think this comment makes sense once for the class

>> (before "timeout = 180"), not for each test.

>>

>>> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

>>> +                   '20160601T041800Z/pool/main/l/linux/'

>>> +                   'linux-image-4.5.0-2-4kc-malta_4.5.5-1_mips.deb')

>>> +        deb_hash = 'a3c84f3e88b54e06107d65a410d1d1e8e0f340f8'

>>> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

>>> +        kernel_path = self.extract_from_deb(deb_path,

>>> + '/boot/vmlinux-4.5.0-2-4kc-malta')

>>> +        initrd_url = ('https://github.com/groeck/linux-build-test/raw/'

>>> +                      

>>> '8584a59ed9e5eb5ee7ca91f6d74bbb06619205b8/rootfs/'

>>> +                      'mips/rootfs.cpio.gz')

>>> +        initrd_hash = 'bf806e17009360a866bf537f6de66590de349a99'

>>> +        initrd_path_gz = self.fetch_asset(initrd_url, 

>>> asset_hash=initrd_hash)

>>> +        initrd_path = self.workdir + "rootfs.cpio"

>>> +        archive.gzip_uncompress(initrd_path_gz, initrd_path)

>>> +

>>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

>>> +                               + 'console=ttyS0 console=tty '

>>> +                               + 'rdinit=/sbin/init noreboot')

>>> +        console_pattern = 'Boot successful.'

>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>> console_pattern, shift=5,

>>> +                    args=('-initrd', initrd_path))

>>> +

>>> +    @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 

>>> 'untrusted code')

>>> +    def test_mips64el_malta_5KEc_cpio(self):

>>> +        """

>>> +        :avocado: tags=arch:mips64el

>>> +        :avocado: tags=machine:malta

>>> +        :avocado: tags=endian:little

>>> +        :avocado: tags=slowness:high

>>> +        """

>>> +        # Override the timeout, because this kernel includes

>>> +        # an inner loop which is executed with TB recompilings during

>>> +        # replay, making it very slow.

>>> +        kernel_url = ('https://github.com/philmd/qemu-testing-blob/'

>>> +                      'raw/9ad2df38/mips/malta/mips64el/'

>>> +                      'vmlinux-3.19.3.mtoman.20150408')

>>> +        kernel_hash = '00d1d268fb9f7d8beda1de6bebcc46e884d71754'

>>> +        kernel_path = self.fetch_asset(kernel_url, 

>>> asset_hash=kernel_hash)

>>> +        initrd_url = ('https://github.com/groeck/linux-build-test/'

>>> +                      'raw/8584a59e/rootfs/'

>>> +                      'mipsel64/rootfs.mipsel64r1.cpio.gz')

>>> +        initrd_hash = '1dbb8a396e916847325284dbe2151167'

>>> +        initrd_path_gz = self.fetch_asset(initrd_url, algorithm='md5',

>>> +                                          asset_hash=initrd_hash)

>>> +        initrd_path = self.workdir + "rootfs.cpio"

>>> +        archive.gzip_uncompress(initrd_path_gz, initrd_path)

>>> +

>>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

>>> +                               + 'console=ttyS0 console=tty '

>>> +                               + 'rdinit=/sbin/init noreboot')

>>> +        console_pattern = 'Boot successful.'

>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>> console_pattern, shift=5,

>>> +                    args=('-initrd', initrd_path, '-cpu', '5KEc'))

>>>

>>

>> With nanomips tests moved to ReplayKernelSlow:

>> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>

>
Philippe Mathieu-Daudé Oct. 17, 2020, 10:23 a.m. UTC | #4
On 10/17/20 11:05 AM, Philippe Mathieu-Daudé wrote:
> On 10/16/20 6:50 PM, Philippe Mathieu-Daudé wrote:

>> On 10/16/20 5:40 PM, Philippe Mathieu-Daudé wrote:

>>> On 10/15/20 1:25 PM, Pavel Dovgalyuk wrote:

>>>> This patch adds MIPS-targeted acceptance tests for

>>>> record/replay functions.

>>>>

>>>> Signed-off-by: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>

>>>> ---

>>>>   0 files changed


???

>>>>

>>>> diff --git a/tests/acceptance/replay_kernel.py 

>>>> b/tests/acceptance/replay_kernel.py

>>>> index 952f429cac..6c3d1ec3fb 100644

>>>> --- a/tests/acceptance/replay_kernel.py

>>>> +++ b/tests/acceptance/replay_kernel.py

>>>> @@ -9,6 +9,8 @@

>>>>   # later.  See the COPYING file in the top-level directory.

>>>>   import os

>>>> +import lzma

>>>> +import shutil

>>>>   import logging

>>>>   import time

>>>> @@ -19,7 +21,7 @@ from avocado.utils import archive

>>>>   from avocado.utils import process

>>>>   from boot_linux_console import LinuxKernelTest

>>>> -class ReplayKernel(LinuxKernelTest):

>>>> +class ReplayKernelBase(LinuxKernelTest):

>>>>       """

>>>>       Boots a Linux kernel in record mode and checks that the console

>>>>       is operational and the kernel command line is properly passed

>>>> @@ -74,6 +76,7 @@ class ReplayKernel(LinuxKernelTest):

>>>>           logger = logging.getLogger('replay')

>>>>           logger.info('replay overhead {:.2%}'.format(t2 / t1 - 1))

>>>> +class ReplayKernelNormal(ReplayKernelBase):

>>>>       @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')

>>>>       def test_x86_64_pc(self):

>>>>           """

>>>> @@ -91,6 +94,103 @@ class ReplayKernel(LinuxKernelTest):

>>>>           self.run_rr(kernel_path, kernel_command_line, 

>>>> console_pattern, shift=5)

>>>> +    def test_mips_malta(self):

>>>> +        """

>>>> +        :avocado: tags=arch:mips

>>>> +        :avocado: tags=machine:malta

>>>> +        :avocado: tags=endian:big

>>>> +        """

>>>> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

>>>> +                   '20130217T032700Z/pool/main/l/linux-2.6/'

>>>> +                   

>>>> 'linux-image-2.6.32-5-4kc-malta_2.6.32-48_mips.deb')

>>>> +        deb_hash = 'a8cfc28ad8f45f54811fc6cf74fc43ffcfe0ba04'

>>>> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

>>>> +        kernel_path = self.extract_from_deb(deb_path,

>>>> + '/boot/vmlinux-2.6.32-5-4kc-malta')

>>>> +        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 

>>>> 'console=ttyS0'

>>>> +        console_pattern = 'Kernel command line: %s' % 

>>>> kernel_command_line

>>>> +

>>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>>> console_pattern, shift=5)

>>>> +

>>>> +    def test_mips64el_malta(self):

>>>> +        """

>>>> +        This test requires the ar tool to extract "data.tar.gz" from

>>>> +        the Debian package.

>>>> +

>>>> +        The kernel can be rebuilt using this Debian kernel source 

>>>> [1] and

>>>> +        following the instructions on [2].

>>>> +

>>>> +        [1] http://snapshot.debian.org/package/linux-2.6/2.6.32-48/

>>>> +            #linux-source-2.6.32_2.6.32-48

>>>> +        [2] https://kernel-team.pages.debian.net/kernel-handbook/

>>>> +            ch-common-tasks.html#s-common-official

>>>> +

>>>> +        :avocado: tags=arch:mips64el

>>>> +        :avocado: tags=machine:malta

>>>> +        """

>>>> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

>>>> +                   '20130217T032700Z/pool/main/l/linux-2.6/'

>>>> + 'linux-image-2.6.32-5-5kc-malta_2.6.32-48_mipsel.deb')

>>>> +        deb_hash = '1aaec92083bf22fda31e0d27fa8d9a388e5fc3d5'

>>>> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

>>>> +        kernel_path = self.extract_from_deb(deb_path,

>>>> + '/boot/vmlinux-2.6.32-5-5kc-malta')

>>>> +        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 

>>>> 'console=ttyS0'

>>>> +        console_pattern = 'Kernel command line: %s' % 

>>>> kernel_command_line

>>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>>> console_pattern, shift=5)

>>>> +

>>>> +    def do_test_mips_malta32el_nanomips(self, kernel_path_xz):

>>>> +        kernel_path = self.workdir + "kernel"

>>>> +        with lzma.open(kernel_path_xz, 'rb') as f_in:

>>>> +            with open(kernel_path, 'wb') as f_out:

>>>> +                shutil.copyfileobj(f_in, f_out)

>>>> +

>>>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

>>>> +                               + 'mem=256m@@0x0 '

>>>> +                               + 'console=ttyS0')

>>>> +        console_pattern = 'Kernel command line: %s' % 

>>>> kernel_command_line

>>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>>> console_pattern, shift=5,

>>>> +                    args=('-cpu', 'I7200'))

>>>> +

>>>> +    def test_mips_malta32el_nanomips_4k(self):

>>>> +        """

>>>> +        :avocado: tags=arch:mipsel

>>>> +        :avocado: tags=machine:malta

>>>> +        :avocado: tags=endian:little

>>>> +        """

>>>> +        kernel_url = 

>>>> ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

>>>> + 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

>>>> +                      'generic_nano32r6el_page4k.xz')

>>>> +        kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6'

>>>> +        kernel_path_xz = self.fetch_asset(kernel_url, 

>>>> asset_hash=kernel_hash)

>>>> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

>>>> +

>>>> +    def test_mips_malta32el_nanomips_16k_up(self):

>>>> +        """

>>>> +        :avocado: tags=arch:mipsel

>>>> +        :avocado: tags=machine:malta

>>>> +        :avocado: tags=endian:little

>>>> +        """

>>>> +        kernel_url = 

>>>> ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

>>>> + 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

>>>> +                      'generic_nano32r6el_page16k_up.xz')

>>>> +        kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc'

>>>> +        kernel_path_xz = self.fetch_asset(kernel_url, 

>>>> asset_hash=kernel_hash)

>>>> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

>>>> +

>>>> +    def test_mips_malta32el_nanomips_64k_dbg(self):

>>>> +        """

>>>> +        :avocado: tags=arch:mipsel

>>>> +        :avocado: tags=machine:malta

>>>> +        :avocado: tags=endian:little

>>>> +        """

>>>> +        kernel_url = 

>>>> ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'

>>>> + 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'

>>>> +                      'generic_nano32r6el_page64k_dbg.xz')

>>>> +        kernel_hash = '18d1c68f2e23429e266ca39ba5349ccd0aeb7180'

>>>> +        kernel_path_xz = self.fetch_asset(kernel_url, 

>>>> asset_hash=kernel_hash)

>>>> +        self.do_test_mips_malta32el_nanomips(kernel_path_xz)

>>>> +

>>>

>>> All the nanomips tests timeout (--enable-debug --extra-cflags=-ggdb

>>> --enable-debug-tcg), can you move them to ReplayKernelSlow?

>>

>> Patch applied to mips-next without the nanomips tests.

> 

> ReplayKernelSlow.test_mips_malta_cpio timeouting :/

> https://gitlab.com/philmd/qemu/-/jobs/795992189#L556


Still timeouting using 240s:

https://gitlab.com/philmd/qemu/-/jobs/796451961#L464

I'm re-adding the nanomips tests (in ReplayKernelSlow) and
tag ReplayKernelSlow with AVOCADO_TIMEOUT_EXPECTED, as they
succeed when compiled with -O2:

  (096/119) 
tests/acceptance/replay_kernel.py:ReplayKernelSlow.test_mips_malta32el_nanomips_4k: 
PASS (53.89 s)
  (097/119) 
tests/acceptance/replay_kernel.py:ReplayKernelSlow.test_mips_malta32el_nanomips_16k_up: 
PASS (56.97 s)
  (098/119) 
tests/acceptance/replay_kernel.py:ReplayKernelSlow.test_mips_malta32el_nanomips_64k_dbg: 
PASS (60.83 s)

> 

>>

>> Please submit them as a new patch.

>>

>>>

>>>>       def test_aarch64_virt(self):

>>>>           """

>>>>           :avocado: tags=arch:aarch64

>>>> @@ -302,3 +402,70 @@ class ReplayKernel(LinuxKernelTest):

>>>>           file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)

>>>>           self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf',

>>>>                                    args=('-cpu', 'dc233c'))

>>>> +

>>>> +class ReplayKernelSlow(ReplayKernelBase):

>>>> +    timeout = 180

>>>> +

>>>> +    def test_mips_malta_cpio(self):

>>>> +        """

>>>> +        :avocado: tags=arch:mips

>>>> +        :avocado: tags=machine:malta

>>>> +        :avocado: tags=endian:big

>>>> +        :avocado: tags=slowness:high

>>>> +        """

>>>> +        # Override the timeout, because this kernel includes

>>>> +        # an inner loop which is executed with TB recompilings during

>>>> +        # replay, making it very slow.

>>>

>>> I think this comment makes sense once for the class

>>> (before "timeout = 180"), not for each test.

>>>

>>>> +        deb_url = ('http://snapshot.debian.org/archive/debian/'

>>>> +                   '20160601T041800Z/pool/main/l/linux/'

>>>> +                   'linux-image-4.5.0-2-4kc-malta_4.5.5-1_mips.deb')

>>>> +        deb_hash = 'a3c84f3e88b54e06107d65a410d1d1e8e0f340f8'

>>>> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)

>>>> +        kernel_path = self.extract_from_deb(deb_path,

>>>> + '/boot/vmlinux-4.5.0-2-4kc-malta')

>>>> +        initrd_url = 

>>>> ('https://github.com/groeck/linux-build-test/raw/'

>>>> + '8584a59ed9e5eb5ee7ca91f6d74bbb06619205b8/rootfs/'

>>>> +                      'mips/rootfs.cpio.gz')

>>>> +        initrd_hash = 'bf806e17009360a866bf537f6de66590de349a99'

>>>> +        initrd_path_gz = self.fetch_asset(initrd_url, 

>>>> asset_hash=initrd_hash)

>>>> +        initrd_path = self.workdir + "rootfs.cpio"

>>>> +        archive.gzip_uncompress(initrd_path_gz, initrd_path)

>>>> +

>>>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

>>>> +                               + 'console=ttyS0 console=tty '

>>>> +                               + 'rdinit=/sbin/init noreboot')

>>>> +        console_pattern = 'Boot successful.'

>>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>>> console_pattern, shift=5,

>>>> +                    args=('-initrd', initrd_path))

>>>> +

>>>> +    @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 

>>>> 'untrusted code')

>>>> +    def test_mips64el_malta_5KEc_cpio(self):

>>>> +        """

>>>> +        :avocado: tags=arch:mips64el

>>>> +        :avocado: tags=machine:malta

>>>> +        :avocado: tags=endian:little

>>>> +        :avocado: tags=slowness:high

>>>> +        """

>>>> +        # Override the timeout, because this kernel includes

>>>> +        # an inner loop which is executed with TB recompilings during

>>>> +        # replay, making it very slow.

>>>> +        kernel_url = ('https://github.com/philmd/qemu-testing-blob/'

>>>> +                      'raw/9ad2df38/mips/malta/mips64el/'

>>>> +                      'vmlinux-3.19.3.mtoman.20150408')

>>>> +        kernel_hash = '00d1d268fb9f7d8beda1de6bebcc46e884d71754'

>>>> +        kernel_path = self.fetch_asset(kernel_url, 

>>>> asset_hash=kernel_hash)

>>>> +        initrd_url = ('https://github.com/groeck/linux-build-test/'

>>>> +                      'raw/8584a59e/rootfs/'

>>>> +                      'mipsel64/rootfs.mipsel64r1.cpio.gz')

>>>> +        initrd_hash = '1dbb8a396e916847325284dbe2151167'

>>>> +        initrd_path_gz = self.fetch_asset(initrd_url, algorithm='md5',

>>>> +                                          asset_hash=initrd_hash)

>>>> +        initrd_path = self.workdir + "rootfs.cpio"

>>>> +        archive.gzip_uncompress(initrd_path_gz, initrd_path)

>>>> +

>>>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE

>>>> +                               + 'console=ttyS0 console=tty '

>>>> +                               + 'rdinit=/sbin/init noreboot')

>>>> +        console_pattern = 'Boot successful.'

>>>> +        self.run_rr(kernel_path, kernel_command_line, 

>>>> console_pattern, shift=5,

>>>> +                    args=('-initrd', initrd_path, '-cpu', '5KEc'))

>>>>

>>>

>>> With nanomips tests moved to ReplayKernelSlow:

>>> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>>

>>

>
diff mbox series

Patch

diff --git a/tests/acceptance/replay_kernel.py b/tests/acceptance/replay_kernel.py
index 952f429cac..6c3d1ec3fb 100644
--- a/tests/acceptance/replay_kernel.py
+++ b/tests/acceptance/replay_kernel.py
@@ -9,6 +9,8 @@ 
 # later.  See the COPYING file in the top-level directory.
 
 import os
+import lzma
+import shutil
 import logging
 import time
 
@@ -19,7 +21,7 @@  from avocado.utils import archive
 from avocado.utils import process
 from boot_linux_console import LinuxKernelTest
 
-class ReplayKernel(LinuxKernelTest):
+class ReplayKernelBase(LinuxKernelTest):
     """
     Boots a Linux kernel in record mode and checks that the console
     is operational and the kernel command line is properly passed
@@ -74,6 +76,7 @@  class ReplayKernel(LinuxKernelTest):
         logger = logging.getLogger('replay')
         logger.info('replay overhead {:.2%}'.format(t2 / t1 - 1))
 
+class ReplayKernelNormal(ReplayKernelBase):
     @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
     def test_x86_64_pc(self):
         """
@@ -91,6 +94,103 @@  class ReplayKernel(LinuxKernelTest):
 
         self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)
 
+    def test_mips_malta(self):
+        """
+        :avocado: tags=arch:mips
+        :avocado: tags=machine:malta
+        :avocado: tags=endian:big
+        """
+        deb_url = ('http://snapshot.debian.org/archive/debian/'
+                   '20130217T032700Z/pool/main/l/linux-2.6/'
+                   'linux-image-2.6.32-5-4kc-malta_2.6.32-48_mips.deb')
+        deb_hash = 'a8cfc28ad8f45f54811fc6cf74fc43ffcfe0ba04'
+        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
+        kernel_path = self.extract_from_deb(deb_path,
+                                            '/boot/vmlinux-2.6.32-5-4kc-malta')
+        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0'
+        console_pattern = 'Kernel command line: %s' % kernel_command_line
+
+        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)
+
+    def test_mips64el_malta(self):
+        """
+        This test requires the ar tool to extract "data.tar.gz" from
+        the Debian package.
+
+        The kernel can be rebuilt using this Debian kernel source [1] and
+        following the instructions on [2].
+
+        [1] http://snapshot.debian.org/package/linux-2.6/2.6.32-48/
+            #linux-source-2.6.32_2.6.32-48
+        [2] https://kernel-team.pages.debian.net/kernel-handbook/
+            ch-common-tasks.html#s-common-official
+
+        :avocado: tags=arch:mips64el
+        :avocado: tags=machine:malta
+        """
+        deb_url = ('http://snapshot.debian.org/archive/debian/'
+                   '20130217T032700Z/pool/main/l/linux-2.6/'
+                   'linux-image-2.6.32-5-5kc-malta_2.6.32-48_mipsel.deb')
+        deb_hash = '1aaec92083bf22fda31e0d27fa8d9a388e5fc3d5'
+        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
+        kernel_path = self.extract_from_deb(deb_path,
+                                            '/boot/vmlinux-2.6.32-5-5kc-malta')
+        kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0'
+        console_pattern = 'Kernel command line: %s' % kernel_command_line
+        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)
+
+    def do_test_mips_malta32el_nanomips(self, kernel_path_xz):
+        kernel_path = self.workdir + "kernel"
+        with lzma.open(kernel_path_xz, 'rb') as f_in:
+            with open(kernel_path, 'wb') as f_out:
+                shutil.copyfileobj(f_in, f_out)
+
+        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE
+                               + 'mem=256m@@0x0 '
+                               + 'console=ttyS0')
+        console_pattern = 'Kernel command line: %s' % kernel_command_line
+        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5,
+                    args=('-cpu', 'I7200'))
+
+    def test_mips_malta32el_nanomips_4k(self):
+        """
+        :avocado: tags=arch:mipsel
+        :avocado: tags=machine:malta
+        :avocado: tags=endian:little
+        """
+        kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'
+                      'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'
+                      'generic_nano32r6el_page4k.xz')
+        kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6'
+        kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+        self.do_test_mips_malta32el_nanomips(kernel_path_xz)
+
+    def test_mips_malta32el_nanomips_16k_up(self):
+        """
+        :avocado: tags=arch:mipsel
+        :avocado: tags=machine:malta
+        :avocado: tags=endian:little
+        """
+        kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'
+                      'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'
+                      'generic_nano32r6el_page16k_up.xz')
+        kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc'
+        kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+        self.do_test_mips_malta32el_nanomips(kernel_path_xz)
+
+    def test_mips_malta32el_nanomips_64k_dbg(self):
+        """
+        :avocado: tags=arch:mipsel
+        :avocado: tags=machine:malta
+        :avocado: tags=endian:little
+        """
+        kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/'
+                      'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/'
+                      'generic_nano32r6el_page64k_dbg.xz')
+        kernel_hash = '18d1c68f2e23429e266ca39ba5349ccd0aeb7180'
+        kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+        self.do_test_mips_malta32el_nanomips(kernel_path_xz)
+
     def test_aarch64_virt(self):
         """
         :avocado: tags=arch:aarch64
@@ -302,3 +402,70 @@  class ReplayKernel(LinuxKernelTest):
         file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
         self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf',
                                  args=('-cpu', 'dc233c'))
+
+class ReplayKernelSlow(ReplayKernelBase):
+    timeout = 180
+
+    def test_mips_malta_cpio(self):
+        """
+        :avocado: tags=arch:mips
+        :avocado: tags=machine:malta
+        :avocado: tags=endian:big
+        :avocado: tags=slowness:high
+        """
+        # Override the timeout, because this kernel includes
+        # an inner loop which is executed with TB recompilings during
+        # replay, making it very slow.
+        deb_url = ('http://snapshot.debian.org/archive/debian/'
+                   '20160601T041800Z/pool/main/l/linux/'
+                   'linux-image-4.5.0-2-4kc-malta_4.5.5-1_mips.deb')
+        deb_hash = 'a3c84f3e88b54e06107d65a410d1d1e8e0f340f8'
+        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
+        kernel_path = self.extract_from_deb(deb_path,
+                                            '/boot/vmlinux-4.5.0-2-4kc-malta')
+        initrd_url = ('https://github.com/groeck/linux-build-test/raw/'
+                      '8584a59ed9e5eb5ee7ca91f6d74bbb06619205b8/rootfs/'
+                      'mips/rootfs.cpio.gz')
+        initrd_hash = 'bf806e17009360a866bf537f6de66590de349a99'
+        initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
+        initrd_path = self.workdir + "rootfs.cpio"
+        archive.gzip_uncompress(initrd_path_gz, initrd_path)
+
+        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE
+                               + 'console=ttyS0 console=tty '
+                               + 'rdinit=/sbin/init noreboot')
+        console_pattern = 'Boot successful.'
+        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5,
+                    args=('-initrd', initrd_path))
+
+    @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+    def test_mips64el_malta_5KEc_cpio(self):
+        """
+        :avocado: tags=arch:mips64el
+        :avocado: tags=machine:malta
+        :avocado: tags=endian:little
+        :avocado: tags=slowness:high
+        """
+        # Override the timeout, because this kernel includes
+        # an inner loop which is executed with TB recompilings during
+        # replay, making it very slow.
+        kernel_url = ('https://github.com/philmd/qemu-testing-blob/'
+                      'raw/9ad2df38/mips/malta/mips64el/'
+                      'vmlinux-3.19.3.mtoman.20150408')
+        kernel_hash = '00d1d268fb9f7d8beda1de6bebcc46e884d71754'
+        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+        initrd_url = ('https://github.com/groeck/linux-build-test/'
+                      'raw/8584a59e/rootfs/'
+                      'mipsel64/rootfs.mipsel64r1.cpio.gz')
+        initrd_hash = '1dbb8a396e916847325284dbe2151167'
+        initrd_path_gz = self.fetch_asset(initrd_url, algorithm='md5',
+                                          asset_hash=initrd_hash)
+        initrd_path = self.workdir + "rootfs.cpio"
+        archive.gzip_uncompress(initrd_path_gz, initrd_path)
+
+        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE
+                               + 'console=ttyS0 console=tty '
+                               + 'rdinit=/sbin/init noreboot')
+        console_pattern = 'Boot successful.'
+        self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5,
+                    args=('-initrd', initrd_path, '-cpu', '5KEc'))