diff mbox

tests/migration: Skip tests for ppc tcg

Message ID 20180629174305.42849-1-dgilbert@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Dr. David Alan Gilbert June 29, 2018, 5:43 p.m. UTC
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

PPC tcg seems to be failing migration tests quite regularly;
we believe this is TCG bugs in dirty bit updating; it's
not clear why PPC fails more but lets skip for the moment.

$ ./tests/migration-test
/ppc64/migration/deprecated: OK
/ppc64/migration/bad_dest: SKIP
/ppc64/migration/postcopy/unix: SKIP
/ppc64/migration/precopy/unix: SKIP

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 tests/migration-test.c | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

Comments

Peter Maydell June 30, 2018, 4:28 p.m. UTC | #1
On 29 June 2018 at 18:43, Dr. David Alan Gilbert (git)
<dgilbert@redhat.com> wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>
> PPC tcg seems to be failing migration tests quite regularly;
> we believe this is TCG bugs in dirty bit updating; it's
> not clear why PPC fails more but lets skip for the moment.
>
> $ ./tests/migration-test
> /ppc64/migration/deprecated: OK
> /ppc64/migration/bad_dest: SKIP
> /ppc64/migration/postcopy/unix: SKIP
> /ppc64/migration/precopy/unix: SKIP

This patch seems to make the test fail in some setups:

TEST: tests/migration-test... (pid=58969)
  /ppc64/migration/deprecated:                                         OK
  /ppc64/migration/bad_dest:                                           FAIL
GTester: last random seed: R02S608df80fbcf1f18882138d397082bb59
  /ppc64/migration/postcopy/unix:                                      FAIL
GTester: last random seed: R02S608df80fbcf1f18882138d397082bb59
  /ppc64/migration/precopy/unix:                                       FAIL
GTester: last random seed: R02S608df80fbcf1f18882138d397082bb59
PASS: tests/migration-test

(and eventually make exits with an error).

Failed for me on ppc64, s390x, x86-64, aarch32.
I don't think any of my build systems printed "SKIP" for
these tests -- they either FAIL or just don't print
anything.

thanks
-- PMM
Peter Maydell July 5, 2018, 1:48 p.m. UTC | #2
On 30 June 2018 at 17:28, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 29 June 2018 at 18:43, Dr. David Alan Gilbert (git)
> <dgilbert@redhat.com> wrote:
>> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>>
>> PPC tcg seems to be failing migration tests quite regularly;
>> we believe this is TCG bugs in dirty bit updating; it's
>> not clear why PPC fails more but lets skip for the moment.
>>
>> $ ./tests/migration-test
>> /ppc64/migration/deprecated: OK
>> /ppc64/migration/bad_dest: SKIP
>> /ppc64/migration/postcopy/unix: SKIP
>> /ppc64/migration/precopy/unix: SKIP
>
> This patch seems to make the test fail in some setups:

Specifically, it's the 'gtester' command in 'make check'
that makes the difference:

e104462:xenial:ppc$ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64
tests/migration-test
/ppc64/migration/deprecated: OK
/ppc64/migration/bad_dest: SKIP
/ppc64/migration/postcopy/unix: SKIP
/ppc64/migration/precopy/unix: SKIP
e104462:xenial:ppc$ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64
gtester -k --verbose -m=quick tests/migration-test
TEST: tests/migration-test... (pid=23304)
  /ppc64/migration/deprecated:                                         OK
  /ppc64/migration/bad_dest:                                           FAIL
GTester: last random seed: R02Sa45f28859314d31ea4e89aeee4851d87
  /ppc64/migration/postcopy/unix:                                      FAIL
GTester: last random seed: R02Sa45f28859314d31ea4e89aeee4851d87
  /ppc64/migration/precopy/unix:                                       FAIL
GTester: last random seed: R02Sa45f28859314d31ea4e89aeee4851d87
PASS: tests/migration-test

This seems to be a bug in gtester:
https://bugzilla.gnome.org/show_bug.cgi?id=790934

which I guess we need to work around -- the easy approach would be to just
call this a pass rather than a skip, I suppose.

I also note that in that bug report the glib folks say
"don't use gtester, it's not maintained", and recommend that
we switch to something else (a 'TAP harness', whatever that is)...

