Subject: [bug#32221] [PATCH 2/5] gnu: mariadb: Run the full test suite.

From: Marius Bakke <[email-masked]>
Date: Fri, 20 Jul 2018 13:38:34 +0200

* gnu/packages/databases.scm (mariadb)[arguments]: Override 'check' phase.
Add phase 'adjust-tests'.  Disable one more plugin.
[properties]: New field.
---
 gnu/packages/databases.scm | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index c27381ac2..9e4adc340 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -665,6 +665,29 @@ Language.")
          "-DINSTALL_SHAREDIR=share/mysql")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'adjust-tests
+           (lambda _
+             (let ((disabled-tests
+                    '(;; These fail because root@hostname == root@localhost in
+                      ;; the build environment, causing a user count mismatch.
+                      ;; See <https://jira.mariadb.org/browse/MDEV-7761>.
+                      "main.join_cache"
+                      "main.explain_non_select"
+                      "roles.acl_statistics"))
+
+                   ;; This file contains a list of known-flaky tests for this
+                   ;; release.  Append our own list.
+                   (unstable-tests (open-file "mysql-test/unstable-tests" "a")))
+               (for-each (lambda (test)
+                           (format unstable-tests "~a : ~a\n"
+                                   test "Disabled in Guix"))
+                         disabled-tests)
+               (close-port unstable-tests)
+
+               (substitute* "mysql-test/mysql-test-run.pl"
+                 (("/bin/ls") (which "ls"))
+                 (("/bin/sh") (which "sh")))
+               #t)))
          (add-before 'configure 'disable-plugins
            (lambda _
              (let ((disable-plugin (lambda (name)
@@ -675,7 +698,9 @@ Language.")
                                          (format port "\n")))))
                    (disabled-plugins '(;; FIXME: On armhf-linux, this plugin
                                        ;; triggers a GCC ICE.  Disable for now.
-                                       "semisync")))
+                                       "semisync"
+                                       ;; XXX: Causes a test failure.
+                                       "disks")))
                (for-each disable-plugin disabled-plugins)
                #t)))
          (add-before
@@ -683,6 +708,11 @@ Language.")
           (lambda _
             (setenv "CONFIG_SHELL" (which "sh"))
             #t))
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "mysql-test"
+               (invoke "./mtr" "--parallel" (number->string (parallel-job-count))
+                       "--verbose" "--skip-test-list=unstable-tests"))))
          (add-after
           'install 'post-install
           (lambda* (#:key outputs #:allow-other-keys)
@@ -708,6 +738,9 @@ Language.")
        ("openssl" ,openssl)
        ("pcre" ,pcre)
        ("zlib" ,zlib)))
+    ;; The test suite is very resource intensive and can take more than three
+    ;; hours on a x86_64 system.  Give slow and busy machines some leeway.
+    (properties '((timeout . 43200)))        ;12 hours
     (home-page "https://mariadb.org/")
     (synopsis "SQL database server")
     (description
-- 
2.18.0