This is an automated email from the git hooks/post-receive script.

guix_mirror_bot pushed a commit to branch master
in repository guix.

The following commit(s) were added to refs/heads/master by this push:
     new 45658a6730 services: mosquitto: Add test suite.
45658a6730 is described below

commit 45658a6730bac5d12da3a3ed1861c3438ef14da2
Author: Evgeny Pisemsky <[email protected]>
AuthorDate: Sun Jul 27 18:45:03 2025 +0300

    services: mosquitto: Add test suite.
    
    * gnu/tests/messaging.scm (%test-mosquitto): New variable.
    
    Change-Id: Ia84291576b9417ce678df3e0ed18caa6ce27b759
    Signed-off-by: Danny Milosavljevic <[email protected]>
---
 gnu/tests/messaging.scm | 79 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 78 insertions(+), 1 deletion(-)

diff --git a/gnu/tests/messaging.scm b/gnu/tests/messaging.scm
index f1f4247c58..0601ff6f69 100644
--- a/gnu/tests/messaging.scm
+++ b/gnu/tests/messaging.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2017-2018, 2021-2022 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2018 Efraim Flashner <[email protected]>
 ;;; Copyright © 2025 Maxim Cournoyer <[email protected]>
+;;; Copyright © 2025 Evgeny Pisemsky <[email protected]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,7 +43,8 @@
             %test-bitlbee
             %test-ngircd
             %test-pounce
-            %test-quassel))
+            %test-quassel
+            %test-mosquitto))
 
 (define (run-xmpp-test name xmpp-service pid-file create-account)
   "Run a test of an OS running XMPP-SERVICE, which writes its PID to PID-FILE."
@@ -592,3 +594,78 @@ OPENSSL:localhost:7000,verify=0 &")
    (name "quassel")
    (description "Connect to a quassel IRC server.")
    (value (run-quassel-test))))
+
+
+;;;
+;;; Mosquitto.
+;;;
+
+(define (run-mosquitto-test)
+  (define os
+    (marionette-operating-system
+     (simple-operating-system (service dhcpcd-service-type)
+                              (service mosquitto-service-type))
+     #:imported-modules (source-module-closure
+                         '((gnu services herd)))))
+
+  (define vm
+    (virtual-machine
+     (operating-system os)))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-64)
+                       (gnu build marionette))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (test-runner-current (system-test-runner #$output))
+          (test-begin "mosquitto")
+
+          (test-assert "service runs"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (wait-for-service 'mosquitto))
+             marionette))
+
+          (test-assert "service listens on TCP port 1883"
+            (wait-for-tcp-port 1883 marionette))
+
+          (test-equal "service receives a message"
+            0
+            (marionette-eval
+             '(system* #$(file-append mosquitto "/bin/mosquitto_pub")
+                       "-t" "test-topic"
+                       "-m" "Hello, mosquitto!"
+                       "-r")
+             marionette))
+
+          (test-equal "service returns a message"
+            "Hello, mosquitto!"
+            (marionette-eval
+             '(begin
+                (use-modules (ice-9 popen)
+                             (ice-9 rdelim))
+                (let* ((port (open-pipe* OPEN_READ
+                                         #$(file-append
+                                            mosquitto
+                                            "/bin/mosquitto_sub")
+                                         "-t" "test-topic"
+                                         "-C" "1"))
+                       (msg (read-line port)))
+                  (close-pipe port)
+                  msg))
+             marionette))
+
+          (test-end))))
+
+  (gexp->derivation "mosquitto-test" test))
+
+(define %test-mosquitto
+  (system-test
+   (name "mosquitto")
+   (description "Test a running Mosquitto MQTT broker.")
+   (value (run-mosquitto-test))))

Reply via email to