2
0
Fork 0
mirror of git://git.savannah.gnu.org/guix/guix-cuirass.git synced 2023-12-14 06:03:04 +01:00
Commit graph

61 commits

Author SHA1 Message Date
Ludovic Courtès 8c7c93922b database: Use argument binding in 'db-get-builds' queries.
That makes it safe from SQL injection.

* src/cuirass/database.scm (db-get-builds): Rewrite to use question
marks in SQL queries and binding through '%sqlite-exec'.
* tests/database.scm ("database")["db-get-builds"]: Exercise 'WHERE'
clauses.
2018-02-08 18:45:03 +01:00
Ludovic Courtès 2887b1dfa9 database: 'db-update-build-status!' keeps stoptime unchanged when nothing new.
* src/cuirass/database.scm (db-update-build-status!): And "AND status != ?"
in SQL queries.
* tests/database.scm ("database")["db-update-build-status!"]: Add call
to 'db-update-build-status!'.
2018-02-08 14:19:19 +01:00
Danny Milosavljevic eb01f46987 database: Use 'sqlite-bind' to avoid SQL injection.
* src/cuirass/database.scm (%sqlite-exec): Remove.
(sqlite-exec): Turn back into a procedure.  Use 'sqlite-bind'.  Add
'normalize' procedure and use it.
(db-add-specification, db-add-derivation, db-get-derivation)
(db-add-evaluation, db-add-build, db-update-build-status!)
(db-get-build, db-get-stamp, db-add-stamp): Use question marks in SQL
queries.
* src/cuirass/base.scm (build-packages)[register]: Make #:log
non-false.
* tests/database.scm (make-dummy-job): Add #:job-name, #:system,
 #:nix-name, and #:eval-id.  This is necessary because 'sqlite-bind'
would now translate #f to a real NULL (before it would translate to the
string "#f"...), and would thus report violations of the non-NULL
constraint.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2018-02-08 14:18:27 +01:00
Ludovic Courtès 4558d1c869 http: Reject methods other than GET.
* src/cuirass/http.scm (url-handler): Check whether REQUEST's method is
'GET, and return 405 if not.
2018-01-26 22:41:22 +01:00
Ludovic Courtès e98c4f0b04 http: Run test within 'run-fibers'.
* tests/http.scm ("http")["cuirass-run"]: Run server with 'run-fibers'.
2018-01-26 14:07:09 +01:00
Ludovic Courtès 3c30a6cfd8 http: Adjust test to include #:derivation.
This is a followup to commit c89c117c12.

* tests/http.scm (build-query-result): Add #:derivation.
2018-01-25 09:52:03 +01:00
Ludovic Courtès 8675d6309b database: 'db-update-build-status!' takes a #:log-file parameter.
* src/cuirass/database.scm (sqlite-exec): Use (ice-9 format).
(db-update-build-status!): Add #:log-file parameter and honor it.
* tests/database.scm ("database")["db-update-build-status!"]: Test it.
2018-01-24 23:41:24 +01:00
Ludovic Courtès 496b624dda http: Implement /api/queue.
* src/cuirass/http.scm (url-handler): Add /api/queue handler.
* tests/http.scm ("http"): Add a BUILD2 and DERIVATION2, and rename
BUILD and DERIVATION accordingly.
("/build/2", "/build/2/log/raw"): Rename to /42.
("/api/queue?nr=100"): New test.
2018-01-23 23:40:07 +01:00
Ludovic Courtès fe0a98315d database: Add 'db-update-build-status!'.
* src/cuirass/database.scm (build-status): Add 'scheduled' and
'started'.
(db-add-build): Make sure #:timestamp, #:starttime, #:stoptime, and
 #:status are integers.
(db-update-build-status!): New procedure.
* tests/database.scm ("database")["db-update-build-status!"]: New test.
2018-01-23 18:17:31 +01:00
Ludovic Courtès dbc6625ac2 tests: Fix malformed Emacs local variable line.
* tests/database.scm: Add missing "eval:".
2018-01-23 17:37:56 +01:00
Ludovic Courtès 9588e4d4a7 http: /build/N/log/raw redirects to /log.
This moves log handling responsibility to 'guix publish'.

