changelog shortlog graph tags branches files raw help

Mercurial > core / changeset: rocksdb test comments

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)))