thanks
-- PMM
Dr. David Alan Gilbert July 5, 2018, 2:17 p.m. UTC | #3
* Peter Maydell (peter.maydell@linaro.org) wrote:
> On 30 June 2018 at 17:28, Peter Maydell <peter.maydell@linaro.org> wrote:
> > On 29 June 2018 at 18:43, Dr. David Alan Gilbert (git)
> > <dgilbert@redhat.com> wrote:
> >> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> >>
> >> PPC tcg seems to be failing migration tests quite regularly;
> >> we believe this is TCG bugs in dirty bit updating; it's
> >> not clear why PPC fails more but lets skip for the moment.
> >>
> >> $ ./tests/migration-test
> >> /ppc64/migration/deprecated: OK
> >> /ppc64/migration/bad_dest: SKIP
> >> /ppc64/migration/postcopy/unix: SKIP
> >> /ppc64/migration/precopy/unix: SKIP
> >
> > This patch seems to make the test fail in some setups:
> 
> Specifically, it's the 'gtester' command in 'make check'
> that makes the difference:
> 
> e104462:xenial:ppc$ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64
> tests/migration-test
> /ppc64/migration/deprecated: OK
> /ppc64/migration/bad_dest: SKIP
> /ppc64/migration/postcopy/unix: SKIP
> /ppc64/migration/precopy/unix: SKIP
> e104462:xenial:ppc$ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64
> gtester -k --verbose -m=quick tests/migration-test
> TEST: tests/migration-test... (pid=23304)
>   /ppc64/migration/deprecated:                                         OK
>   /ppc64/migration/bad_dest:                                           FAIL
> GTester: last random seed: R02Sa45f28859314d31ea4e89aeee4851d87
>   /ppc64/migration/postcopy/unix:                                      FAIL
> GTester: last random seed: R02Sa45f28859314d31ea4e89aeee4851d87
>   /ppc64/migration/precopy/unix:                                       FAIL
> GTester: last random seed: R02Sa45f28859314d31ea4e89aeee4851d87
> PASS: tests/migration-test
> 
> This seems to be a bug in gtester:
> https://bugzilla.gnome.org/show_bug.cgi?id=790934

Bah, and I liked that I was using a nice new gtk feature.

> which I guess we need to work around -- the easy approach would be to just
> call this a pass rather than a skip, I suppose.

Yeh, I'll rework it.  I'll include a printf saying we skipped it though
just to remove any false feeling of warmth and reassurance of an OK.

> I also note that in that bug report the glib folks say
> "don't use gtester, it's not maintained", and recommend that
> we switch to something else (a 'TAP harness', whatever that is)...

https://testanything.org/ I think, but I don't know anything about it.

Dave

> 
> thanks
> -- PMM
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff mbox

Patch

diff --git a/tests/migration-test.c b/tests/migration-test.c
index 3a85446f95..d6da2dbd5a 100644
--- a/tests/migration-test.c
+++ b/tests/migration-test.c
@@ -360,7 +360,7 @@  static void migrate_start_postcopy(QTestState *who)
     qobject_unref(rsp);
 }
 
-static void test_migrate_start(QTestState **from, QTestState **to,
+static int test_migrate_start(QTestState **from, QTestState **to,
                                const char *uri, bool hide_stderr)
 {
     gchar *cmd_src, *cmd_dst;
@@ -385,9 +385,13 @@  static void test_migrate_start(QTestState **from, QTestState **to,
                                   accel, tmpfs, bootpath, uri);
     } else if (strcmp(arch, "ppc64") == 0) {
 
-        /* On ppc64, the test only works with kvm-hv, but not with kvm-pr */
+        /* On ppc64, the test only works with kvm-hv, but not with kvm-pr
+         * and TCG is touchy due to race conditions on dirty bits
+         * (especially on PPC for some reason)
+         */
         if (access("/sys/module/kvm_hv", F_OK)) {
-            accel = "tcg";
+            g_test_skip("kvm_hv not available");
+            return -1;
         }
         cmd_src = g_strdup_printf("-machine accel=%s -m 256M"
                                   " -name source,debug-threads=on"
@@ -424,6 +428,7 @@  static void test_migrate_start(QTestState **from, QTestState **to,
 
     *to = qtest_init(cmd_dst);
     g_free(cmd_dst);
+    return 0;
 }
 
 static void test_migrate_end(QTestState *from, QTestState *to, bool test_dest)
@@ -510,7 +515,9 @@  static void test_postcopy(void)
     char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
     QTestState *from, *to;
 
-    test_migrate_start(&from, &to, uri, false);
+    if (test_migrate_start(&from, &to, uri, false)) {
+        return;
+    }
 
     migrate_set_capability(from, "postcopy-ram", "true");
     migrate_set_capability(to, "postcopy-ram", "true");
@@ -556,7 +563,9 @@  static void test_baddest(void)
     const char *status;
     bool failed;
 
-    test_migrate_start(&from, &to, "tcp:0:0", true);
+    if (test_migrate_start(&from, &to, "tcp:0:0", true)) {
+        return;
+    }
     migrate(from, "tcp:0:0");
     do {
         rsp = wait_command(from, "{ 'execute': 'query-migrate' }");
@@ -585,7 +594,9 @@  static void test_precopy_unix(void)
     char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
     QTestState *from, *to;
 
-    test_migrate_start(&from, &to, uri, false);
+    if (test_migrate_start(&from, &to, uri, false)) {
+        return;
+    }
 
     /* We want to pick a speed slow enough that the test completes
      * quickly, but that it doesn't complete precopy even on a slow