GNU bug report logs -
#38429
[PATCH] Add scron service.
Previous Next
Reported by: Robert Vollmert <rob <at> vllmrt.net>
Date: Fri, 29 Nov 2019 17:56:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #29 received at 38429 <at> debbugs.gnu.org (full text, mbox):
I’ve checked that the tests compile, and run the test cron jobs
by hand to ensure they behave as tested, but I wasn’t able to run
the system tests themselves.
> On 3. Dec 2019, at 13:46, Robert Vollmert <rob <at> vllmrt.net> wrote:
>
> ---
> gnu/tests/base.scm | 86 ++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 86 insertions(+)
>
> diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
> index a891711844..b80e77be66 100644
> --- a/gnu/tests/base.scm
> +++ b/gnu/tests/base.scm
> @@ -28,6 +28,7 @@
> #:use-module (gnu services dbus)
> #:use-module (gnu services avahi)
> #:use-module (gnu services mcron)
> + #:use-module (gnu services scron)
> #:use-module (gnu services shepherd)
> #:use-module (gnu services networking)
> #:use-module (gnu packages base)
> @@ -48,6 +49,7 @@
> %test-halt
> %test-cleanup
> %test-mcron
> + %test-scron
> %test-nss-mdns))
>
> (define %simple-os
> @@ -720,6 +722,90 @@ non-ASCII names from /tmp.")
> (description "Make sure the mcron service works as advertised.")
> (value (run-mcron-test name))))
>
> +
> +;;;
> +;;; Scron.
> +;;;
> +
> +(define %scron-os
> + ;; System with an scron service, with one scron job for "root" and one scron
> + ;; job for an unprivileged user.
> + (let ((job1
> + (scron-job
> + (schedule "* * * * *")
> + (command "(id -u; id -g) > witness")))
> + (job2
> + (scron-job
> + (schedule "* * * * *")
> + (command "su -c '(id -u; id -g) > ~/witness' alice")))
> + (job3
> + (scron-job
> + (schedule "* * * * *")
> + (command "touch witness-touch"))))
> + (simple-operating-system
> + (service scron-service-type
> + (scron-configuration (jobs (list job1 job2 job3)))))))
> +
> +(define (run-scron-test name)
> + (define os
> + (marionette-operating-system
> + %scron-os
> + #:imported-modules '((gnu services herd)
> + (guix combinators))))
> +
> + (define test
> + (with-imported-modules '((gnu build marionette))
> + #~(begin
> + (use-modules (gnu build marionette)
> + (srfi srfi-64)
> + (ice-9 match))
> +
> + (define marionette
> + (make-marionette (list #$(virtual-machine os))))
> +
> + (mkdir #$output)
> + (chdir #$output)
> +
> + (test-begin "scron")
> +
> + (test-assert "service running"
> + (marionette-eval
> + '(begin
> + (use-modules (gnu services herd))
> + (start-service 'scron))
> + marionette))
> +
> + ;; Make sure root's scron job runs, has its cwd set to "/", and
> + ;; runs with the right UID/GID.
> + (test-equal "root's job"
> + '(0 0)
> + (wait-for-file "/witness" marionette))
> +
> + ;; Likewise for Alice's job. We cannot know what its GID is since
> + ;; it's chosen by 'groupadd', but it's strictly positive.
> + (test-assert "alice's job"
> + (match (wait-for-file "/home/alice/witness" marionette)
> + ((1000 gid)
> + (>= gid 100))))
> +
> + ;; Last, the job that uses a command; allows us to test whether
> + ;; $PATH is sane.
> + (test-equal "root's job with command"
> + ""
> + (wait-for-file "/witness-touch" marionette
> + #:read '(@ (ice-9 rdelim) read-string)))
> +
> + (test-end)
> + (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
> +
> + (gexp->derivation name test))
> +
> +(define %test-scron
> + (system-test
> + (name "scron")
> + (description "Make sure the scron service works as advertised.")
> + (value (run-scron-test name))))
> +
>
> ;;;
> ;;; Avahi and NSS-mDNS.
> --
> 2.24.0
>
This bug report was last modified 5 years and 169 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.