;; This file is part of eris-cl. ;; Copyright (C) 2022 Piotr SzarmaƄski ;; eris-cl is free software: you can redistribute it and/or modify it under the ;; terms of the GNU Lesser General Public License as published by the Free ;; Software Foundation, either version 3 of the License, or (at your option) any ;; later version. ;; eris-cl is distributed in the hope that it will be useful, but WITHOUT ANY ;; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR ;; A PARTICULAR PURPOSE. See the GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License along with ;; eris-cl. If not, see . (in-package :eris/test) (def-suite* parallel-tests :in eris-tests) (defmacro assert-parallel-decode (array block-size) `(uiop:with-temporary-file (:stream output-file :pathname pathname :direction :io) (let* ((*table* (make-hash-table :test #'equalp)) (array ,array) (read-capability (eris-encode array ,block-size #'hashtable-encode))) (eris-decode-parallel read-capability #'hashtable-decode pathname :initial-bindings (acons '*table* *table* bordeaux-threads:*default-special-bindings*) :threads 4) (is (equalp array (alexandria:read-stream-content-into-byte-vector output-file)))))) (test simple-parallel-decode (assert-parallel-decode (make-octets 4096 :element 101) 1024) (assert-parallel-decode (make-octets 4095 :element 102) 1024) (assert-parallel-decode (make-octets 18000 :element 103) 1024) (assert-parallel-decode (make-octets 128000 :element 104) 32768) (assert-parallel-decode (make-octets 131071 :element 104) 32768) (assert-parallel-decode (make-octets 131072 :element 104) 32768) (assert-parallel-decode (make-octets 131073 :element 104) 32768))