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))))