Message ID | 20220106180636.31164-1-me@tobias.gr |
---|---|
State | Accepted |
Headers | show |
Series | [bug#53057] gnu: Add stress-ng. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
Hi Tobias, How timely! :-) Tobias Geerinckx-Rice <me@tobias.gr> writes: > * gnu/packages/admin.scm (stress-ng): New public variable. > --- > gnu/packages/admin.scm | 67 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 67 insertions(+) > > diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm > index d45857150f..6e180ec80a 100644 > --- a/gnu/packages/admin.scm > +++ b/gnu/packages/admin.scm > @@ -2260,6 +2260,73 @@ (define-public stress > system is under heavy load.") > (license license:gpl2+))) > > +(define-public stress-ng > + (package > + (name "stress-ng") > + (version "0.13.10") > + (source > + (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/ColinIanKing/stress-ng") > + (commit (string-append "V" version)))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 "1z9vjn2131iv3pwrh04z6r5ygi1qgad5bi3jhghcvc3v1b4k5ran")))) > + (build-system gnu-build-system) > + (arguments > + (list #:make-flags > + #~(list (string-append "CC=" #$(cc-for-target)) > + (string-append "BINDIR=" #$output "/bin") > + (string-append "MANDIR=" #$output "/share/man") > + (string-append "JOBDIR=" #$output > + "/share/stress-ng/example-jobs") > + (string-append "BASHDIR=" #$output > + "/share/bash-completion/completions")) > + #:test-target "lite-test" > + #:phases > + #~(modify-phases %standard-phases > + (delete 'configure) ; no configure script > + (add-after 'check 'check-a-little-harder > + ;; XXX Guix supports only one #:test-target. Run more tests. > + (lambda* (#:key tests? #:allow-other-keys) > + (when tests? > + (substitute* "debian/tests/fast-test-all" > + (("EXCLUDE=\"" exclude=) > + (string-append exclude= > + ;; Fails if host kernel denies ptracing. > + "ptrace "))) > + (invoke "make" "fast-test-all" > + "-j" (number->string (parallel-job-count))))))))) This looks good and works good too! My only comment is that this should honor parallel-tests?. Reusing the check phase but overriding the test-target argument should do it: modified gnu/packages/admin.scm @@ -2289,15 +2289,15 @@ (define-public stress-ng (delete 'configure) ; no configure script (add-after 'check 'check-a-little-harder ;; XXX Guix supports only one #:test-target. Run more tests. - (lambda* (#:key tests? #:allow-other-keys) + (lambda* (#:key tests? #:allow-other-keys #:rest args) (when tests? (substitute* "debian/tests/fast-test-all" (("EXCLUDE=\"" exclude=) (string-append exclude= ;; Fails if host kernel denies ptracing. - "ptrace "))) - (invoke "make" "fast-test-all" - "-j" (number->string (parallel-job-count))))))))) + "ptrace ")))) + (apply (assoc-ref %standard-phases 'check) + `(,@args #:test-target "fast-test-all"))))))) (inputs (list keyutils kmod Otherwise, LGTM! Feel free to push with such adjustment. Thank you! Maxim
Hi Maxim,
Maxim Cournoyer 写道:
> + (apply (assoc-ref %standard-phases 'check)
This is a trick I've forgotten before… sigh. Thanks for pointing
it out!
Pushed as 046322189b62981fca6baab4e758e6878eab0758.
Kind regards,
T G-R
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index d45857150f..6e180ec80a 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -2260,6 +2260,73 @@ (define-public stress system is under heavy load.") (license license:gpl2+))) +(define-public stress-ng + (package + (name "stress-ng") + (version "0.13.10") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ColinIanKing/stress-ng") + (commit (string-append "V" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1z9vjn2131iv3pwrh04z6r5ygi1qgad5bi3jhghcvc3v1b4k5ran")))) + (build-system gnu-build-system) + (arguments + (list #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "BINDIR=" #$output "/bin") + (string-append "MANDIR=" #$output "/share/man") + (string-append "JOBDIR=" #$output + "/share/stress-ng/example-jobs") + (string-append "BASHDIR=" #$output + "/share/bash-completion/completions")) + #:test-target "lite-test" + #:phases + #~(modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-after 'check 'check-a-little-harder + ;; XXX Guix supports only one #:test-target. Run more tests. + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (substitute* "debian/tests/fast-test-all" + (("EXCLUDE=\"" exclude=) + (string-append exclude= + ;; Fails if host kernel denies ptracing. + "ptrace "))) + (invoke "make" "fast-test-all" + "-j" (number->string (parallel-job-count))))))))) + (inputs + (list keyutils + kmod + libaio + libbsd + libcap + libgcrypt + zlib)) + (home-page "https://github.com/ColinIanKing/stress-ng") + (synopsis "Load and stress-test a computer system in various ways") + (description + "stress-ng stress-tests a computer system by exercising both physical +subsystems as operating system kernel interfaces. It can stress the CPU, cache, +disk, memory, socket and pipe I/O, scheduling, and much more, in various +selectable ways. This can trip hardware issues such as thermal overruns as well +as operating system bugs that occur only when a system is being thrashed hard. + +You can also measure test throughput rates, which can be useful to observe +performance changes across different operating system releases or types of +hardware. However, stress-ng is not a benchmark. Use it with caution: some of +the tests can make poorly designed hardware run dangerously hot or make the +whole system lock up. + +Compared to its inspiration, @command{stress}, @command{stress-ng} offers many +additional options such as the number of bogo operations to run, execution +metrics, verification of memory and computational operations, and considerably +more stress mechanisms.") + (license license:gpl2+))) + (define-public detox (package (name "detox")