summaryrefslogtreecommitdiff
path: root/tests/parallel-tests.lisp
diff options
context:
space:
mode:
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))