guix-data-service/tests/jobs-load-new-guix-revision.scm
Christopher Baines 83ef624b97 Switch to processing jobs in parallel
This should speed up processing new revisions, reduce latency between finding
out about new revisions and processing them, as well as help manage memory
usage, by processing each job in a process that then exits.
2019-07-12 23:00:44 +01:00

81 lines
2.5 KiB
Scheme

(define-module (tests jobs-load-new-guix-revision)
#:use-module (srfi srfi-64)
#:use-module (ice-9 match)
#:use-module (squee)
#:use-module (guix utils)
#:use-module (guix tests)
#:use-module (guix-data-service database)
#:use-module (tests mock-inferior)
#: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")
(with-postgresql-connection
"test-jobs-load-new-guix-revision"
(lambda (conn)
(test-equal "select-job-for-commit works"
'()
(select-job-for-commit conn "does not exist"))
(test-equal "test job success"
#t
(mock
((guix-data-service jobs load-new-guix-revision)
store-item-for-git-repository-id-and-commit
(lambda (conn git-repository-id commit)
"/gnu/store/test"))
(mock
((guix-data-service jobs load-new-guix-revision)
extract-information-from
(lambda (conn git-repository-id commit store-path)
#t))
(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))))))
(test-equal "test build store item failure"
#f
(mock
((guix-data-service jobs load-new-guix-revision)
store-item-for-git-repository-id-and-commit
(lambda (conn git-repository-id commit)
#f))
(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)))))
(test-equal "test extract information failure"
#f
(mock
((guix-data-service jobs load-new-guix-revision)
store-item-for-git-repository-id-and-commit
(lambda (conn git-repository-id commit)
"/gnu/store/test"))
(mock
((guix-data-service jobs load-new-guix-revision)
extract-information-from
(lambda (conn git-repository-id commit store-path)
#f))
(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))))))))
(test-end)