summaryrefslogtreecommitdiff
path: root/gnu/tests
diff options
context:
space:
mode:
authorAngus Gibson <angus@agibson.me>2026-05-22 14:23:31 +0100
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2026-05-31 08:30:10 +0200
commit1cd22486b8c9a5e933989645c56c811debf8da44 (patch)
tree33722e026440234a7754f3b030e2b3f87b3ced13 /gnu/tests
parentcf95f60011a7407c2089ef6807823a7b287419c2 (diff)
gnu: tests: Add network-manager tests.
* gnu/tests/networking.scm (run-network-manager-test): New variable. (run-network-manager-dnsmasq-test): New variable. Change-Id: I8f957e11ba27ed15fe8d6136b934e0dd8b92a4d6 Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
Diffstat (limited to 'gnu/tests')
-rw-r--r--gnu/tests/networking.scm149
1 files changed, 149 insertions, 0 deletions
diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm
index a8e752ad417..f1d25f2d6fc 100644
--- a/gnu/tests/networking.scm
+++ b/gnu/tests/networking.scm
@@ -37,6 +37,7 @@
37 #:use-module (guix modules) 37 #:use-module (guix modules)
38 #:use-module (gnu packages admin) 38 #:use-module (gnu packages admin)
39 #:use-module (gnu packages bash) 39 #:use-module (gnu packages bash)
40 #:use-module (gnu packages dns)
40 #:use-module (gnu packages linux) 41 #:use-module (gnu packages linux)
41 #:use-module (gnu packages networking) 42 #:use-module (gnu packages networking)
42 #:use-module (gnu packages guile) 43 #:use-module (gnu packages guile)
@@ -45,6 +46,8 @@
45 #:export (%test-static-networking 46 #:export (%test-static-networking
46 %test-static-networking-failure 47 %test-static-networking-failure
47 %test-static-networking-advanced 48 %test-static-networking-advanced
49 %test-network-manager
50 %test-network-manager-dnsmasq
48 %test-inetd 51 %test-inetd
49 %test-openvswitch 52 %test-openvswitch
50 %test-dhcpd 53 %test-dhcpd
@@ -353,6 +356,152 @@ passed an invalid device.")
353 356
354 357
355;;; 358;;;
359;;; NetworkManager.
360;;;
361
362(define (run-network-manager-test vm)
363 (define test
364 (with-imported-modules '((gnu build marionette)
365 (guix build syscalls))
366 #~(begin
367 (use-modules (gnu build marionette)
368 (guix build syscalls)
369 (srfi srfi-64))
370
371 (define marionette
372 (make-marionette
373 '(#$vm "-nic" "user,model=virtio-net-pci")))
374
375 (test-runner-current (system-test-runner #$output))
376 (test-begin "network-manager")
377
378 (test-assert "service is up"
379 (marionette-eval
380 '(begin
381 (use-modules (gnu services herd))
382 (start-service 'NetworkManager))
383 marionette))
384
385 (test-assert "network interfaces"
386 (marionette-eval
387 '(begin
388 (use-modules (guix build syscalls))
389 (network-interface-names))
390 marionette))
391
392 (test-equal "eth0 is up"
393 IFF_UP
394 (marionette-eval
395 '(let* ((sock (socket AF_INET SOCK_STREAM 0))
396 (flags (network-interface-flags sock "eth0")))
397 (logand flags IFF_UP))
398 marionette))
399
400 (test-end))))
401
402 (gexp->derivation "network-manager" test))
403
404(define %test-network-manager
405 (system-test
406 (name "network-manager")
407 (description "Test the 'network-manager' service.")
408 (value
409 (let ((os (marionette-operating-system
410 (simple-operating-system
411 (service network-manager-service-type)
412 (service wpa-supplicant-service-type))
413 #:imported-modules '((gnu services herd)
414 (guix combinators)))))
415 (run-network-manager-test (virtual-machine os))))))
416
417
418(define (run-network-manager-dnsmasq-test vm)
419 (define test
420 (with-imported-modules '((gnu build marionette)
421 (guix build syscalls))
422 #~(begin
423 (use-modules (gnu build marionette)
424 (guix build syscalls)
425 (srfi srfi-64))
426
427 (define marionette
428 (make-marionette
429 '(#$vm "-nic" "user,model=virtio-net-pci")))
430
431 (test-runner-current (system-test-runner #$output))
432 (test-begin "network-manager-dnsmasq")
433
434 (test-assert "service is up"
435 (marionette-eval
436 '(begin
437 (use-modules (gnu services herd))
438 (start-service 'NetworkManager))
439 marionette))
440
441 (test-assert "network interfaces"
442 (marionette-eval
443 '(begin
444 (use-modules (guix build syscalls))
445 (network-interface-names))
446 marionette))
447
448 (test-equal "eth0 is up"
449 IFF_UP
450 (marionette-eval
451 '(let* ((sock (socket AF_INET SOCK_STREAM 0))
452 (flags (network-interface-flags sock "eth0")))
453 (logand flags IFF_UP))
454 marionette))
455
456 (test-assert "dnsmasq is running"
457 (marionette-eval
458 `(zero? (system* ,#$(file-append procps "/bin/pgrep")
459 "--count" "--exact" "dnsmasq"))
460 marionette))
461
462 (test-equal "resolves custom address"
463 "1.2.3.4"
464 (marionette-eval
465 '(begin
466 (use-modules (ice-9 popen)
467 (rnrs io ports))
468
469 (let* ((resolve-cmd "dig @127.0.0.1 example.test +short")
470 (port (open-input-pipe resolve-cmd))
471 (out (get-string-all port)))
472 (close-port port)
473 (string-drop-right out 1))) ;; drop newline
474 marionette))
475
476 (test-end))))
477
478 (gexp->derivation "network-manager-dnsmasq" test))
479
480(define %test-network-manager-dnsmasq
481 (system-test
482 (name "network-manager-dnsmasq")
483 (description "Test the 'network-manager' service using dnsmasq.")
484 (value
485 (let* ((base-os (simple-operating-system
486 (service network-manager-service-type
487 (network-manager-configuration
488 (dns "dnsmasq")
489 (dnsmasq-configuration-files
490 `(("dnsmasq.conf"
491 ,(plain-file "dnsmasq.conf" "address=/example.test/1.2.3.4\n"))))))
492 (service wpa-supplicant-service-type)))
493 (os (marionette-operating-system
494 (operating-system
495 (inherit base-os)
496 (packages
497 (append (list (list isc-bind "utils"))
498 (operating-system-packages base-os))))
499 #:imported-modules '((gnu services herd)
500 (guix combinators)))))
501 (run-network-manager-dnsmasq-test (virtual-machine os))))))
502
503
504;;;
356;;; Inetd. 505;;; Inetd.
357;;; 506;;;
358 507