Author: ksprotte
Date: Mon Jan 21 08:59:03 2008
New Revision: 2375
Modified:
branches/bos/projects/bos/m2/allocation-test.lisp
branches/bos/projects/bos/m2/test-fixtures.lisp
Log:
now using STORE-TEST + WITH-STORE-REOPENINGS to define tests
Modified: branches/bos/projects/bos/m2/allocation-test.lisp
==============================================================================
--- branches/bos/projects/bos/m2/allocation-test.lisp (original)
+++ branches/bos/projects/bos/m2/allocation-test.lisp Mon Jan 21 08:59:03 2008
@@ -1,50 +1,56 @@
(in-package :bos.test)
(in-suite :bos.test.allocation-area)
-(test allocation-area.none-at-startup
- (with-fixture empty-store ()
- (is (null (class-instances 'bos.m2:allocation-area)))))
+(store-test allocation-area.none-at-startup
+ (is (null (class-instances 'bos.m2:allocation-area))))
-(test allocation-area.no-intersection
- (with-fixture empty-store ()
+(store-test allocation-area.no-intersection
+ (with-store-reopenings ()
(finishes (make-allocation-rectangle 0 0 100 100))
(signals (error) (make-allocation-rectangle 0 0 100 100))))
-(test allocation-area.one-contract.no-cache
- (with-fixture empty-store ()
- (let ((area (make-allocation-rectangle 0 0 100 100))
- (sponsor (make-sponsor :login "test-sponsor"))
- (m2-count 10))
+(store-test allocation-area.one-contract.no-cache
+ (let ((area (make-allocation-rectangle 0 0 100 100))
+ (sponsor (make-sponsor :login "test-sponsor"))
+ (m2-count 10))
+ (with-store-reopenings (area sponsor)
(finishes (make-contract sponsor m2-count))
(is (= (- (* 100 100) m2-count) (allocation-area-free-m2s area))))))
-(test allocation-area.one-contract.with-cache.1
- (with-fixture empty-store ()
- (let ((area (make-allocation-rectangle 0 0 2 5))
- (sponsor (make-sponsor :login "test-sponsor"))
- (m2-count 10))
- (with-transaction ()
- (bos.m2::activate-allocation-area area))
+(store-test allocation-area.one-contract.with-cache.1
+ (let ((area (make-allocation-rectangle 0 0 2 5))
+ (sponsor (make-sponsor :login "test-sponsor"))
+ (m2-count 10))
+ (with-transaction ()
+ (bos.m2::activate-allocation-area area))
+ (with-store-reopenings (area sponsor)
(finishes (allocation-area-free-m2s area))
- (is (= 1 (bos.m2.allocation-cache:free-regions-count)))
- (reopen-store (:snapshot nil) area sponsor)
+ (is (= 1 (bos.m2.allocation-cache:free-regions-count)))
(is-true (bos.m2.allocation-cache:find-exact-match 10))
(finishes (make-contract sponsor m2-count))
(is (zerop (allocation-area-free-m2s area))))))
-(test allocation-area.one-contract.allocate-all-without-cache
- (with-fixture empty-store ()
- (let ((area (make-allocation-rectangle 0 0 100 100))
- (sponsor (make-sponsor :login "test-sponsor"))
- (m2-count (* 100 100)))
+(store-test allocation-area.one-contract.allocate-all-without-cache
+ (let ((area (make-allocation-rectangle 0 0 100 100))
+ (sponsor (make-sponsor :login "test-sponsor"))
+ (m2-count (* 100 100)))
+ (with-store-reopenings (area sponsor)
(finishes (make-contract sponsor m2-count))
(signals (error) (make-contract sponsor m2-count))
(is (zerop (allocation-area-free-m2s area))))))
-(test allocation-area.one-contract.notany-m2-contract
- (with-fixture empty-store ()
- (let ((area (make-allocation-rectangle 0 0 8 8))
- (sponsor (make-sponsor :login "test-sponsor")))
+(store-test allocation-area.one-contract.notany-m2-contract
+ (let ((area (make-allocation-rectangle 0 0 8 8))
+ (sponsor (make-sponsor :login "test-sponsor")))
+ (with-store-reopenings (area sponsor)
+ (finishes (make-contract sponsor 10))
+ (is (= (- 64 10) (allocation-area-free-m2s area)))
+ (signals (error) (make-contract sponsor 64)))))
+
+(store-test allocation-area.one-contract.notany-m2-contract
+ (let ((area (make-allocation-rectangle 0 0 8 8))
+ (sponsor (make-sponsor :login "test-sponsor")))
+ (with-store-reopenings (area sponsor)
(finishes (make-contract sponsor 10))
(is (= (- 64 10) (allocation-area-free-m2s area)))
(signals (error) (make-contract sponsor 64)))))
Modified: branches/bos/projects/bos/m2/test-fixtures.lisp
==============================================================================
--- branches/bos/projects/bos/m2/test-fixtures.lisp (original)
+++ branches/bos/projects/bos/m2/test-fixtures.lisp Mon Jan 21 08:59:03 2008
@@ -26,6 +26,22 @@
(collect store-object-var)
(collect `(find-store-object ,id-var)))))))
+(defmacro %with-store-reopenings ((&key snapshot bypass)
+ (&rest store-object-vars) &body body)
+ `(progn
+ ,@(if bypass
+ body
+ (iter
+ (for form in body)
+ (unless (first-time-p)
+ (collect `(reopen-store (:snapshot ,snapshot) ,@store-object-vars)))
+ (collect form)))))
+
+(defmacro with-store-reopenings ((&rest store-object-vars) &body body)
+ `(%with-store-reopenings (:snapshot snapshot :bypass bypass)
+ (,@store-object-vars)
+ ,@body))
+
(def-fixture empty-store ()
(unwind-protect
(progn
@@ -35,3 +51,19 @@
(&body))
(close-store)))
+(defmacro store-test (name &body body)
+ `(progn
+ ,@(iter
+ (for config in '((:suffix reopenings-no-snapshot :snapshot nil :bypass nil)
+ (:suffix reopenings-with-snapshot :snapshot t :bypass nil)
+ (:suffix nil :snapshot nil :bypass t)))
+ (for test-name = (if (getf config :suffix)
+ (intern (format nil "~a.~a" name (getf config :suffix)))
+ name))
+ (collect `(test ,test-name
+ (with-fixture empty-store ()
+ (let ((snapshot ,(getf config :snapshot))
+ (bypass ,(getf config :bypass)))
+ (declare (ignorable snapshot bypass))
+ ,@body)))))))
+