* src/cuirass/http.scm (handle-log-request): Remove.
(url-handler): Change /log/raw URI handler to return 302 to /log/OUTPUT.
* tests/http.scm (log-file-name): Remove, and remove code to create and
delete it.
("fill-db"): Change #:log value.
("/build/1/log/raw"): Expect 302.
2018-01-07 23:59:30 +01:00
Ludovic Courtès 60b6c6fcc5 database: Extend and test 'db-get-builds'.
* src/cuirass/database.scm (db-get-builds): Make 'order' a separate
filter.  Add 'format-limit-clause'.  Reverse OUTPUTS.
* tests/database.scm (make-dummy-eval, make-dummy-derivation)
(make-dummy-build): New procedures.
(with-temporary-database): New macro.
("database"): Use 'make-dummy-build'.
("db-get-builds"): New test.
2018-01-07 23:59:30 +01:00
Mathieu Othacehe 8a7483a3bb
cuirass: add Hydra compatible HTTP API.
* doc/cuirass.texi (Sections)[Web API]: New section describing the HTTP API.
* src/cuirass/http.scm (spec->json-string): Move it to utils.scm and rename it
  object->json-string.
(object->json-scm): Move it utils.scm.
(handle-*-request): New helpers procedures.
(request-parameters): New procedure to parse a request query.
(url-handler): Add new API's.
* src/cuirass/utils.scm (object->json-scm, object->json-string): Exported
procedures moved from http.scm.
* tests/http.scm: Add various tests on new HTTP API.
2017-09-08 21:15:32 +02:00
Mathieu Othacehe 0a84f0eda0
cuirass: Store new information in database to prepare new HTTP API
integration.

* bin/evaluate.in (fill-job): New procedure.
(main): Use it to fill informations (nix-name, system) that will later be
added to database.
* doc/cuirass.texi (Database)[Derivation]: Add system and nix_name fields.
(Database)[Builds]: Add id, status, timestamp, starttime and stoptime
fields. Remove output field.
(Database)[Outputs]: New table describing the build outputs.
* src/cuirass/base.scm (build-packages): Add new fields to build object before
adding it to database.
* src/cuirass/database.scm (db-get-build, db-get-builds): New procedures to get
a build by id from database and a list of builds using filter parameters
respectively.
* src/schema.sql (Outputs) : New table.
(Derivations): Add system and nix_name columns.
(Builds): Remove output column and add id, status, timestamp, starttime and
stoptime columns.
2017-09-08 21:15:31 +02:00
Ludovic Courtès 72f2b6b77c database: 'db-add-build' is now idempotent.
Fixes <https://bugs.gnu.org/28094>.
Reported by Ricardo Wurmus <rekado@elephly.net>.

* src/cuirass/database.scm (SQLITE_CONSTRAINT)
(SQLITE_CONSTRAINT_PRIMARYKEY): New variables.
(db-add-build): Catch 'sqlite-error, and swallow
SQLITE_CONSTRAINT_PRIMARYKEY errors.
* tests/database.scm ("db-add-build"): New test.
2017-08-26 10:45:43 +02:00
Mathieu Othacehe 4666142ca5
repo: Remove dead code.
* Makefile.am (dist_pkgmodule_DATA): Remove repo.scm,
(TESTS): Remove repo.scm.
* build-aux/guix.scm (package)[disable-repo-tests]: Remove phase.
* src/cuirass/repo.scm: Remove.
* tests/repo.scm: Remove.
2017-07-06 09:20:52 +02:00
Mathieu Othacehe f301378d94
utils: Remove useless procedures.
* src/cuirass/utils.scm (mkdir-p, make-user-module,
  call-with-temporary-directory, with-directory-excursion): Remove because
  already defined in guix.
* tests/utils (with-directory-excursion): Remove associated test.
* src/cuirass/base.scm: Use (guix build utils) to provide procedure removed
  from (cuirass utils).
