gnu: watchexec: Update to 1.14.1.
[jackhill/guix/guix.git] / gnu / packages / benchmark.scm
index 9b06cc4..3470f38 100644 (file)
@@ -7,6 +7,9 @@
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 malte Frank Gerdes <malte.f.gerdes@gmail.com>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020 Greg Hogan <code@greghogan.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +33,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
@@ -39,6 +43,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-science)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages storage)
   #:use-module (ice-9 match))
 (define-public fio
   (package
     (name "fio")
-    (version "3.20")
+    (version "3.25")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://brick.kernel.dk/snaps/"
                                   "fio-" version ".tar.bz2"))
               (sha256
                (base32
-                "1mwqafn81a9pxy2kw9rl4p3r2brhg2ckwrcwzy0q4gffxgn3k9c7"))))
+                "16r734an459cz1ax3jyhxc269i3syzdkll4qbv18wqaxpm5y34v6"))))
     (build-system gnu-build-system)
     (arguments
      '(#:test-target "test"
@@ -127,7 +132,7 @@ is to write a job file matching the I/O load one wants to simulate.")
                          (if (string=? (package-name mpi) "openmpi")
                              ""
                              (string-append "-" (package-name mpi)))))
-    (version "2019.3")
+    (version "2019.6")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -136,7 +141,16 @@ is to write a job file matching the I/O load one wants to simulate.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0si5xi6ilhd3w0gbsg124589pvp094hvf366rvjjb9pi7pdk5p4i"))))
+                "02hxbk9g9nl59bk5qcfl3djj7b58vsqys340m1xdbyqwcrbnahh9"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Some source configuration files in the original tarball
+                  ;; have inappropriate execute permissions, which interferes
+                  ;; with the install phase below.
+                  (for-each (lambda (file) (chmod file #o444))
+                            (find-files "WINDOWS" "."))
+                  #t))))
     (build-system gnu-build-system)
     (inputs
      `(("mpi" ,mpi)))
@@ -213,7 +227,7 @@ This can give a much better understanding of the command's performance.")
 (define-public benchmark
   (package
     (name "benchmark")
-    (version "1.5.0")
+    (version "1.5.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -222,16 +236,24 @@ This can give a much better understanding of the command's performance.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0r9dbg4cbk47gwmayys31a83m3y67k0kh1f6pl8i869rbd609ndh"))
-              (patches (search-patches "benchmark-unbundle-googletest.patch"))))
+                "13rxagpzw6bal6ajlmrxlh9kgfvcixn6j734b2bvfqz7lch8n0pa"))))
     (build-system cmake-build-system)
     (native-inputs
-     `(("googletest" ,googletest)))
+     `(("googletest-source" ,(package-source googletest))
+       ("googletest" ,googletest)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-googletest
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-recursively (assoc-ref inputs "googletest-source")
+                               "googletest")
+             #t)))))
     (home-page "https://github.com/google/benchmark")
     (synopsis "Microbenchmark support library")
     (description
-     "Benchmark is a library to benchmark code snippets,
-similar to unit tests.")
+     "Benchmark is a library to benchmark code snippets, similar to unit
+tests.")
     (license license:asl2.0)))
 
 (define-public bonnie++
@@ -258,3 +280,66 @@ benchmark how your file systems perform with respect to data read and write
 speed, the number of seeks that can be performed per second, and the number of
 file metadata operations that can be performed per second.")
     (license license:gpl2)))   ;GPL 2 only, see copyright.txt
+
+(define-public python-locust
+  (package
+    (name "python-locust")
+    (version "1.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "locust" version))
+       (sha256
+        (base32
+         "1q2nza37fwsqf8qdmisfz6bmjpss90shi1bajrclf6gkbslhryxl"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'extend-PATH
+           ;; Add the 'locust' script to PATH, which is used in the test
+           ;; suite.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "PATH" (string-append out "/bin:"
+                                             (getenv "PATH"))))
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "python" "-m" "pytest"
+                     "-k" (string-join
+                           (list
+                            ;; These tests return "non-zero exit status 1".
+                            "not test_default_headless_spawn_options"
+                            "not test_default_headless_spawn_options_with_shape"
+                            "not test_headless_spawn_options_wo_run_time"
+                            ;; This test depends on networking.
+                            "not test_web_options"
+                            ;; This test fails because of the warning "System open
+                            ;; file limit '1024' is below minimum setting '10000'".
+                            "not test_skip_logging") " and "))
+             #t)))))
+    (propagated-inputs
+     `(("python-configargparse" ,python-configargparse)
+       ("python-flask" ,python-flask)
+       ("python-flask-basicauth" ,python-flask-basicauth)
+       ("python-gevent" ,python-gevent)
+       ("python-geventhttpclient" ,python-geventhttpclient)
+       ("python-msgpack" ,python-msgpack)
+       ("python-psutil" ,python-psutil)
+       ("python-pyzmq" ,python-pyzmq)
+       ("python-requests" ,python-requests)
+       ("python-werkzeug" ,python-werkzeug)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pyquery" ,python-pyquery)
+       ("python-pytest" ,python-pytest))) ;for more easily skipping tests
+    (home-page "https://locust.io/")
+    (synopsis "Distributed load testing framework")
+    (description "Locust is a performance testing tool that aims to be easy to
+use, scriptable and scalable.  The test scenarios are described in plain
+Python.  It provides a web-based user interface to visualize the results in
+real-time, but can also be run non-interactively.  Locust is primarily geared
+toward testing HTTP-based applications or services, but it can be customized to
+test any system or protocol.")
+    (license license:expat)))