From fed34b8df2b19ba996ef810f44d5666437c90fb7 Mon Sep 17 00:00:00 2001 From: Piotr Szarmanski Date: Fri, 25 Aug 2023 19:09:50 +0200 Subject: Add the parallel encoder. --- tests/decode-tests.lisp | 7 +++--- tests/encode-parallel.lisp | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 tests/encode-parallel.lisp (limited to 'tests') diff --git a/tests/decode-tests.lisp b/tests/decode-tests.lisp index 918cd82..162f32b 100644 --- a/tests/decode-tests.lisp +++ b/tests/decode-tests.lisp @@ -97,7 +97,7 @@ (assert-array-decode (make-octets 32767 :element 9) 1024) (assert-array-decode (make-octets 32768 :element 10) 1024) (assert-array-decode (make-octets 131072 :element 11) 1024) - (for-all ((buffer (gen-buffer :length (gen-integer :min 0 :max 40000)))) + (for-all ((buffer (gen-buffer :length (gen-integer :min 1 :max 40000)))) (assert-array-decode buffer 1024))) (test simple-decoding-32kib @@ -107,7 +107,7 @@ (assert-array-decode (make-octets 32769 :element 2) 32kib) (assert-array-decode (make-octets 32768 :element 2) 32kib) (assert-array-decode (make-octets 16777216 :element 2) 32kib) - (for-all ((buffer (gen-buffer :length (gen-integer :min 0 :max 70000)))) + (for-all ((buffer (gen-buffer :length (gen-integer :min 1 :max 70000)))) (assert-array-decode buffer 32kib))) (test proper-return-values @@ -199,7 +199,7 @@ (assert-length (make-array 2048 :element-type '(unsigned-byte 8) :initial-element 2) 1024) (assert-length (make-array 16383 :element-type '(unsigned-byte 8) :initial-element 2) 1024) (assert-length (make-array 16384 :element-type '(unsigned-byte 8) :initial-element 2) 1024) - (for-all ((buffer (gen-buffer :length (gen-integer :min 0 :max 40000)))) + (for-all ((buffer (gen-buffer :length (gen-integer :min 1 :max 40000)))) (assert-length buffer 1024))) @@ -243,4 +243,3 @@ (assert-read-byte-error (make-octets 1024 :element 2) 32kib) (assert-read-byte-error (make-octets 32767 :element 2) 32kib) (assert-read-byte-error (make-octets 32768 :element 2) 32kib)) - diff --git a/tests/encode-parallel.lisp b/tests/encode-parallel.lisp new file mode 100644 index 0000000..4bc6c23 --- /dev/null +++ b/tests/encode-parallel.lisp @@ -0,0 +1,58 @@ +;; This file is part of eris-cl. +;; Copyright (C) 2023 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-encoding-tests :in eris-tests) + +(defmacro with-lp-kernel (threads &body expr ) + `(let ((lparallel:*kernel* (lparallel:make-kernel ,threads))) + (unwind-protect (progn ,@expr) + (lparallel:end-kernel)))) + +(defmacro test-p/file-backend (array &optional (secret null-secret)) + `(let ((tmpdir (make-temporary-dir))) + (unwind-protect + (let* ((backend (make-instance 'file-backend :directory tmpdir)) + (array ,array) + (file (merge-pathnames (crypto:byte-array-to-hex-string (crypto:random-data 16)) tmpdir))) + (with-open-file (f file :direction :output :element-type 'serapeum:octet) + (write-sequence ,array f)) + (let ((list + (list + (read-capability-to-octets + (store-data array backend :secret ,secret)) + (read-capability-to-octets + (p/store-data array backend :secret ,secret)) + (read-capability-to-octets + (p/store-data file backend :secret ,secret))))) + (is (apply #'serapeum:equalp* list)))) + (uiop:delete-directory-tree tmpdir :validate t)))) + + +(test simple-parallel-tests + (with-lp-kernel 2 + (test-p/file-backend (make-octets 1023 :element 1) (make-octets 32 :element 1)) + (test-p/file-backend (make-octets 1025 :element 2) (make-octets 32 :element 2)) + (test-p/file-backend (make-octets 16383 :element 3) (make-octets 32 :element 3)) + (test-p/file-backend (make-octets 16384 :element 4) (make-octets 32 :element 4)) + (test-p/file-backend (make-octets 1 :element 5) (make-octets 32 :element 5)) + (test-p/file-backend (make-octets 16834 :element 5) (make-octets 32 :element 6)) + (test-p/file-backend (make-octets 96000 :element 5) (make-octets 32 :element 7)))) + +(test simple-parallel-tests2 + (with-lp-kernel 3 + (for-all ((buffer (gen-buffer :length (gen-integer :min 1 :max 130000)))) + (test-p/file-backend buffer)))) -- cgit v1.2.3