diff options
| author | Angus Gibson <angus@agibson.me> | 2026-05-22 14:23:31 +0100 |
|---|---|---|
| committer | Liliana Marie Prikler <liliana.prikler@gmail.com> | 2026-05-31 08:30:10 +0200 |
| commit | 1cd22486b8c9a5e933989645c56c811debf8da44 (patch) | |
| tree | 33722e026440234a7754f3b030e2b3f87b3ced13 /gnu/tests | |
| parent | cf95f60011a7407c2089ef6807823a7b287419c2 (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.scm | 149 |
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 | ||