* bin/evaluate.in: Ditto.
* bin/cuirass.in: Use "make-user-module" provided by (guix ui).
2017-07-01 18:47:18 +02:00
Mathieu Othacehe 706c80c6a0
repo: remove git-repo.
* src/cuirass/repo.scm (git-repo): Remove it.
* tests/repo.scm: Remove related tests.

git-repo is not used and it's usecases will be covered by (guix git).
2017-07-01 18:47:18 +02:00
Ludovic Courtès cf787bc872 tests: Compare JSON objects instead of JSON strings.
This fixes a test failure with Guile 2.2.

* tests/http.scm (hash-table-keys, hash-table=?): New procedures.
("spec->json-string"): Use it to compare the JSON objects.
2017-05-10 16:28:56 +02:00
Mathieu Lirzin 16aec469d4
repo: Add <repo> record datatype.
* src/cuirass/utils.scm (call-with-temporary-directory): New procedure.
* src/cuirass/repo.scm: Use it.  New file.
* tests/repo.scm: New tests.
* Makefile.am (dist_pkgmodule_DATA, TESTS): Add them.
2016-12-28 18:18:37 +01:00
Mathieu Lirzin e9e1ce8e14
maint: Move examples from 'tests' to 'examples' directory.
* examples/gnu-system.scm: Moved from 'tests' directory.
* examples/guix-jobs.scm: Likewise.
* examples/guix-track-git.scm: Likewise.
* examples/hello-git.scm: Likewise.
* examples/hello-singleton.scm: Likewise.
* examples/hello-subset.scm: Likewise.
* Makefile.am (EXTRA_DIST): Adapt.
* README <Example>: Likewise.
2016-12-16 13:20:49 +01:00
Mathieu Lirzin bfd395c09f
db: Forbid inserting the same specification twice.
* src/schema.sql (Specifications): Make 'repo_name' the primary key.
(Stamps, Evaluations): Adapt.
* src/cuirass/database.scm (db-get-specifications): Likewise.
(db-add-specification): Ignore if SPEC has already been added.
* tests/database.scm (example-spec): Adapt.
2016-11-17 01:19:05 +01:00
Jan Nieuwenhuizen f65c62e53a
tests: Track Cuirass' git.
* guix.scm: New file; specify Guix package.
* guix/ci.scm: New file; expose to Guix.
* build-aux/pre-inst-env.in: Add it to GUIX_PACKAGE_PATH.
* bin/evaluate.in (main): Lookup proc using name specified by #:proc.
* tests/guix-track-git.scm: New file.
* tests/hello-git.scm: Test it.

Signed-off-by: Mathieu Lirzin <mthl@gnu.org>
2016-09-23 16:53:07 +02:00
Jan Nieuwenhuizen 5ef0701f54
base: Support tracking of a Guix package's git.
* src/schema.sql (Specifications): Add no_compile_p column.
* src/cuirass/database.scm (db-add-specification)
(db-get-specifications): Handle #:no-compile? property.
* tests/database.scm (example-spec): Adapt.
* src/cuirass/base.scm (process-specs): Skip compilation if #:no-compile?.

