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/encode-parallel.lisp | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 tests/encode-parallel.lisp (limited to 'tests/encode-parallel.lisp') 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