2019-07-12 19:50:36 +01:00
|
|
|
(define-module (tests jobs-load-new-guix-revision)
|
2019-06-02 22:02:12 +01:00
|
|
|
#:use-module (srfi srfi-64)
|
|
|
|
|
#:use-module (ice-9 match)
|
|
|
|
|
#:use-module (squee)
|
2024-08-07 17:21:49 +01:00
|
|
|
#:use-module (fibers)
|
2019-06-02 22:02:12 +01:00
|
|
|
#:use-module (guix utils)
|
2020-02-14 09:18:28 +00:00
|
|
|
#:use-module (guix store)
|
2019-06-02 22:02:12 +01:00
|
|
|
#:use-module (guix tests)
|
|
|
|
|
#:use-module (guix-data-service database)
|
|
|
|
|
#:use-module (guix-data-service model git-repository)
|
|
|
|
|
#:use-module (guix-data-service jobs load-new-guix-revision))
|
|
|
|
|
|
|
|
|
|
(test-begin "jobs-load-new-guix-revision")
|
|
|
|
|
|
2020-02-14 09:18:28 +00:00
|
|
|
(%daemon-socket-uri "/var/empty/doesnotexist")
|
|
|
|
|
|
2019-06-02 22:02:12 +01:00
|
|
|
(with-postgresql-connection
|
2019-07-12 19:45:41 +01:00
|
|
|
"test-jobs-load-new-guix-revision"
|
2019-06-02 22:02:12 +01:00
|
|
|
(lambda (conn)
|
2020-02-24 21:16:41 +00:00
|
|
|
(check-test-database! conn)
|
|
|
|
|
|
2019-11-18 19:49:12 +00:00
|
|
|
(exec-query conn "TRUNCATE guix_revisions CASCADE")
|
|
|
|
|
|
2019-06-02 22:02:12 +01:00
|
|
|
(test-equal "select-job-for-commit works"
|
2020-10-09 19:31:51 +01:00
|
|
|
#f
|
2019-06-02 22:02:12 +01:00
|
|
|
(select-job-for-commit conn "does not exist"))
|
|
|
|
|
|
2020-02-24 16:46:10 +00:00
|
|
|
(exec-query conn "TRUNCATE guix_revisions CASCADE")
|
|
|
|
|
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")
|
|
|
|
|
|
2019-06-02 22:02:12 +01:00
|
|
|
(test-equal "test job success"
|
|
|
|
|
#t
|
|
|
|
|
(mock
|
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-14 09:18:28 +00:00
|
|
|
with-store-connection
|
|
|
|
|
(lambda (f)
|
|
|
|
|
(f 'fake-store-connection)))
|
2019-06-02 22:02:12 +01:00
|
|
|
|
|
|
|
|
(mock
|
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2024-04-25 22:01:22 +01:00
|
|
|
open-store-connection
|
|
|
|
|
(lambda ()
|
|
|
|
|
'fake-store-connection))
|
2019-06-02 22:02:12 +01:00
|
|
|
|
2019-11-18 19:49:12 +00:00
|
|
|
(mock
|
2020-02-10 07:52:32 +00:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2024-04-25 22:01:22 +01:00
|
|
|
channel->source-and-derivations-by-system
|
2024-07-26 22:21:59 +01:00
|
|
|
(lambda* (conn channel fetch-with-authentication?
|
2024-04-25 22:01:22 +01:00
|
|
|
#:key parallelism)
|
2024-07-26 22:21:59 +01:00
|
|
|
(values
|
2024-04-25 22:01:22 +01:00
|
|
|
"/gnu/store/guix"
|
|
|
|
|
'(("x86_64-linux"
|
|
|
|
|
.
|
|
|
|
|
((manifest-entry-item . "/gnu/store/foo.drv")
|
|
|
|
|
(profile . "/gnu/store/bar.drv")))))))
|
2020-02-10 07:52:32 +00:00
|
|
|
|
|
|
|
|
(mock
|
2020-02-14 09:18:28 +00:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2024-04-25 22:01:22 +01:00
|
|
|
channel-derivations-by-system->guix-store-item
|
2024-07-26 22:21:59 +01:00
|
|
|
(lambda (channel-derivations-by-system)
|
2024-08-08 13:31:14 +01:00
|
|
|
(values "/gnu/store/test"
|
|
|
|
|
"/gnu/store/test.drv")))
|
2020-02-10 07:52:32 +00:00
|
|
|
|
2020-02-11 08:56:24 +00:00
|
|
|
(mock
|
2024-04-25 22:01:22 +01:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
|
|
|
|
extract-information-from
|
2024-08-07 17:21:49 +01:00
|
|
|
(lambda _
|
2020-02-14 09:18:28 +00:00
|
|
|
#t))
|
|
|
|
|
|
|
|
|
|
(mock
|
2024-04-25 22:01:22 +01:00
|
|
|
((guix-data-service model channel-instance)
|
|
|
|
|
insert-channel-instances
|
|
|
|
|
(lambda (conn guix-revision-id derivations-by-system)
|
|
|
|
|
#t))
|
|
|
|
|
|
|
|
|
|
(mock
|
|
|
|
|
((guix channels)
|
|
|
|
|
channel-news-for-commit
|
|
|
|
|
(lambda (channel commit)
|
|
|
|
|
'()))
|
|
|
|
|
|
2024-08-07 17:21:49 +01:00
|
|
|
(mock
|
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
|
|
|
|
derivation-file-names->derivation-ids
|
|
|
|
|
(lambda _
|
|
|
|
|
#(1)))
|
|
|
|
|
|
2024-04-25 22:01:22 +01:00
|
|
|
(mock
|
|
|
|
|
((guix store)
|
|
|
|
|
add-temp-root
|
|
|
|
|
(lambda _ #f))
|
|
|
|
|
|
|
|
|
|
(mock
|
|
|
|
|
((guix store)
|
|
|
|
|
close-connection
|
|
|
|
|
(lambda _ #f))
|
|
|
|
|
|
|
|
|
|
(match (enqueue-load-new-guix-revision-job
|
|
|
|
|
conn
|
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
|
"test-commit"
|
|
|
|
|
"test-source")
|
|
|
|
|
((id)
|
2024-08-07 17:21:49 +01:00
|
|
|
(run-fibers
|
|
|
|
|
(lambda ()
|
|
|
|
|
(process-load-new-guix-revision-job
|
|
|
|
|
id #:parallelism 1))
|
|
|
|
|
#:hz 0
|
|
|
|
|
#:parallelism 1))))))))))))))
|
2019-11-18 19:49:12 +00:00
|
|
|
|
|
|
|
|
(exec-query conn "TRUNCATE guix_revisions CASCADE")
|
2019-08-05 20:45:40 +01:00
|
|
|
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")
|
|
|
|
|
|
2019-06-02 22:02:12 +01:00
|
|
|
(test-equal "test build store item failure"
|
|
|
|
|
#f
|
|
|
|
|
(mock
|
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-14 09:18:28 +00:00
|
|
|
with-store-connection
|
|
|
|
|
(lambda (f)
|
|
|
|
|
(f 'fake-store-connection)))
|
2019-06-02 22:02:12 +01:00
|
|
|
|
2020-02-10 07:52:32 +00:00
|
|
|
(mock
|
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2023-02-28 10:41:40 +00:00
|
|
|
channel->source-and-derivations-by-system
|
2024-07-26 22:21:59 +01:00
|
|
|
(lambda* (conn channel fetch-with-authentication?
|
|
|
|
|
#:key parallelism)
|
|
|
|
|
(values
|
2023-02-28 10:41:40 +00:00
|
|
|
"/gnu/store/guix"
|
|
|
|
|
'(("x86_64-linux"
|
|
|
|
|
.
|
|
|
|
|
((manifest-entry-item . "/gnu/store/foo.drv")
|
|
|
|
|
(profile . "/gnu/store/bar.drv")))))))
|
2020-02-14 09:18:28 +00:00
|
|
|
|
|
|
|
|
(mock
|
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2022-03-02 18:23:26 +00:00
|
|
|
load-channel-instances
|
|
|
|
|
(lambda (git-repository-id commit
|
|
|
|
|
channel-derivations-by-system)
|
|
|
|
|
0))
|
2020-02-27 21:20:24 +00:00
|
|
|
|
|
|
|
|
(mock
|
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2024-08-07 17:21:49 +01:00
|
|
|
channel-derivations-by-system->guix-store-item
|
|
|
|
|
(lambda (channel-derivations-by-system)
|
|
|
|
|
#f))
|
2022-03-02 18:23:26 +00:00
|
|
|
|
2024-08-07 17:21:49 +01:00
|
|
|
(match (enqueue-load-new-guix-revision-job
|
|
|
|
|
conn
|
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
|
"test-commit"
|
|
|
|
|
"test-source")
|
|
|
|
|
((id)
|
|
|
|
|
(process-load-new-guix-revision-job id))))))))
|
2019-06-02 22:02:12 +01:00
|
|
|
|
2019-08-05 20:45:40 +01:00
|
|
|
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")
|
|
|
|
|
|
2019-06-02 22:02:12 +01:00
|
|
|
(test-equal "test extract information failure"
|
|
|
|
|
#f
|
|
|
|
|
(mock
|
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-14 09:18:28 +00:00
|
|
|
with-store-connection
|
|
|
|
|
(lambda (f)
|
|
|
|
|
(f 'fake-store-connection)))
|
2019-06-02 22:02:12 +01:00
|
|
|
|
|
|
|
|
(mock
|
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2023-02-28 10:41:40 +00:00
|
|
|
channel->source-and-derivations-by-system
|
2024-07-26 22:21:59 +01:00
|
|
|
(lambda* (conn channel fetch-with-authentication?
|
|
|
|
|
#:key parallelism)
|
|
|
|
|
(values
|
2023-02-28 10:41:40 +00:00
|
|
|
"/gnu/store/guix"
|
|
|
|
|
'(("x86_64-linux"
|
|
|
|
|
.
|
|
|
|
|
((manifest-entry-item . "/gnu/store/foo.drv")
|
|
|
|
|
(profile . "/gnu/store/bar.drv")))))))
|
2019-06-02 22:02:12 +01:00
|
|
|
|
2019-11-18 19:49:12 +00:00
|
|
|
(mock
|
2020-02-10 07:52:32 +00:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2022-03-02 18:23:26 +00:00
|
|
|
load-channel-instances
|
|
|
|
|
(lambda (git-repository-id commit
|
|
|
|
|
channel-derivations-by-system)
|
|
|
|
|
0))
|
2020-02-10 07:52:32 +00:00
|
|
|
|
2020-02-14 09:18:28 +00:00
|
|
|
(mock
|
2020-02-27 21:20:24 +00:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2022-03-02 18:23:26 +00:00
|
|
|
channel-derivations-by-system->guix-store-item
|
2024-07-26 22:21:59 +01:00
|
|
|
(lambda (channel-derivations-by-system)
|
2022-03-02 18:23:26 +00:00
|
|
|
"/gnu/store/test"))
|
2020-02-27 21:20:24 +00:00
|
|
|
|
|
|
|
|
(mock
|
2022-03-02 18:23:26 +00:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
|
|
|
|
extract-information-from
|
2024-07-26 22:21:59 +01:00
|
|
|
(lambda* (conn git-repository-id commit
|
2023-02-28 10:41:40 +00:00
|
|
|
guix-source store-path
|
2024-07-26 22:21:59 +01:00
|
|
|
#:key skip-system-tests?
|
|
|
|
|
extra-inferior-environment-variables
|
|
|
|
|
parallelism)
|
2022-03-02 18:23:26 +00:00
|
|
|
#f))
|
|
|
|
|
|
|
|
|
|
(mock
|
|
|
|
|
((guix channels)
|
|
|
|
|
channel-news-for-commit
|
|
|
|
|
(lambda (channel commit)
|
|
|
|
|
'()))
|
|
|
|
|
|
|
|
|
|
(match (enqueue-load-new-guix-revision-job
|
|
|
|
|
conn
|
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
|
"test-commit"
|
|
|
|
|
"test-source")
|
|
|
|
|
((id)
|
2024-08-07 17:21:49 +01:00
|
|
|
(process-load-new-guix-revision-job id))))))))))
|
2019-08-05 20:45:40 +01:00
|
|
|
|
2019-08-05 20:59:48 +01:00
|
|
|
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")
|
|
|
|
|
|
|
|
|
|
(test-assert "test duplicate job handling"
|
|
|
|
|
(with-postgresql-transaction
|
|
|
|
|
conn
|
|
|
|
|
(lambda (conn)
|
|
|
|
|
(enqueue-load-new-guix-revision-job
|
|
|
|
|
conn
|
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
|
"test-commit"
|
|
|
|
|
"test-source")
|
|
|
|
|
(enqueue-load-new-guix-revision-job
|
|
|
|
|
conn
|
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
|
"test-commit"
|
|
|
|
|
"test-source")
|
|
|
|
|
#t)
|
|
|
|
|
#:always-rollback? #t))))
|
2019-08-05 20:45:40 +01:00
|
|
|
|
2019-06-02 22:02:12 +01:00
|
|
|
(test-end)
|