Skip to content

Commit

Permalink
tests/avocado: Pass parameters to migration test
Browse files Browse the repository at this point in the history
The migration tests are currently broken for an aarch64 host because
the tests pass no 'machine' and 'cpu' options on the QEMU command
line.

Add a separate class to each architecture so that we can specify
'machine' and 'cpu' options instead of relying on defaults.

Add a skip decorator to keep the current behavior of only running
migration tests when the qemu target matches the host architecture.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Message-id: 20230426180013.14814-10-farosas@suse.de
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  • Loading branch information
Fabiano Rosas authored and pm215 committed May 2, 2023
1 parent 0c1ae3f commit 43dc139
Showing 1 changed file with 78 additions and 5 deletions.
83 changes: 78 additions & 5 deletions tests/avocado/migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@


import tempfile
import os

from avocado_qemu import QemuSystemTest
from avocado import skipUnless

Expand All @@ -19,7 +21,7 @@
from avocado.utils.path import find_command


class Migration(QemuSystemTest):
class MigrationTest(QemuSystemTest):
"""
:avocado: tags=migration
"""
Expand Down Expand Up @@ -62,20 +64,91 @@ def _get_free_port(self):
self.cancel('Failed to find a free port')
return port


def test_migration_with_tcp_localhost(self):
def migration_with_tcp_localhost(self):
dest_uri = 'tcp:localhost:%u' % self._get_free_port()
self.do_migrate(dest_uri)

def test_migration_with_unix(self):
def migration_with_unix(self):
with tempfile.TemporaryDirectory(prefix='socket_') as socket_path:
dest_uri = 'unix:%s/qemu-test.sock' % socket_path
self.do_migrate(dest_uri)

@skipUnless(find_command('nc', default=False), "'nc' command not found")
def test_migration_with_exec(self):
def migration_with_exec(self):
"""The test works for both netcat-traditional and netcat-openbsd packages."""
free_port = self._get_free_port()
dest_uri = 'exec:nc -l localhost %u' % free_port
src_uri = 'exec:nc localhost %u' % free_port
self.do_migrate(dest_uri, src_uri)


@skipUnless('aarch64' in os.uname()[4], "host != target")
class Aarch64(MigrationTest):
"""
:avocado: tags=arch:aarch64
:avocado: tags=machine:virt
:avocado: tags=cpu:max
"""

def test_migration_with_tcp_localhost(self):
self.migration_with_tcp_localhost()

def test_migration_with_unix(self):
self.migration_with_unix()

def test_migration_with_exec(self):
self.migration_with_exec()


@skipUnless('x86_64' in os.uname()[4], "host != target")
class X86_64(MigrationTest):
"""
:avocado: tags=arch:x86_64
:avocado: tags=machine:pc
:avocado: tags=cpu:qemu64
"""

def test_migration_with_tcp_localhost(self):
self.migration_with_tcp_localhost()

def test_migration_with_unix(self):
self.migration_with_unix()

def test_migration_with_exec(self):
self.migration_with_exec()


@skipUnless('ppc64le' in os.uname()[4], "host != target")
class PPC64(MigrationTest):
"""
:avocado: tags=arch:ppc64
:avocado: tags=machine:pseries
:avocado: tags=cpu:power9_v2.0
"""

def test_migration_with_tcp_localhost(self):
self.migration_with_tcp_localhost()

def test_migration_with_unix(self):
self.migration_with_unix()

def test_migration_with_exec(self):
self.migration_with_exec()


@skipUnless('s390x' in os.uname()[4], "host != target")
class S390X(MigrationTest):
"""
:avocado: tags=arch:s390x
:avocado: tags=machine:s390-ccw-virtio
:avocado: tags=cpu:qemu
"""

def test_migration_with_tcp_localhost(self):
self.migration_with_tcp_localhost()

def test_migration_with_unix(self):
self.migration_with_unix()

def test_migration_with_exec(self):
self.migration_with_exec()

0 comments on commit 43dc139

Please sign in to comment.