diff options
Diffstat (limited to 'tests/publish.scm')
-rw-r--r-- | tests/publish.scm | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/tests/publish.scm b/tests/publish.scm index 233b71ce93..268c324551 100644 --- a/tests/publish.scm +++ b/tests/publish.scm @@ -122,13 +122,15 @@ URL: nar/~a Compression: none NarHash: sha256:~a NarSize: ~d -References: ~a~%" +References: ~a +FileSize: ~a~%" %item (basename %item) (bytevector->nix-base32-string (path-info-hash info)) (path-info-nar-size info) - (basename (first (path-info-references info))))) + (basename (first (path-info-references info))) + (path-info-nar-size info))) (signature (base64-encode (string->utf8 (canonical-sexp->string @@ -152,11 +154,13 @@ URL: nar/~a Compression: none NarHash: sha256:~a NarSize: ~d -References: ~%" +References: ~%\ +FileSize: ~a~%" item (uri-encode (basename item)) (bytevector->nix-base32-string (path-info-hash info)) + (path-info-nar-size info) (path-info-nar-size info))) (signature (base64-encode (string->utf8 @@ -323,6 +327,7 @@ References: ~%" ("Compression" . "gzip")) 200 ;nar/gzip/… #t ;Content-Length + #t ;FileSize 200) ;nar/… (call-with-temporary-directory (lambda (cache) @@ -350,11 +355,19 @@ References: ~%" (basename %item) ".nar")) (response (http-get url))) (and (= 404 (response-code response)) + + ;; We should get an explicitly short TTL for 404 in this case + ;; because it's going to become 200 shortly. + (match (assq-ref (response-headers response) 'cache-control) + ((('max-age . ttl)) + (< ttl 3600))) + (wait-for-file cached) - (let ((body (http-get-port url)) - (compressed (http-get nar-url)) - (uncompressed (http-get (string-append base "nar/" - (basename %item))))) + (let* ((body (http-get-port url)) + (compressed (http-get nar-url)) + (uncompressed (http-get (string-append base "nar/" + (basename %item)))) + (narinfo (recutils->alist body))) (list (file-exists? nar) (filter (lambda (item) (match item @@ -362,10 +375,13 @@ References: ~%" (("StorePath" . _) #t) (("URL" . _) #t) (_ #f))) - (recutils->alist body)) + narinfo) (response-code compressed) (= (response-content-length compressed) (stat:size (stat nar))) + (= (string->number + (assoc-ref narinfo "FileSize")) + (stat:size (stat nar))) (response-code uncompressed))))))))) (test-end "publish") |