changeset 46: |
21b4f6965580 |
parent 45: |
ad67a57b0134 |
child 47: |
01f7dc4d7a8e |
author: |
ellis <ellis@rwest.io> |
date: |
Tue, 21 Nov 2023 18:30:58 -0500 |
files: |
lisp/ffi/rocksdb/tests.lisp |
description: |
rocksdb test comments |
1.1--- a/lisp/ffi/rocksdb/tests.lisp Tue Nov 21 17:14:06 2023 -0500
1.2+++ b/lisp/ffi/rocksdb/tests.lisp Tue Nov 21 18:30:58 2023 -0500
1.3@@ -20,6 +20,14 @@
1.4 (defun genkey (&optional prefix) (string-to-octets (symbol-name (gensym (or prefix "key")))))
1.5 (defun genval (&optional prefix) (string-to-octets (symbol-name (gensym (or prefix "val")))))
1.6
1.7+(defun random-array (dim &optional (limit 4096))
1.8+ (let ((r (make-array dim)))
1.9+ (dotimes (i (array-total-size r) r)
1.10+ (setf (row-major-aref r i) (random limit)))))
1.11+
1.12+(defun random-bytes (dim)
1.13+ (random-array dim 256))
1.14+
1.15 (deftest set-opts ()
1.16 (let ((opts (rocksdb-options-create))
1.17 (wopts (rocksdb-writeoptions-create))
1.18@@ -44,12 +52,15 @@
1.19 (with-alien ((k (* char) (make-alien char klen))
1.20 (v (* char) (make-alien char vlen))
1.21 (errptr rocksdb-errptr nil))
1.22+ ;; copy KEY to K
1.23 (loop for x across key
1.24 for i from 0 below klen
1.25 do (setf (deref k i) x))
1.26+ ;; copy VAL to V
1.27 (loop for y across val
1.28 for i from 0 below vlen
1.29 do (setf (deref v i) y))
1.30+ ;; put K:V in DB
1.31 (rocksdb-put db
1.32 wopts
1.33 k
1.34@@ -58,15 +69,19 @@
1.35 vlen
1.36 errptr)
1.37 (is (null-alien errptr))
1.38+ ;; get V from DB given K
1.39 (rocksdb-get db ropts k klen (make-alien size-t vlen) errptr)
1.40 (is (null-alien errptr))
1.41+ ;; copy V to RVAL and validate
1.42 (let ((rval (make-array vlen :element-type 'unsigned-byte)))
1.43 (loop for i from 0 below vlen do (let ((x (deref v i))) (setf (aref rval i) x)))
1.44 (is (string= (octets-to-string val) (concatenate 'string (map 'vector #'code-char rval)))))
1.45+ ;; cleanup
1.46 (rocksdb-delete db wopts k klen errptr)
1.47 (is (null-alien errptr))
1.48 (rocksdb-writeoptions-destroy wopts)
1.49 (rocksdb-readoptions-destroy ropts)))
1.50+ ;; final cleanup
1.51 (rocksdb-close db)
1.52 (rocksdb-options-destroy opts)
1.53 (sb-ext:delete-directory path :recursive t)))