Skip to content
Snippets Groups Projects
This project is mirrored from https://git.savannah.gnu.org/git/guix/guix-cuirass.git/. Pull mirroring failed .
Last successful update .
  1. Sep 15, 2020
    • Mathieu Othacehe's avatar
      metrics: Fix db-average-eval-duration-per-spec. · ad3c6035
      Mathieu Othacehe authored
      * src/cuirass/metrics.scm (db-average-eval-duration-per-spec): Order results
      by descending rowid and adjust docstring.
      ad3c6035
    • Mathieu Othacehe's avatar
      metrics: Warn about metric insertion. · c5a97586
      Mathieu Othacehe authored
      * src/cuirass/metrics.scm: Add a warning about metric insertion in %metrics
      list.
      c5a97586
    • Mathieu Othacehe's avatar
      metrics: Add 'new-derivations-per-day support. · 97ec7a2d
      Mathieu Othacehe authored
      * src/cuirass/metrics.scm (db-new-derivations-previous-day): New procedure.
      (%metrics): Add 'new-derivations-per-day.
      (db-update-metrics): Add it.
      * src/cuirass/templates.scm (make-line-chart): Add support for multiple
      datasets. Also add "interpolation?" and "legend?" options.
      (global-metrics-content): Add "new-derivations-per-day" argument. Adapt
      "Builds per day" chart so that it uses two datasets from
      'new-derivations-per-day and 'builds-per-day metrics.
      * src/cuirass/templates.scm (url-handler): Adapt accordingly.
      97ec7a2d
    • Mathieu Othacehe's avatar
      metrics: Change 'builds-per-day computation. · d0a2235e
      Mathieu Othacehe authored
      * src/cuirass/metrics.scm (db-builds-previous-day): Only take into account the
      builds that are created and processed during the previous day.
      d0a2235e
    • Mathieu Othacehe's avatar
      metrics: Add pending builds support. · f011d874
      Mathieu Othacehe authored
      * src/cuirass/metrics.scm (db-pending-builds, db-current-day-timestamp): New
      procedures.
      (%metrics): Add 'pending-builds.
      (db-update-metrics): Add it.
      * src/cuirass/templates.scm (global-metrics-content): Add "pending-builds"
      argument. Display pending builds in a line chart.
      * src/cuirass/http.scm (url-handler): Adapt "global-metrics-content" call
      accordingly.
      f011d874
    • Mathieu Othacehe's avatar
      Do not override onload callback. · 21a9b2b3
      Mathieu Othacehe authored
      * src/cuirass/templates.scm (make-line-chart): Do not override onload callback
      as that would prevent us from adding multiple charts.
      21a9b2b3
    • Mathieu Othacehe's avatar
      metrics: Rename 'builds-previous-day to 'builds-per-day. · 5a947e18
      Mathieu Othacehe authored
      * src/cuirass/metrics.scm (%metrics): Rename 'builds-previous-day to
      'builds-per-day.
      (db-update-metrics): Adapt accordingly.
      * src/cuirass/http.scm (url-handler): Ditto.
      5a947e18
    • Mathieu Othacehe's avatar
      metrics: Order by descending rowid by default. · cd2d2512
      Mathieu Othacehe authored
      * src/cuirass/metrics.scm (db-get-metrics-with-id): Order by descending rowid
      by default.
      * src/cuirass/http.scm (url-handler): Use the default order for
      "db-get-metrics-with-id".
      cd2d2512
  2. Sep 14, 2020
    • Mathieu Othacehe's avatar
      Add metrics support. · cf11b73d
      Mathieu Othacehe authored
      * Makefile.am: Add "upgrade-11.sql", "chart.js" and "metrics.js".
      * bin/cuirass.in (main): Add 'metrics fiber.
      * src/cuirass/http.scm (%file-white-list): Add "js/chart.js".
      (url-handler): Add "/metrics" route.
      * src/cuirass/metrics.scm: New file.
      * src/cuirass/templates.scm (html-page): Add a "Global metrics" sub-menu to
      "Status" dropdown menu.
      (make-line-chart, global-metrics-content): New procedures.
      * src/schema.sql (Metrics): New table.
      * src/sql/upgrade-11.sql: New file.
      * src/static/js/chart.js: New file.
      cf11b73d
    • Mathieu Othacehe's avatar
      database: Export procedures. · 43ed8547
      Mathieu Othacehe authored
      * src/cuirass/database.scm (last-insert-rowid, expect-one-row, %sqlite-exec):
      Export them.
      43ed8547
  3. Sep 10, 2020
    • Mathieu Othacehe's avatar
      Add missing SQL upgrade files. · 713a914e
      Mathieu Othacehe authored
      * Makefile.am (dist_sql_DATA): Add upgrade-9.sql and upgrade-10.sql.
      713a914e
    • Mathieu Othacehe's avatar
      tests: Fix HTTP tests. · 00c7b4bb
      Mathieu Othacehe authored
      This is a follow-up of 154232bc.
      
      * tests/http.scm (evaluations-query-result): Add 'timestamp', 'checkouttime'
      and 'evaltime' fields.
      (fill-db): Pass a matching timestamp to "db-add-evaluation" calls.
      00c7b4bb
    • Mathieu Othacehe's avatar
      Add a status field to Evaluation table. · f5b0d393
      Mathieu Othacehe authored
      The Evaluation table currently has an 'in_progress' field. Distinction between
      succeeded and failed evaluations are based on the presence of Builds records
      for the evaluation. It it also not possible to distinguish aborted evaluations
      from failed evaluations.
      
      Rename 'in_progress' field to 'status'. The 'status' field can be equal to
      'started', 'succeeded', 'failed' or 'aborted'.
      
      * src/cuirass/database.scm (evaluation-status): New exported enumeration.
      (db-set-evaluations-done, db-set-evaluation-done): Remove them.
      (db-abort-pending-evaluations, db-set-evaluation-status): New exported procedures.
      (db-add-evaluation, db-get-builds, db-get-evaluations,
      db-get-evaluations-build-summary, db-get-evaluation-summary): Adapt to use
      'status' field instead of 'in_progress' field.
      * src/cuirass/templates.scm (evaluation-badges): Ditto.
      * src/schema.sql (Evaluations): Rename 'in_progress' field to 'status'.
      * src/sql/upgrade-10.sql: New file.
      * bin/cuirass.in (main): Use "db-abort-pending-evaluations" instead of
      "db-set-evaluations-done".
      * src/cuirass/base.scm (evaluate): Use "db-set-evaluation-status" instead of
      "db-set-evaluations-done".
      (build-packages): Use "db-set-evaluation-status" instead of
      "db-set-evaluation-done".
      * tests/database.scm (sqlite-exec): Adapt accordingly.
      * tests/http.scm (evaluations-query-result): Ditto.
      f5b0d393
  4. Sep 07, 2020
    • Mathieu Othacehe's avatar
      Do not use commit time as checkout timestamp. · af12a805
      Mathieu Othacehe authored
      Commit time can be far away from the actual push time. Thus, use the checkout
      time instead of the commit time to fill Checkouts 'timestamp' field.
      
      * src/cuirass/base.scm (fetch-input): Return the checkout time instead of the
      commit time.
      af12a805
  5. Sep 06, 2020
    • Mathieu Othacehe's avatar
      Handle evaluations without timestamp. · 33798abc
      Mathieu Othacehe authored
      This is a follow-up of d9879583.
      
      * src/cuirass/templates.scm (evaluation-build-table): Do not print evaluation
      date if the "timestamp" field equals zero.
      33798abc
    • Mathieu Othacehe's avatar
      Display evaluation date and duration. · d9879583
      Mathieu Othacehe authored
      src/cuirass/database.scm (db-get-evaluations): Add support for "timestamp",
      "checkouttime" and "evaltime" fields,
      (db-get-evaluation-summary): ditto.
      src/cuirass/templates.scm (nearest-exact-integer, seconds->string): New
      procedures,
      (evaluation-build-table): print evaluation date and duration.
      d9879583
    • Mathieu Othacehe's avatar
      Save evaluations and checkouts timestamps. · 154232bc
      Mathieu Othacehe authored
      src/cuirass/base.scm (fetch-input): Add the commit timestamp to the returned
      association list,
      (process-specs): Pass a timestamp taken at procedure start and another one
      taken after inputs are fetched to "db-add-evaluation" procedure. Once the
      evaluation is over, call "db-set-evaluation-time" to save the evaluation
      completion time.
      src/cuirass/database.scm (db-set-evaluation-time): New procedure,
      (db-add-checkout): Handle the "timestamp" field,
      (db-add-evaluation): add "checkouttime" and "evaltime" arguments. Modify the
      associated SQL query accordingly.
      (db-get-builds): Use "Builds.timestamp" instead of "timestamp" as this field
      is also part of the Evaluations table.
      src/schema.sql (Checkouts): Add "timestamp" field,
      (Evaluations): add "timestamp", "checkouttime" and "evaltime" fields.
      src/sql/upgrade-9.sql: New file.
      tests/database.scm (sqlite-exec): Adapt Evaluations table insertions to include
      "timestamp", "checkouttime" and "evaltime" required fields.
      154232bc
  6. Sep 02, 2020
    • Mathieu Othacehe's avatar
      Fix /specifications route. · b135a02b
      Mathieu Othacehe authored
      Fixes <https://issues.guix.gnu.org/43163>.
      
      * src/cuirass/http.scm (specification->json-object): New procedure,
      (url-handler): use it for "/specifications" route to convert specification
      objects into a representation suitable for json->scm.
      * tests/http.scm ("/specifications"): Test the above route.
      b135a02b
  7. Aug 25, 2020
  8. Aug 05, 2020
    • Mathieu Othacehe's avatar
      web: server: Remove with-ignored-disconnects. · 1bcccbab
      Mathieu Othacehe authored
      Use the pre-unwind-handler of a catch clause instead of nesting
      with-throw-handler inside a catch clause.
      
      * src/web/server/fiberized.scm (with-ignored-disconnects): Remove it,
      (client-loop): replace "with-ignored-disconnects" with a catch clause.
      1bcccbab
  9. Aug 04, 2020
    • Mathieu Othacehe's avatar
      web: server: Ignore all client disconnects. · 0abf1920
      Mathieu Othacehe authored
      EPIPE and ECONNRESET errors are already ignored when thrown by "sendfile" and
      "put-bytevector" procedures. It turns out "peek-char" can also cause such
      errors. So ignore such errors within the whole procedure.
      
      * src/web/server/fiberized.scm (client-loop): Wrap the whole procedure inside
      "with-ignored-disconnects" instead of wrapping individually "sendfile" and
      "put-bytevector" calls.
      0abf1920
  10. Aug 03, 2020
  11. Aug 02, 2020
    • Mathieu Othacehe's avatar
      http: Handle wrong build number. · 76968292
      Mathieu Othacehe authored
      The request "/build/1234)" causes a select query on the whole Builds table,
      because failed "string->number" conversion is not handled.
      
      * src/cuirass/http.scm (url-handler): Handle erroneous id -> number conversion
      on "/build/id" route.
      76968292
  12. Aug 01, 2020
    • Mathieu Othacehe's avatar
      database: Warn if the worker is busy for more than 5 seconds. · 153b49c9
      Mathieu Othacehe authored
      * src/cuirass/utils.scm (with-operation, get-message-with-timeout): New
      procedures,
      (call-with-worker-thread): add timeout and timeout-proc arguments.
      * src/cuirass/database.scm (with-db-worker-thread): Pass a 5 seconds timeout
      to call-with-worker-thread, and print a debug message on timeout expiration.
      153b49c9
  13. Jul 31, 2020
  14. Jul 30, 2020
    • Mathieu Othacehe's avatar
      web: server: Handle client disconnection. · 0955a11a
      Mathieu Othacehe authored
      * src/web/server/fiberized.scm (client-loop): Catch EPIPE and ECONNRESET
      errors than can be thrown if the client disconnects prematurely.
      0955a11a
    • Mathieu Othacehe's avatar
      utils: Do not block the calling fiber. · 6ad9c602
      Mathieu Othacehe authored
      Setting current-fiber to #f in %non-blocking will prevent put-message in the
      new thread to try suspending itself, but will also cause the same behavior on
      get-message, which is not desired.
      
      * src/cuirass/utils.scm (%non-blocking): Reduce the scope of current-fiber
      parameter to the newly created thread.
      6ad9c602
  15. Jul 29, 2020
  16. Jul 26, 2020
    • Mathieu Othacehe's avatar
      templates: Handle missing input case. · f71f026a
      Mathieu Othacehe authored
      It happens that some left-over checkout entries refer to removed inputs. In
      that case, input will be #f, causing commit-hyperlink to fail with the
      following error message:
      
      In cuirass/http.scm:
         475:25  9 (url-handler _ _)
          193:3  8 (evaluation-html-page ((#:id . 5103) (# . 0) (# . 39) ?) ?)
      In cuirass/templates.scm:
         612:14  7 (evaluation-build-table _ #:checkouts _ #:inputs _ # _ # ?)
      In srfi/srfi-1.scm:
         586:17  6 (map1 (((#:commit . "3a3e9f2bb586e79a7931163f0191d?") ?)))
      In cuirass/templates.scm:
         621:39  5 (_ _)
         584:15  4 (commit-hyperlink #f "3a3e9f2bb586e79a7931163f0191df615?")
      In web/uri.scm:
         308:23  3 (string->uri _)
         278:14  2 (string->uri-reference _)
      In unknown file:
                 1 (regexp-exec #<regexp 7f3a76c05980> #f #<undefined> #<u?>)
      In ice-9/boot-9.scm:
        1669:16  0 (raise-exception _ #:continuable? _)
      In procedure regexp-exec: Wrong type argument in position 2 (expecting string): #f
      
      * src/cuirass/templates.scm (evaluation-build-table): Do not call
      "commit-hyperlink" if the matching input could not be found.
      f71f026a
  17. Jul 25, 2020
    • Mathieu Othacehe's avatar
      Fix spec reading when restarting builds. · 17395e85
      Mathieu Othacehe authored
      When "spawn-builds" is called to restart builds, the spec is not known,
      preventing build products from being created as reported here:
      
      https://issues.guix.gnu.org/42523
      
      Fix this issue by reading the specification in database in
      "set-build-successful!" procedure.
      
      * src/cuirass/database.scm (db-get-specification): New exported procedure,
      (db-get-specifications): add an optional name argument.
      * tests/database.scm (db-get-specification): Add a corresponding test-case.
      * src/cuirass/base.scm (set-build-successful!): Remove spec argument and read
      it directly from database instead,
      (update-build-statuses!): also remove spec argument, adapt
      set-build-successful! call accordingly,
      (spawn-builds): remove spec argument and adapt handle-build-event and
      update-build-statuses! calls accordingly,
      (handle-build-event): remove spec argument, adapt
      set-build-successful! call accordingly,
      (build-packages): remove spec argument, adapt spawn-builds call accordingly,
      (process-specs): adapt build-packages call.
      17395e85
  18. Jul 03, 2020
    • Mathieu Othacehe's avatar
      navbar: Fix typo. · d11ce40a
      Mathieu Othacehe authored
      * src/cuirass/templates.scm (html-page): Turn "Latest builds" into "Running
      builds".
      d11ce40a
    • Mathieu Othacehe's avatar
      Add "latest builds" support. · 136a8295
      Mathieu Othacehe authored
      Add a "status" dropdown menu in the navigation bar. For now this menu only
      contains one item, a link to the "latest builds" page at "/status" location.
      
      * src/cuirass/database.scm (db-get-builds): Add support for 'started status.
      * src/cuirass/http.scm (url-handler): Add "/status" route.
      * src/cuirass/templates.scm (running-builds-table): New procedure,
      (html-page): add a dropdown menu containing one item, a link to "/status"
      route defined above.
      * src/static/css/cuirass.css: Add new class to allow bootstrap dropdown menus
      to work without javascript plugin.
      136a8295
Loading