Signed-off-by: Mathieu Lirzin <mthl@gnu.org>
2016-09-23 16:50:36 +02:00
Mathieu Lirzin ff7c3a11f2
tests: database: Use 'test-group-cleanup'.
* tests/database.scm: Use 'test-group-cleanup'.
2016-08-28 00:35:01 +02:00
Mathieu Lirzin 97d6dfb108
tests: http: Reformat expected result.
* tests/http.scm ("spec->json-string"): Make expected result more
readable.
2016-08-03 03:17:01 +02:00
Mathieu Lirzin 651b8bbcf9
Add (cuirass http) module.
* src/cuirass/http.scm: New file.
* tests/http.scm: Likewise.
* Makefile.am (dist_pkgmodule_DATA, TESTS): Add them.
* configure.ac: Check for (json) module.
2016-07-31 01:07:00 +02:00
Mathieu Lirzin e58911de37
utils: Add 'alist?' procedure.
* src/cuirass/utils.scm (alist?): New procedure.
* tests/utils.scm ("alist?"): New test.
2016-07-30 23:08:39 +02:00
Mathieu Lirzin ac4512897c
schema: Evaluations: Add 'revision' column.
* src/schema.sql (Evaluations): Add 'revision' column.
* src/cuirass/database.scm (db-add-evaluation): Adapt.
All callers changed.
2016-07-30 23:07:19 +02:00
Mathieu Lirzin ad267dc86a
tests: Add missing test group statements.
* tests/base.scm: Add missing 'test-begin' and 'test-end'.
* tests/database.scm: Likewise.
* tests/ui.scm: Likewise.
* tests/utils.scm: Likewise.
2016-07-27 14:17:10 +02:00
Mathieu Lirzin d493a58823
schema: Separate "Derivations" from "Evaluations".
* src/schema.sql (Derivations): New table.
(Evaluations): Remove 'derivation' and 'job_name' columns.  Add 'id'
column.
* src/cuirass/database.scm (db-add-evaluation): Adapt.
(db-get-derivation, db-add-derivation): New procedures.
(evaluation-exists?, db-get-evaluation): Delete.
* bin/evaluate.in (main): Adapt.
* tests/database.scm ("sqlite-exec"): Likewise.
("db-add-derivation", "db-get-derivation"): New tests.
("db-add-evaluation", "db-get-evaluation"): Delete.
2016-07-27 14:17:09 +02:00
Mathieu Lirzin 815e8060af
database: Remove "db-add-build-log" test.
* tests/database/scm ("db-add-build-log"): Delete.
2016-07-27 14:17:09 +02:00
Mathieu Lirzin f97b24c29e
tests: Add 'hello-singleton' specification example.
* tests/hello-singleton.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
2016-07-27 14:16:57 +02:00
Mathieu Lirzin a063a2277e
cuirass: Use database to store specifications. 2016-07-25 02:37:00 +02:00
Mathieu Lirzin fba9b37dc9
gnu-system: license->alist: Allow list in license field. 2016-07-25 02:12:41 +02:00
Mathieu Lirzin c7c9e91876
schema: Separate 'Evaluations' from 'Builds'.
Adapt src/cuirass/database.scm and its tests.
2016-07-25 02:12:41 +02:00
Mathieu Lirzin b1dd669196
database: sqlite-exec: Return every rows.
Export it.  Add a test.
2016-07-25 02:12:40 +02:00
Mathieu Lirzin 89b1f89cfc
Move '%program-name' to (cuirass ui) module. 2016-07-25 02:12:37 +02:00
Mathieu Lirzin 55e72cb107 gnu-system: Add 'license->alist' procedure. 2016-07-14 17:44:23 +02:00
Mathieu Lirzin 1a542e4d1b Remove redundancies in the specification examples. 2016-07-14 17:44:23 +02:00
Mathieu Lirzin 1b804d7402 gnu-system: Use 'specification->package' when possible. 2016-07-14 17:44:23 +02:00
Mathieu Lirzin 0808ab3ecd Remove unnecessary (cuirass job) module. 2016-07-13 14:16:36 +02:00
Mathieu Lirzin 53c12be409 Evaluate derivations in a separate process.
This fixes a bug where different Guix branches gave the same
derivations.
2016-07-13 14:07:24 +02:00
Mathieu Lirzin 92f5d0dfe4 Add guix-jobs.scm specification file. 2016-07-04 17:01:58 +02:00
Mathieu Lirzin ecd001cb22 gnu-system: Fix '%job-name' calls.
This calls were using its previous name 'job-name'.
2016-07-04 13:51:14 +02:00
Mathieu Lirzin fe30eb7e82 Add 'basic.sh' test. 2016-07-03 16:50:27 +02:00
Mathieu Lirzin 7ae6ce0690 Add %package-cachedir parameter. 2016-07-02 15:34:40 +02:00
Mathieu Lirzin 88e72887a0 Add test for 'with-directory-excursion'. 2016-07-02 03:35:19 +02:00
Mathieu Lirzin 94f910355c job: Add load-path field to <job-spec>. 2016-07-02 01:51:56 +02:00
Mathieu Lirzin ca6b5d6677 job: Add 'commit' and 'tag' field to <job-spec>. 2016-07-01 16:46:10 +02:00