;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Marius Bakke . ;;; ;;; 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 . (define-module (gnu tests ganeti) #:use-module (gnu) #:use-module (gnu tests) #:use-module (gnu system vm) #:use-module (gnu services) #:use-module (gnu services ganeti) #:use-module (gnu services netw
aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
;;;
;;; 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 (gnu packages data-language)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix build-system cmake)
  #:use-module (guix git-download)
  #:use-module (guix packages)
  #:use-module (gnu packages)
  #:use-module (gnu packages algebra)
  #:use-module (gnu packages c)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages geo)
  #:use-module (gnu packages image)
  #:use-module (gnu packages imagemagick)
  #:use-module (gnu packages maths)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages onc-rpc)
  #:use-module (gnu packages plotutils)
  #:use-module (gnu packages python)
  #:use-module (gnu packages python-xyz)
  #:use-module (gnu packages readline)
  #:use-module (gnu packages wxwidgets)
  #:use-module (gnu packages xml))

(define-public gnudatalanguage
  (package
    (name "gnudatalanguage")
    (version "1.0.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/gnudatalanguage/gdl")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1bb3nin3qrzx2dwdk08vffp4bblrcpv6vv1ybaj499qhqcpqpc12"))))
    (build-system cmake-build-system)
    (native-inputs
     (list python python-numpy))
    (inputs
     (list eccodes
           eigen
           expat
           fftw
           fftwf
           glpk
           graphicsmagick
           gsl
           hdf4-alt
           hdf5
           libgeotiff
           libjpeg-turbo
           libpng
           libtiff
           libtirpc
           ncurses
           netcdf
           plplot
           proj
           readline
           shapelib
           udunits
           wxwidgets
           zlib))
    (home-page "https://gnudatalanguage.github.io/")
    (synopsis "Compiler for GDL, an IDL-compatible programming language")
    (description
     "GDL (GNU Data Language) is an incremental compiler compatible with
IDL (Interactive Data Language) and to some extent with PV-WAVE.  Together
with its library routines it serves as a tool for data analysis and
visualization in such disciplines as astronomy, geosciences and medical
imaging.")
    (license license:gpl2+)))
-templates=file" (string-append "--enabled-hypervisors=" #$hypervisor) (string-append "--hypervisor-parameters=" #$hypervisor ":" (string-join '#$hvparams "\n")) ;; Set the default NIC mode to 'routed' to avoid having to ;; configure a full bridge to placate 'gnt-cluster verify'. "--nic-parameters=mode=routed,link=eth0" "ganeti.example.com")) marionette)) ;; Disable the watcher while doing daemon tests to prevent interference. (test-eq "watcher pause" 0 (marionette-eval '(begin (system* #$(file-append ganeti "/sbin/gnt-cluster") "watcher" "pause" "1h")) marionette)) (test-assert "force-start wconfd" ;; Check that the 'force-start' Shepherd action works, used in a ;; master-failover scenario. (marionette-eval '(begin (setenv "PATH" "/run/current-system/profile/bin") (invoke "herd" "stop" "ganeti-wconfd") (invoke "herd" "disable" "ganeti-wconfd") (invoke "herd" "force-start" "ganeti-wconfd")) marionette)) ;; Verify that the cluster is healthy. (test-eq "gnt-cluster verify 1" 0 (marionette-eval '(begin (system* #$(file-append ganeti "/sbin/gnt-cluster") "verify")) marionette)) ;; Try stopping and starting daemons with daemon-util like ;; 'gnt-node add', 'gnt-cluster init', etc. (test-eq "daemon-util stop-all" 0 (marionette-eval '(begin (system* #$(file-append ganeti "/lib/ganeti/daemon-util") "stop-all")) marionette)) (test-eq "daemon-util start-all" 0 (marionette-eval '(begin (system* #$(file-append ganeti "/lib/ganeti/daemon-util") "start-all")) marionette)) ;; Check that the cluster is still healthy after the daemon restarts. (test-eq "gnt-cluster verify 2" 0 (marionette-eval '(begin (system* #$(file-append ganeti "/sbin/gnt-cluster") "verify")) marionette)) (test-eq "watcher continue" 0 (marionette-eval '(begin (system* #$(file-append ganeti "/sbin/gnt-cluster") "watcher" "continue")) marionette)) ;; Try accessing the RAPI. This causes an expected failure: ;; https://github.com/ganeti/ganeti/issues/1502 ;; Run it anyway for easy testing of potential fixes. (test-equal "http-get RAPI version" '(200 "2") (let-values (((response text) (http-get #$(simple-format #f "http://localhost:~A/version" %forwarded-rapi-port) #:decode-body? #t))) (list (response-code response) text))) (test-equal "gnt-os list" "debootstrap+default\nguix+default\n" (marionette-eval '(begin (use-modules (ice-9 popen)) (let* ((port (open-pipe* OPEN_READ #$(file-append ganeti "/sbin/gnt-os") "list" "--no-headers")) (output (get-string-all port))) (close-pipe port) output)) marionette)) (test-eq "gnt-cluster destroy" 0 (marionette-eval '(begin (system* #$(file-append ganeti "/sbin/gnt-cluster") "destroy" "--yes-do-it")) marionette)) (test-end) (exit (= (test-runner-fail-count (test-runner-current)) 1))))) (gexp->derivation (string-append "ganeti-" hypervisor "-test") test)) (define %test-ganeti-kvm (system-test (name "ganeti-kvm") (description "Provision a Ganeti cluster using the KVM hypervisor.") (value (run-ganeti-test "kvm" ;; Set kernel_path to an empty string to prevent ;; 'gnt-cluster verify' from testing for its presence. #:hvparams '("kernel_path=") #:extra-packages (list qemu))))) (define %test-ganeti-lxc (system-test (name "ganeti-lxc") (description "Provision a Ganeti cluster using LXC as the hypervisor.") (value (run-ganeti-test "lxc" #:extra-packages (list lxc)))))