summaryrefslogtreecommitdiff
path: root/tests/parallel-tests.lisp
diff options
context:
space:
mode:
authorPiotr Szarmanski2022-09-25 19:54:42 +0200
committerPiotr Szarmanski2022-09-25 19:54:42 +0200
commit8db501749d47964b436bc63cafb80a17bfd42396 (patch)
treed6982ac6eff1aeed514f7c11ee5df46a1930805d /tests/parallel-tests.lisp
parent67d00dc4ce131d5cc46f4041dbf40391697e281d (diff)
Add parallel decoder.
Diffstat (limited to 'tests/parallel-tests.lisp')
-rw-r--r--tests/parallel-tests.lisp38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/parallel-tests.lisp b/tests/parallel-tests.lisp
new file mode 100644
index 0000000..c139b31
--- /dev/null
+++ b/tests/parallel-tests.lisp
@@ -0,0 +1,38 @@
+;; 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 versqion.
+
+;; 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 <https://www.gnu.org/licenses/>.
+
+(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))