summary refs log tree commit diff
path: root/gnu/tests/databases.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2017-09-09 15:31:38 +0100
committerChristopher Baines <mail@cbaines.net>2017-10-08 17:31:49 +0100
commit02bc41c4cedd15c6a76ecd5218f9b5848de8baea (patch)
tree9f214ffd157f079525846c93e50941cd10bf7b4b /gnu/tests/databases.scm
parentb36e06c2b0889f1d0f939465589d36887ff24d33 (diff)
downloadguix-02bc41c4cedd15c6a76ecd5218f9b5848de8baea.tar.gz
tests: databases: Add a simple test for MySQL.
Previously, the activation phase for this service caused some systems using it
to not boot. This test checks that it's possible to boot a system using it,
and at least start the service.

* gnu/tests/databases.scm (%mysql-os, %test-mysql): New variables.
  (run-mysql-test): New procedure.
Diffstat (limited to 'gnu/tests/databases.scm')
-rw-r--r--gnu/tests/databases.scm61
1 files changed, 60 insertions, 1 deletions
diff --git a/gnu/tests/databases.scm b/gnu/tests/databases.scm
index 9e335b27c6..e7097690a0 100644
--- a/gnu/tests/databases.scm
+++ b/gnu/tests/databases.scm
@@ -29,7 +29,8 @@
   #:use-module (guix gexp)
   #:use-module (guix store)
   #:export (%test-memcached
-            %test-mongodb))
+            %test-mongodb
+            %test-mysql))
 
 (define %memcached-os
   (simple-operating-system
@@ -205,3 +206,61 @@
    (name "mongodb")
    (description "Connect to a running MONGODB server.")
    (value (run-mongodb-test))))
+
+
+;;;
+;;; The MySQL service.
+;;;
+
+(define %mysql-os
+  (simple-operating-system
+   (mysql-service)))
+
+(define* (run-mysql-test)
+  "Run tests in %MYSQL-OS."
+  (define os
+    (marionette-operating-system
+     %mysql-os
+     #:imported-modules '((gnu services herd)
+                          (guix combinators))))
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (memory-size 512)))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-11) (srfi srfi-64)
+                       (gnu build marionette))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (mkdir #$output)
+          (chdir #$output)
+
+          (test-begin "mysql")
+
+          (test-assert "service running"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (match (start-service 'mysql)
+                  (#f #f)
+                  (('service response-parts ...)
+                   (match (assq-ref response-parts 'running)
+                     ((pid) (number? pid))))))
+             marionette))
+
+          (test-end)
+          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+  (gexp->derivation "mysql-test" test))
+
+(define %test-mysql
+  (system-test
+   (name "mysql")
+   (description "Start the MySQL service.")
+   (value (run-mysql-test))))