Changeset 2600
- Timestamp:
- 02/23/08 17:45:03 (11 months ago)
- Files:
-
- trunk/bknr/datastore/src/bknr.datastore.asd (modified) (1 diff)
- trunk/bknr/datastore/src/data/object-old.lisp (deleted)
- trunk/bknr/datastore/src/data/object-tests.lisp (modified) (3 diffs)
- trunk/bknr/datastore/src/data/object.lisp (modified) (4 diffs)
- trunk/bknr/datastore/src/data/package.lisp (modified) (1 diff)
- trunk/bknr/datastore/src/data/txn.lisp (modified) (5 diffs)
- trunk/build.lisp (modified) (3 diffs)
- trunk/test.lisp (modified) (1 diff)
- trunk/thirdparty/unit-test/unit-test.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/bknr/datastore/src/bknr.datastore.asd
r2559 r2600 32 32 :depends-on (:bknr.datastore :fiveam :cl-store :bknr.utils) 33 33 :components ((:module "data" :components ((:file "encoding-test") 34 ))))34 (:file "object-tests"))))) 35 35 36 36 (defmethod asdf:perform ((op asdf:test-op) (system (eql (find-system :bknr.datastore)))) trunk/bknr/datastore/src/data/object-tests.lisp
r1826 r2600 30 30 unless (pathname-name file) do (delete-directory file)) 31 31 #+sbcl 32 (sb-posix:rmdir (namestring pathname)))) 32 (sb-posix:rmdir (namestring pathname)) 33 #+openmcl 34 (ccl::recursive-delete-directory pathname))) 33 35 34 36 (defvar *test-datastore-directory* #p"/tmp/test-datastore/") … … 48 50 :unit :datastore 49 51 :name ,name 50 :body #'(lambda () ,@body))) 52 :body (lambda () 53 ,@body))) 51 54 52 55 (define-datastore-test "Datastore setup" 53 (test-assert *test-datastore*))56 (test-assert *test-datastore*)) 54 57 55 58 (define-datastore-test "Create object" … … 104 107 (define-datastore-test "Stress test object creation" 105 108 (format t "Creating ~a objects~%" +stress-size+) 106 (time (bknr.datastore::without-sync () 107 (dotimes (i +stress-size+) 108 (make-object 'store-object)))) 109 (test-equal (length (all-store-objects)) +stress-size+) 110 (format t "Delete ~A objects~%" +stress-size+) 111 (time (bknr.datastore::without-sync () 112 (map-store-objects #'delete-object))) 113 (test-equal (all-store-objects) nil)) 114 109 (time (bknr.datastore::without-sync () 110 (dotimes (i +stress-size+) 111 (make-object 'store-object)))) 112 (test-equal (length (all-store-objects)) +stress-size+) 113 (format t "Delete ~A objects~%" +stress-size+) 114 (time (bknr.datastore::without-sync () 115 (map-store-objects #'delete-object))) 116 (test-equal (all-store-objects) nil)) trunk/bknr/datastore/src/data/object.lisp
r2584 r2600 265 265 ;;; binary snapshot 266 266 267 (defvar *current-object-slot* nil)268 (defvar *current-slot-relaxed-p* nil)267 (defvar *current-object-slot*) 268 (defvar *current-slot-relaxed-p*) 269 269 270 270 (defun encode-layout (id class slots stream) … … 310 310 (%encode-set-slots slots object stream))) 311 311 312 (defvar *class-rename-hash* (make-hash-table))312 (defvar *class-rename-hash*) 313 313 314 314 (defun find-class-with-interactive-renaming (class-name) … … 327 327 finally (return slot-name))) 328 328 329 (defvar *slot-name-map* nil)329 (defvar *slot-name-map*) 330 330 331 331 (defun rename-slot (class slot-name) … … 521 521 (created-objects 0) 522 522 (read-slots 0) 523 (error t)) 523 (error t) 524 (*class-rename-hash* (make-hash-table)) 525 (*slot-name-map* nil)) 524 526 (unwind-protect 525 527 (progn trunk/bknr/datastore/src/data/package.lisp
r2553 r2600 10 10 (:export #:*store-debug* 11 11 #:*store* 12 #:with-store 12 13 13 14 ;; session trunk/bknr/datastore/src/data/txn.lisp
r2525 r2600 20 20 ;;; store 21 21 22 (defvar *store* nil) 22 (defvar *store*) 23 24 (defmacro with-store ((store &key) &body body) 25 `(let ((*store* ,store)) 26 ,@body)) 23 27 24 28 (defclass store () … … 66 70 (declare (ignore store store-existed-p))) 67 71 68 (defmethod initialize-instance :before ((store store) &key) 69 (restart-case 70 (unless (null *store*) 71 (error "A store is already opened.")) 72 (close-store () 73 :report "Close the opened store." 74 (close-store)))) 75 76 (defmethod initialize-instance :after ((store store) &key) 72 (defmethod initialize-instance :before ((store store) &key (make-default t)) 73 (when make-default 74 (restart-case 75 (when (and (boundp '*store*) 76 *store*) 77 (error "A store is already opened.")) 78 (close-store () 79 :report "Close the opened store." 80 (close-store))))) 81 82 (defmethod initialize-instance :after ((store store) &key (make-default t)) 77 83 (when (stringp (store-directory store)) 78 84 (setf (store-directory store) (pathname (store-directory store)))) 79 (setf *store* store) 80 (let ((store-existed-p (probe-file (store-current-directory store)))) 81 (ensure-store-current-directory store) 82 (dolist (subsystem (store-subsystems store)) 83 (when *store-debug* 84 (format *trace-output* "Initializing subsystem ~A of ~A~%" subsystem store)) 85 (initialize-subsystem subsystem store store-existed-p)) 86 (restore-store store)) 87 (setf (store-state store) :opened)) 85 (when make-default 86 (setf *store* store)) 87 (with-store (store) 88 (let ((store-existed-p (probe-file (store-current-directory store)))) 89 (ensure-store-current-directory store) 90 (dolist (subsystem (store-subsystems store)) 91 (when *store-debug* 92 (format *trace-output* "Initializing subsystem ~A of ~A~%" subsystem store)) 93 (initialize-subsystem subsystem store store-existed-p)) 94 (restore-store store)) 95 (setf (store-state store) :opened))) 88 96 89 97 (defmethod close-store-object ((store store)) … … 402 410 (let ((*disable-sync* t)) 403 411 ,@body) 404 (let ((store *store*)) 405 (with-log-guard () 406 (fsync (store-transaction-log-stream *store*)))))) 412 (with-log-guard () 413 (fsync (store-transaction-log-stream *store*))))) 407 414 408 415 ;;; XXX transaction evaluated twice … … 509 516 (snapshot-store *store*)) 510 517 518 (defun make-backup-directory (store) 519 "Create directory pathname to place backup for STORE in. By 520 default, the current time stamp is used. If that directory already 521 exists, attach a dot and an incrementing number to the directory 522 pathname until a non-existant directory name has been found." 523 (loop with timetag = (timetag) 524 for i = nil then (if i (incf i) 1) 525 for directory = (merge-pathnames (make-pathname :directory (list :relative (format nil "~A~@[.~A~]" timetag i))) 526 (store-directory store)) 527 unless (probe-file directory) 528 return directory)) 529 511 530 (defmethod snapshot-store ((store store)) 512 531 (unless (store-open-p) … … 518 537 (with-store-guard () 519 538 (with-log-guard () 520 (let* ((timetag (timetag)) 521 (backup-directory (merge-pathnames (make-pathname :directory `(:relative ,timetag)) 522 (store-directory store)))) 523 (when (probe-file backup-directory) 524 (error "Backup of datastore already exists! Snapshotting could lead to data loss, aborting.")) 539 (let ((backup-directory (make-backup-directory store))) 525 540 (close-transaction-log-stream store) 526 541 trunk/build.lisp
r2578 r2600 6 6 (load (compile-file "thirdparty/asdf/asdf.lisp")) 7 7 8 (defpackage :build (:use :cl :asdf))8 (defpackage :build (:use :cl)) 9 9 10 10 (in-package :build) … … 23 23 :version nil 24 24 :defaults asd-pathname) 25 *central-registry*25 asdf:*central-registry* 26 26 :test #'equal)) 27 27 (directory (merge-pathnames #p"**/*.asd" directory-path)))) … … 31 31 (mapc #'delete-file (directory (compile-file-pathname #P"**/*.lisp")))) 32 32 33 (defun exit (code) 34 #+sbcl 35 (sb-unix:unix-exit code) 36 #+openmcl 37 (ccl:quit code) 38 #+cmu 39 (unix:unix-exit code)) 40 41 (defun load-all () 42 (asdf:oos 'asdf:load-op :bknr.web) 43 (asdf:oos 'asdf:load-op :quickhoney) 44 (asdf:oos 'asdf:load-op :bos.web) 45 (asdf:oos 'asdf:load-op :lisp-ecoop) 46 (asdf:oos 'asdf:load-op :bknr.datastore.test)) 47 48 (defun build () 49 (clean-fasls) 50 (load-all)) 51 52 (defun test () 53 (load-all) 54 ) 55 33 56 (setup-registry (probe-file *default-pathname-defaults*)) 34 (clean-fasls)35 57 36 ( oos 'load-op :bknr.web)58 (exit 0) 37 59 38 (oos 'load-op :quickhoney)39 (oos 'load-op :bos.web)40 (oos 'load-op :lisp-ecoop)41 60 42 #+sbcl43 (sb-unix:unix-exit 0)44 #+openmcl45 (ccl:quit 0)46 #+cmu47 (unix:unix-exit 0)trunk/test.lisp
r2579 r2600 10 10 (in-package :test) 11 11 12 (asdf:oos 'asdf:load-op :bos.web) 12 13 13 14 #+sbcl trunk/thirdparty/unit-test/unit-test.lisp
r12 r2600 7 7 ;;;; Implements: A simple unit test harness package. 8 8 ;;;; Author: Alain Picard, Memetrics Pty. 9 ;;;; File: $Id : unit-test.lisp,v 1.1 2004/06/23 08:27:10 hans Exp$9 ;;;; File: $Id$ 10 10 11 11 ;;;; Modified for generic unit testing … … 380 380 (format output "~&~D tests total." (+ total-fail total-crash total-pass)) 381 381 (format output "~& ~D passed." total-pass) 382 (when (not (zerop total-fail)) 383 (format output "~& ~D failed." total-fail)) 384 (when (not (zerop total-crash)) 385 (format output "~& ~D crashed." total-crash))) 386 (finish-output output))) 382 (when (not (zerop total-fail)) 383 (format output "~& ~D failed." total-fail)) 384 (when (not (zerop total-crash)) 385 (format output "~& ~D crashed." total-crash)) 386 (finish-output output) 387 (every #'zerop (list total-fail total-crash))))) 387 388 388 389 (defun delete-all-tests ()
