aboutsummaryrefslogtreecommitdiff
path: root/tests/networking.scm
blob: f2421370d26ae09750b673dfb81d40bec3402596 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (tests networking)
  #:use-module (ice-9 regex)
  #:use-module (gnu services networking)
  #:use-module (srfi srfi-64))

;;; Tests for the (gnu services networking) module.

(test-begin "networking")


;;;
;;; NTP.
;;;

(define ntp-server->string (@@ (gnu services networking) ntp-server->string))

(define %ntp-server-sample
  (ntp-server
   (type 'server)
   (address "some.ntp.server.org")
   ;; Using either strings or symbols for option names is accepted.
   (options `("iburst" (version 3) (maxpoll 16) prefer))))

(test-equal "ntp-server->string"
  "server some.ntp.server.org iburst version 3 maxpoll 16 prefer"
  (ntp-server->string %ntp-server-sample))

(test-equal "ntp configuration servers deprecated form"
  (ntp-configuration-servers
   (ntp-configuration
    (servers (list "example.pool.ntp.org"))))
  (ntp-configuration-servers
   (ntp-configuration
    (servers (list (ntp-server
                    (type 'server)
                    (address "example.pool.ntp.org")
                    (options '())))))))


;;;
;;; OpenNTPD
;;;

(define openntpd-configuration->string (@@ (gnu services networking)
                                           openntpd-configuration->string))

(define %openntpd-conf-sample
  (openntpd-configuration
   (server '("0.guix.pool.ntp.org" "1.guix.pool.ntp.org"))
   (listen-on '("127.0.0.1" "::1"))
   (sensor '("udcf0 correction 70000"))
   (constraint-from '("www.gnu.org"))
   (constraints-from '("https://www.google.com/"))))

(test-assert "openntpd configuration generation sanity check"

  (begin
    (define (string-match/newline pattern text)
      (regexp-exec (make-regexp pattern regexp/newline) text))

    (define (match-count pattern text)
      (fold-matches (make-regexp pattern regexp/newline) text 0
                    (lambda (match count)
                      (1+ count))))

    (let ((config (openntpd-configuration->string %openntpd-conf-sample)))
      (if (not
           (and (string-match/newline "^listen on 127.0.0.1$" config)
                (string-match/newline "^listen on ::1$" config)
                (string-match/newline "^sensor udcf0 correction 70000$" config)
                (string-match/newline "^constraint from www.gnu.org$" config)
                (string-match/newline "^server 0.guix.pool.ntp.org$" config)
                (string-match/newline
                 "^constraints from \"https://www.google.com/\"$"
                 config)

                ;; Check for issue #3731 (see:
                ;; http://debbugs.gnu.org/cgi/bugreport.cgi?bug=37318).
                (= (match-count "^listen on " config) 2)
                (= (match-count "^sensor " config) 1)
                (= (match-count "^constraint from " config) 1)
                (= (match-count "^server " config) 2)
                (= (match-count "^constraints from " config) 1)))
          (begin
            (format #t "The configuration below failed \
the sanity check:\n~a~%" config)
            #f)
          #t))))

(test-equal "openntpd generated config string ends with a newline"
  "\n"
  (let ((config (openntpd-configuration->string %openntpd-conf-sample)))
    (string-take-right config 1)))

(test-end "networking")
8:09 +0100'>2019-06-10services: guix-publish: Configure log rotation....* gnu/services/base.scm (%guix-publish-log-rotations): New variable. (guix-publish-service-type): Extend the rottlog-service-type. Christopher Baines 2019-06-10services: guix-publish: Log to a file....This makes it easier to read the output, as it's recorded in a file. * gnu/services/base.scm (guix-publish-shepherd-service): Add #:log-file to make-forkexec-constructor. Christopher Baines 2019-06-03services: guix-publish: Allow for multi-compression....This is a followup to b8fa86adfc01205f1d942af8cb57515eb3726c52. * guix/deprecation.scm (warn-about-deprecation): Make public. * gnu/services/base.scm (<guix-publish-configuration>)[compression]: New field. [compression-level]: Default to #f. Add '%' to getter name. (guix-publish-configuration-compression-level): Define as deprecated. (default-compression): New procedure. (guix-publish-shepherd-service)[config->compression-options]: New procedure. Use 'match-record' instead of 'match'. * doc/guix.texi (Base Services): Remove 'compression-level' and document 'compression'. Ludovic Courtès 2019-05-15tests: Skip unreliable "herd invalidate nscd" test....* gnu/tests/base.scm (run-basic-test)["nscd invalidate action, wrong table"]: Skip unconditionally. Ludovic Courtès 2019-05-09services: Log-in services now require "pam_loginuid"....Fixes <https://bugs.gnu.org/35553>. Reported by Bruno Haible <bruno@clisp.org>. * gnu/services/base.scm (login-pam-service): Pass #:login-uid? #t to 'unix-pam-service'. * gnu/services/ssh.scm (lsh-pam-services, openssh-pam-services): Likewise. * gnu/services/xorg.scm (slim-pam-service): Likewise. (gdm-pam-service): Likewise for "gdm-autologin" and "gdm-password". * gnu/tests/base.scm (run-basic-test)["getlogin on tty1"]: New test. * gnu/tests/ssh.scm (run-ssh-test): Add #:test-getlogin? parameter. ["getlogin"]: New test. (%test-dropbear): Pass #:test-getlogin? #f. Ludovic Courtès 2019-04-27services: file-system: Filter what goes to /etc/fstab....Fixes a longstanding issue whereby, due to our long fstab that included pseudo file systems like cgroup mounts, graphical file managers would display all of these. Initially reported at <https://lists.gnu.org/archive/html/help-guix/2017-11/msg00084.html>. * gnu/services/base.scm (file-system-fstab-entries): New procedure. (file-system-service-type): Use it to extend FSTAB-SERVICE-TYPE. Ludovic Courtès 2019-04-05services: console-keymap: Deprecate....* gnu/services/base.scm (console-keymap-service): Mark as deprecated. * doc/guix.texi (Base Services): Remove its documentation. Ludovic Courtès 2019-04-04gexp: Remove workarounds for <https://bugs.gnu.org/15602>....* gnu/services/base.scm (hydra-key-authorization)[aaa]: Remove. [default-acl]: Don't import it. * guix/scripts/pack.scm (store-database)[build]: Don't import (gnu build install). Ludovic Courtès 2019-03-13Remove traces of "GuixSD"....* gnu/bootloader/extlinux.scm (extlinux-configuration-file): Remove mentions of "GuixSD". * gnu/bootloader/grub.scm (install-grub-efi): Likewise. * gnu/build/vm.scm (make-iso9660-image): Change default #:volume-id to "Guix_image". (initialize-hard-disk): Search for the "Guix_image" label. * gnu/ci.scm (system-test-jobs, tarball-jobs): Remove "GuixSD". * gnu/installer/newt/welcome.scm (run-welcome-page): Likewise. * gnu/packages/audio.scm (supercollider)[description]: Likewise. * gnu/packages/curl.scm (curl): Likewise. * gnu/packages/emacs.scm (emacs): Likewise. * gnu/packages/gnome.scm (network-manager): Likewise. * gnu/packages/julia.scm (julia): Likewise. * gnu/packages/linux.scm (alsa-plugins): Likewise. (powertop, wireless-regdb): Likewise. * gnu/packages/package-management.scm (guix): Likewise. * gnu/packages/polkit.scm (polkit): Likewise. * gnu/packages/tex.scm (texlive-bin): Likewise. * gnu/services/base.scm (file-systems->fstab): Likewise. * gnu/services/cups.scm (%cups-activation): Likewise. * gnu/services/mail.scm (%dovecot-activation): Likewise. * gnu/services/messaging.scm (prosody-configuration)[log]: Likewise. * gnu/system/examples/vm-image.tmpl (vm-image-motd): Likewise. * gnu/system/install.scm (installation-os)[file-systems]: Change root file system label to "Guix_image". * gnu/system/mapped-devices.scm (check-device-initrd-modules): Remove "GuixSD". * gnu/system/vm.scm (system-docker-image): Likewise. (system-disk-image)[root-label]: Change to "Guix_image". * gnu/tests/install.scm (run-install): Remove "GuixSD". * guix/modules.scm (guix-module-name?): Likewise. * nix/libstore/optimise-store.cc: Likewise. Ludovic Courtès 2019-03-10services: guix: Pre-compute the default ACL....This makes the first boot slightly faster. * gnu/services/base.scm (not-config?): New procedure. (hydra-key-authorization): Rewrite to pre-compute the default ACL, and pre-compute it using (guix pki) directly. Ludovic Courtès 2019-03-10services: guix: Allocate build user UIDs in the system range....Until now we were allocating the UIDs of build users above 30000, which is in "normal" user UID range. This static allocation was unnecessary, so this change lets the system allocate UIDs in the system range (below 1000). * gnu/services/base.scm (guix-build-accounts): Remove #:first-uid, and remove 'uid' field from 'user-account'. Ludovic Courtès 2019-01-20gnu: %base-services: Use *getty-service-type....* gnu/services/base.scm (%base-services): Replace agetty-service with agetty-service-type, mingetty-service with mingetty-service-type. Efraim Flashner 2019-01-20gnu: %base-services: Use login-service-type....* gnu/services/base.scm (login-service-type)[default-value]: New field. (%base-services): Replace login-service with login-service-type. Efraim Flashner 2019-01-20services: %base-services: Use udev-service-type....* gnu/services/base.scm (udev-configuration): Fix typo. (udev-service-type)[default-value]: New field. (%base-services): Replace udev-service with udev-service-type. Efraim Flashner 2019-01-20services: %base-services: Use nscd-service-type....* gnu/services/base.scm (nscd-service-type)[default-value]: New field. (%base-services): Replace nscd-service with nscd-service-type. Efraim Flashner 2019-01-20services: Use guix-service-type....* gnu/services/base.scm (%base-services): Replace guix-service with guix-service-type. * gnu/system/examples/docker-image.tmpl (services): Same. Efraim Flashner 2019-01-17services: kmscon: Remove virtual-terminal requirement....kmscon does not require that virtual terminals run in UTF-8 mode. * gnu/services/base.scm (kmscon-service-type): Remove virtual-terminal from requirement list. Mathieu Othacehe 2019-01-11services: Deprecate a few more service procedures....These procedures were already either undocumented (and de facto deprecated) or documented as deprecated or redundant. * gnu/services/base.scm (guix-service, guix-publish-service): Mark as deprecated. * gnu/services/mcron.scm (mcron-service): Likewise. * gnu/services/networking.scm (tor-service): Likewise. * doc/guix.texi (Scheduled Job Execution): Remove 'mcron-service' and adjust example. (Networking Services): Remove 'tor-service'. * gnu/tests/base.scm (%mcron-os): Use 'mcron-service-type' instead of 'mcron-service'. * gnu/tests/networking.scm (%tor-os): Use 'tor-service-type' instead of 'tor-service'. * tests/guix-system.sh: Likewise. Ludovic Courtès 2019-01-10services: Use 'define-deprecated' for service procedures....* gnu/services/base.scm (urandom-seed-service, gpm-service): Define using 'define-deprecated'. * gnu/services/messaging.scm (bitlbee-service): Likewise. * gnu/services/networking.scm (dhcp-client-service): Likewise. (ntp-service): Likewise. * gnu/services/xorg.scm (slim-service): Likewise. (gdm-service): Likewise. Ludovic Courtès 2018-12-17services: udev: Add 'rules' action....* gnu/services/base.scm (udev-shepherd-service): Add 'actions' field. * doc/guix.texi (Base Services): Move "@end deffn" after 'udev-service' definition. Mention 'herd rules udev'. Ludovic Courtès 2018-12-10services: guix: Run 'guix-daemon' in UTF-8 locale....Fixes <https://bugs.gnu.org/32942>. Reported by Julien Lepiller <julien@lepiller.eu>. * gnu/services/base.scm (guix-shepherd-service) <start>: In #:environment-variables, add "GUIX_LOCPATH" and "LC_ALL". Ludovic Courtès 2018-12-05services: guix-daemon: Fix authorization of multiple keys....Previously, the 'unless (file-exists? "/etc/guix/acl")' guard would mean that only the first key in the list would get registered since were were generating one registration snippet per key. This fixes that. * gnu/services/base.scm (hydra-key-authorization): Change to be a 'for-each' loop iterating on #$KEYS. Ludovic Courtès 2018-12-04Remove most references to hydra.gnu.org....* Makefile.am (assert-binaries-available): Don't mention hydra.gnu.org in comment. * build-aux/check-available-binaries.scm: Likewise. * build-aux/check-final-inputs-self-contained.scm: Likewise. * doc/guix.texi (SUBSTITUTE-SERVER): New variable. Use it throughout instead of "mirror.hydra.gnu.org". * doc/contributing.texi (Submitting Patches): Likewise. * gnu/services/base.scm (hydra-key-authorization) (guix-activation): Remove mentions of "hydra.gnu.org" in comments and messages. * gnu/system/install.scm (%installation-services): Likewise. * guix/scripts/size.scm (guix-size): Likewise. Ludovic Courtès 2018-11-13services: nscd: Add 'invalidate' and 'statistics' actions....* gnu/services/base.scm (nscd-action-procedure, nscd-actions): New procedures. (nscd-shepherd-service): Add 'modules' and 'actions' fields. * gnu/tests/base.scm (run-basic-test)["nscd invalidate action"] ["nscd invalidate action, wrong table"]: New tests. * doc/guix.texi (Services): Mention 'herd doc nscd action'. (Base Services): Document the actions. Ludovic Courtès 2018-11-07services: kmscon: Add an auto-login option....Add an auto-login option that behaves as the one of mingetty-service. * gnu/services/base.scm (kmscon-configuration)[auto-login]: New field. (kmscon-service-type): Pass it to kmscon command. * doc/guix.texi (Base Services): Document it. Mathieu Othacehe 2018-11-07services: kmscon: Do not switch to vt at start....* gnu/services/base.scm (kmscon-service-type): Add "--no-switchvt" to kmscon command. Mathieu Othacehe