1.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2+++ b/lisp/rocksdb/tests.lisp Thu Oct 12 22:36:34 2023 -0400
1.3@@ -0,0 +1,62 @@
1.4+;;; rocksdb/tests.lisp --- RocksDB tests
1.5+
1.6+;;; Code:
1.7+(defpackage :rocksdb.tests
1.8+ (:use :cl :rt :rocksdb :rdb :sb-alien :alien :sb-ext)
1.9+ (:export :rocksdb-test-dir))
1.10+
1.11+(in-package :rocksdb.tests)
1.12+
1.13+(defun rocksdb-test-dir ()
1.14+ (format nil "/tmp/~A/" (gensym "rocksdb-tests-")))
1.15+
1.16+(defun test-opts ()
1.17+ (let ((opts (rocksdb-options-create)))
1.18+ (rocksdb-options-set-create-if-missing opts t)
1.19+ opts))
1.20+
1.21+(defsuite :rocksdb)
1.22+
1.23+(defsuite :rdb)
1.24+
1.25+(in-suite :rocksdb)
1.26+
1.27+(deftest set-opts ()
1.28+ (let ((opts (rocksdb-options-create))
1.29+ (wopts (rocksdb-writeoptions-create))
1.30+ (ropts (rocksdb-readoptions-create))
1.31+ (bopts (rocksdb-block-based-options-create)))
1.32+ (rocksdb-options-set-create-if-missing opts t)
1.33+ (rocksdb-options-destroy opts)
1.34+ (rocksdb-writeoptions-destroy wopts)
1.35+ (rocksdb-readoptions-destroy ropts)
1.36+ (rocksdb-block-based-options-destroy bopts)))
1.37+
1.38+(deftest db ()
1.39+ (let* ((opts (test-opts))
1.40+ (path (rocksdb-test-dir))
1.41+ (db (rocksdb-open opts path nil)))
1.42+ (let ((k "key")
1.43+ (v "val")
1.44+ (wopts (rocksdb-writeoptions-create))
1.45+ (ropts (rocksdb-readoptions-create)))
1.46+ (with-alien ((key (* char) (make-alien-string k))
1.47+ (val (* char) (make-alien-string v :external-format :ascii :null-terminate t))
1.48+ (errptr rocksdb-errptr nil)
1.49+ (vlen (* size-t) (make-alien size-t 1))
1.50+ (ar (array char)))
1.51+ (rocksdb-put db
1.52+ wopts
1.53+ key
1.54+ (length k)
1.55+ val
1.56+ (length v)
1.57+ errptr)
1.58+ (is (string= v (rocksdb-get db ropts key (length k) vlen errptr)))
1.59+
1.60+ (rocksdb-delete db wopts key (length k) errptr)
1.61+ (rocksdb-writeoptions-destroy wopts)
1.62+ (rocksdb-readoptions-destroy ropts)))
1.63+ (rocksdb-close db)
1.64+ (rocksdb-options-destroy opts)
1.65+ (sb-ext:delete-directory path :recursive t)))