Message ID | 20190222194146.13102-6-crosa@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [PULL,1/7] Acceptance tests: drop usage of ":avocado: enable" | expand |
Hi, On Fri, Feb 22, 2019 at 8:42 PM Cleber Rosa <crosa@redhat.com> wrote: > > From: Caio Carrara <ccarrara@redhat.com> > > This change adds the simplest possible migration test. Beyond the test > purpose itself it's also useful to exercise the multi virtual machines > capabilities from base avocado qemu test class. > > Signed-off-by: Cleber Rosa <crosa@redhat.com> > Signed-off-by: Caio Carrara <ccarrara@redhat.com> > Reviewed-by: Cleber Rosa <crosa@redhat.com> > Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com> > Message-Id: <20190212193855.13223-3-ccarrara@redhat.com> > Signed-off-by: Cleber Rosa <crosa@redhat.com> > --- > tests/acceptance/migration.py | 53 +++++++++++++++++++++++++++++++++++ > 1 file changed, 53 insertions(+) > create mode 100644 tests/acceptance/migration.py > > diff --git a/tests/acceptance/migration.py b/tests/acceptance/migration.py > new file mode 100644 > index 0000000000..6115cf6c24 > --- /dev/null > +++ b/tests/acceptance/migration.py > @@ -0,0 +1,53 @@ > +# Migration test > +# > +# Copyright (c) 2019 Red Hat, Inc. > +# > +# Authors: > +# Cleber Rosa <crosa@redhat.com> > +# Caio Carrara <ccarrara@redhat.com> > +# > +# This work is licensed under the terms of the GNU GPL, version 2 or > +# later. See the COPYING file in the top-level directory. > + > + > +from avocado_qemu import Test > + > +from avocado.utils import network > +from avocado.utils import wait > + > + > +class Migration(Test): > + """ > + :avocado: enable > + """ > + > + timeout = 10 > + > + @staticmethod > + def migration_finished(vm): > + return vm.command('query-migrate')['status'] in ('completed', 'failed') > + > + def _get_free_port(self): > + port = network.find_free_port() > + if port is None: > + self.cancel('Failed to find a free port') > + return port This method doesn't seem to work when running with -j2: 2 tests started with different arch configurations get the same port... Is this a known issue? > + > + > + def test_migration_with_tcp_localhost(self): > + source_vm = self.get_vm() > + dest_uri = 'tcp:localhost:%u' % self._get_free_port() > + dest_vm = self.get_vm('-incoming', dest_uri) > + dest_vm.launch() > + source_vm.launch() > + source_vm.qmp('migrate', uri=dest_uri) > + wait.wait_for( > + self.migration_finished, > + timeout=self.timeout, > + step=0.1, > + args=(source_vm,) > + ) > + self.assertEqual(dest_vm.command('query-migrate')['status'], 'completed') > + self.assertEqual(source_vm.command('query-migrate')['status'], 'completed') > + self.assertEqual(dest_vm.command('query-status')['status'], 'running') > + self.assertEqual(source_vm.command('query-status')['status'], 'postmigrate') > -- > 2.20.1 >
On Tue, Nov 03, 2020 at 11:40:30AM +0100, Philippe Mathieu-Daudé wrote: > Hi, > > On Fri, Feb 22, 2019 at 8:42 PM Cleber Rosa <crosa@redhat.com> wrote: > > > > From: Caio Carrara <ccarrara@redhat.com> > > > > This change adds the simplest possible migration test. Beyond the test > > purpose itself it's also useful to exercise the multi virtual machines > > capabilities from base avocado qemu test class. > > > > Signed-off-by: Cleber Rosa <crosa@redhat.com> > > Signed-off-by: Caio Carrara <ccarrara@redhat.com> > > Reviewed-by: Cleber Rosa <crosa@redhat.com> > > Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com> > > Message-Id: <20190212193855.13223-3-ccarrara@redhat.com> > > Signed-off-by: Cleber Rosa <crosa@redhat.com> > > --- > > tests/acceptance/migration.py | 53 +++++++++++++++++++++++++++++++++++ > > 1 file changed, 53 insertions(+) > > create mode 100644 tests/acceptance/migration.py > > > > diff --git a/tests/acceptance/migration.py b/tests/acceptance/migration.py > > new file mode 100644 > > index 0000000000..6115cf6c24 > > --- /dev/null > > +++ b/tests/acceptance/migration.py > > @@ -0,0 +1,53 @@ > > +# Migration test > > +# > > +# Copyright (c) 2019 Red Hat, Inc. > > +# > > +# Authors: > > +# Cleber Rosa <crosa@redhat.com> > > +# Caio Carrara <ccarrara@redhat.com> > > +# > > +# This work is licensed under the terms of the GNU GPL, version 2 or > > +# later. See the COPYING file in the top-level directory. > > + > > + > > +from avocado_qemu import Test > > + > > +from avocado.utils import network > > +from avocado.utils import wait > > + > > + > > +class Migration(Test): > > + """ > > + :avocado: enable > > + """ > > + > > + timeout = 10 > > + > > + @staticmethod > > + def migration_finished(vm): > > + return vm.command('query-migrate')['status'] in ('completed', 'failed') > > + > > + def _get_free_port(self): > > + port = network.find_free_port() > > + if port is None: > > + self.cancel('Failed to find a free port') > > + return port > > This method doesn't seem to work when running with -j2: 2 tests started > with different arch configurations get the same port... Is this a known issue? > It's not bullet proof, but it seems to be quite safe... This is what I've tried: $ ./tests/venv/bin/avocado run --test-runner=nrunner --nrunner-max-parallel-tasks=10 tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost{,,,,,,,,,,,,,,,,,,,} JOB ID : 377957f4a16fbc2c6a6f6d9ae225c61af86bd570 JOB LOG : /home/cleber/avocado/job-results/job-2020-11-03T10.24-377957f/job.log (02/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (06/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (01/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (05/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (03/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (10/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (07/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (09/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (04/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (08/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED (02/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.46 s) (06/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.60 s) (01/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.51 s) (03/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.49 s) (05/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.52 s) (10/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.51 s) (07/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.52 s) (09/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.53 s) (04/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.49 s) (08/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.56 s) ... RESULTS : PASS 20 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0 JOB HTML : /home/cleber/avocado/job-results/job-2020-11-03T10.24-377957f/results.html JOB TIME : 3.82 s If this is about the issue you posted on IRC, it's about s390x and migration instead: 2020-11-03 10:06:33,124 qmp L0255 DEBUG| >>> {'execute': 'query-migrate'} 2020-11-03 10:06:33,124 qmp L0148 DEBUG| <<< {'timestamp': {'seconds': 1604415993, 'microseconds': 124382}, 'event': 'GUEST_PANICKED', 'data': {'action': 'pause', 'info': {'core': 0, 'psw-addr': 0, 'reason': 'disabled-wait', 'psw-mask': I ran across this on Friday, and will properly report it. Let me know if that helps, - Cleber.
On 11/3/20 4:27 PM, Cleber Rosa wrote: > On Tue, Nov 03, 2020 at 11:40:30AM +0100, Philippe Mathieu-Daudé wrote: >> Hi, >> >> On Fri, Feb 22, 2019 at 8:42 PM Cleber Rosa <crosa@redhat.com> wrote: >>> >>> From: Caio Carrara <ccarrara@redhat.com> >>> >>> This change adds the simplest possible migration test. Beyond the test >>> purpose itself it's also useful to exercise the multi virtual machines >>> capabilities from base avocado qemu test class. >>> >>> Signed-off-by: Cleber Rosa <crosa@redhat.com> >>> Signed-off-by: Caio Carrara <ccarrara@redhat.com> >>> Reviewed-by: Cleber Rosa <crosa@redhat.com> >>> Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com> >>> Message-Id: <20190212193855.13223-3-ccarrara@redhat.com> >>> Signed-off-by: Cleber Rosa <crosa@redhat.com> >>> --- >>> tests/acceptance/migration.py | 53 +++++++++++++++++++++++++++++++++++ >>> 1 file changed, 53 insertions(+) >>> create mode 100644 tests/acceptance/migration.py >>> >>> diff --git a/tests/acceptance/migration.py b/tests/acceptance/migration.py >>> new file mode 100644 >>> index 0000000000..6115cf6c24 >>> --- /dev/null >>> +++ b/tests/acceptance/migration.py >>> @@ -0,0 +1,53 @@ >>> +# Migration test >>> +# >>> +# Copyright (c) 2019 Red Hat, Inc. >>> +# >>> +# Authors: >>> +# Cleber Rosa <crosa@redhat.com> >>> +# Caio Carrara <ccarrara@redhat.com> >>> +# >>> +# This work is licensed under the terms of the GNU GPL, version 2 or >>> +# later. See the COPYING file in the top-level directory. >>> + >>> + >>> +from avocado_qemu import Test >>> + >>> +from avocado.utils import network >>> +from avocado.utils import wait >>> + >>> + >>> +class Migration(Test): >>> + """ >>> + :avocado: enable >>> + """ >>> + >>> + timeout = 10 >>> + >>> + @staticmethod >>> + def migration_finished(vm): >>> + return vm.command('query-migrate')['status'] in ('completed', 'failed') >>> + >>> + def _get_free_port(self): >>> + port = network.find_free_port() >>> + if port is None: >>> + self.cancel('Failed to find a free port') >>> + return port >> >> This method doesn't seem to work when running with -j2: 2 tests started >> with different arch configurations get the same port... Is this a known issue? >> > > It's not bullet proof, but it seems to be quite safe... This is what I've tried: > > $ ./tests/venv/bin/avocado run --test-runner=nrunner --nrunner-max-parallel-tasks=10 tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost{,,,,,,,,,,,,,,,,,,,} > JOB ID : 377957f4a16fbc2c6a6f6d9ae225c61af86bd570 > JOB LOG : /home/cleber/avocado/job-results/job-2020-11-03T10.24-377957f/job.log > (02/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (06/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (01/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (05/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (03/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (10/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (07/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (09/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (04/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (08/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: STARTED > (02/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.46 s) > (06/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.60 s) > (01/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.51 s) > (03/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.49 s) > (05/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.52 s) > (10/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.51 s) > (07/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.52 s) > (09/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.53 s) > (04/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.49 s) > (08/20) tests/acceptance/migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.56 s) > ... > RESULTS : PASS 20 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0 > JOB HTML : /home/cleber/avocado/job-results/job-2020-11-03T10.24-377957f/results.html > JOB TIME : 3.82 s Thanks for the testing. > If this is about the issue you posted on IRC, it's about s390x and migration instead: > > 2020-11-03 10:06:33,124 qmp L0255 DEBUG| >>> {'execute': 'query-migrate'} > 2020-11-03 10:06:33,124 qmp L0148 DEBUG| <<< {'timestamp': {'seconds': 1604415993, 'microseconds': 124382}, 'event': 'GUEST_PANICKED', 'data': {'action': 'pause', 'info': {'core': 0, 'psw-addr': 0, 'reason': 'disabled-wait', 'psw-mask': > > I ran across this on Friday, and will properly report it. Ah I missed that *sigh* thanks. > > Let me know if that helps, > - Cleber. >
diff --git a/tests/acceptance/migration.py b/tests/acceptance/migration.py new file mode 100644 index 0000000000..6115cf6c24 --- /dev/null +++ b/tests/acceptance/migration.py @@ -0,0 +1,53 @@ +# Migration test +# +# Copyright (c) 2019 Red Hat, Inc. +# +# Authors: +# Cleber Rosa <crosa@redhat.com> +# Caio Carrara <ccarrara@redhat.com> +# +# This work is licensed under the terms of the GNU GPL, version 2 or +# later. See the COPYING file in the top-level directory. + + +from avocado_qemu import Test + +from avocado.utils import network +from avocado.utils import wait + + +class Migration(Test): + """ + :avocado: enable + """ + + timeout = 10 + + @staticmethod + def migration_finished(vm): + return vm.command('query-migrate')['status'] in ('completed', 'failed') + + def _get_free_port(self): + port = network.find_free_port() + if port is None: + self.cancel('Failed to find a free port') + return port + + + def test_migration_with_tcp_localhost(self): + source_vm = self.get_vm() + dest_uri = 'tcp:localhost:%u' % self._get_free_port() + dest_vm = self.get_vm('-incoming', dest_uri) + dest_vm.launch() + source_vm.launch() + source_vm.qmp('migrate', uri=dest_uri) + wait.wait_for( + self.migration_finished, + timeout=self.timeout, + step=0.1, + args=(source_vm,) + ) + self.assertEqual(dest_vm.command('query-migrate')['status'], 'completed') + self.assertEqual(source_vm.command('query-migrate')['status'], 'completed') + self.assertEqual(dest_vm.command('query-status')['status'], 'running') + self.assertEqual(source_vm.command('query-status')['status'], 'postmigrate')