[elephant-devel] Re: Test of 0.9 on LispWorks 5.0 (64-bit) for Linux

Chun Tian (binghe) binghe.lisp at gmail.com
Tue Jun 12 17:13:22 UTC 2007


Sorry, I was wrong.

I check some code, and found these test need a non-nil
*store-controller*, that's why you ask me (open-store *testbdb-spec* first.

Now I can show the real reason (I think):

ELE-TESTS 28 > *store-controller*
NIL

ELE-TESTS 29 > (open-store *testbdb-spec*)
#<BDB-STORE-CONTROLLER /tmp/testdb/>

ELE-TESTS 30 > *store-controller*
#<BDB-STORE-CONTROLLER /tmp/testdb/>

ELE-TESTS 31 > (with-transaction (:store-controller *store-controller*)
      (with-btree-cursor (c index1)
    (multiple-value-bind (has k v)
        (cursor-set-range c 199.5)
      (declare (ignore has k))
      (= (slot1 v) 200))))

Error: No applicable methods for #<STANDARD-GENERIC-FUNCTION SLOT1
41000535A4> with args (NIL)
  1 (continue) Call #<STANDARD-GENERIC-FUNCTION SLOT1 41000535A4> again
  2 (abort) Return to level 0.
  3 Return to top loop level 0.

Type :b for backtrace, :c <option number> to proceed,  or :? for other
options

ELE-TESTS 32 : 1 > :B
Call to ERROR
Call to CERROR
Call to (METHOD NO-APPLICABLE-METHOD (T))
Call to CLOS::GENERIC-FUNCTION-NON-DISCRIMINATOR
Call to (METHOD ELEPHANT::EXECUTE-TRANSACTION
(DB-BDB::BDB-STORE-CONTROLLER T))
Call to FUNCALL
Call to LET
Call to EVAL
Call to CAPI::CAPI-TOP-LEVEL-FUNCTION
Call to CAPI::INTERACTIVE-PANE-TOP-LOOP
Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION MP::PROCESS-SG-FUNCTION
MP::INITIALIZE-PROCESS-STACK)


Chun Tian (binghe) wrote:
> Ian Eslick <eslick at csail.mit.edu> writes:
>
>   
>> Sorry about that last test.  A better way to do it is to set
>> regression-test::*catch-errors* to nil, then run the full regress
>> test.  That will be informative.
>>
>> Thank you,
>> Ian
>>     
>
> Hi, Ian
>
> Can't run the full regress test when set regression-test::*catch-errors*
> to nil, it will halt on first failure test.
>
> But I think I know what's your meaning, set regression-test::*catch-errors*
> to nil can show the real error message and got a full backtrace:
>
> ELE-TESTS 15 > (do-test 'set-range)
>
> Error: No applicable methods for #<STANDARD-GENERIC-FUNCTION ELEPHANT::EXECUTE-TRANSACTION 410003059C> with args (NIL #<anonymous interpreted function 401003A8F4> :PARENT NIL :RETRIES 200)
>   1 (continue) Call #<STANDARD-GENERIC-FUNCTION ELEPHANT::EXECUTE-TRANSACTION 410003059C> again
>   2 (abort) Return to level 0.
>   3 Return to top loop level 0.
>
> Type :b for backtrace, :c <option number> to proceed,  or :? for other options
>
> ELE-TESTS 16 : 1 > :b
> Call to ERROR
> Call to CERROR
> Call to (METHOD NO-APPLICABLE-METHOD (T))
> Call to CLOS::GENERIC-FUNCTION-NON-DISCRIMINATOR
> Call to CLOS::APPLY-NO-APPLICABLE-METHOD
> Call to FUNCALL
> Call to LET
> Call to EVAL
> Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION REGRESSION-TEST::%DO REGRESSION-TEST::DO-ENTRY)
> Call to REGRESSION-TEST::DO-ENTRY
> Call to EVAL
> Call to CAPI::CAPI-TOP-LEVEL-FUNCTION
> Call to CAPI::INTERACTIVE-PANE-TOP-LOOP
> Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION MP::PROCESS-SG-FUNCTION MP::INITIALIZE-PROCESS-STACK)
>
> ELE-TESTS 21 > (do-test 'PGET-BOTH-RANGE)
>
> Error: The error 'MAKE-INSTANCE is called with keyword :FORMAT-CONTROL among the arguments (CONTROLLER-LOST-ERROR :FORMAT-CONTROL "Store controller for specification ~A for object ~A cannot be found." :FORMAT-ARGUMENTS (# #) :OBJECT #<BDB-BTREE-INDEX oid:25> :SPEC (:BDB "/tmp/testdb/")) which is not one of (:SPEC :OBJECT).'
> was raised while coercing (CONTROLLER-LOST-ERROR :FORMAT-CONTROL "Store controller for specification ~A for object ~A cannot be found." :FORMAT-ARGUMENTS (#<BDB-BTREE-INDEX oid:25> (:BDB "/tmp/testdb/")) :OBJECT #<BDB-BTREE-INDEX oid:25> :SPEC (:BDB "/tmp/testdb/")) to a condition.
>   1 (continue) Open a new instance and continue?
>   2 (abort) Return to level 0.
>   3 Return to top loop level 0.
>
> Type :b for backtrace, :c <option number> to proceed,  or :? for other options
>
> ELE-TESTS 22 : 1 > :b
> Call to ERROR
> Call to CERROR
> Call to ELEPHANT::SIGNAL-CONTROLLER-LOST-ERROR
> Call to (METHOD ELEPHANT::GET-CON (PERSISTENT))
> Call to (METHOD MAKE-CURSOR (DB-BDB::BDB-BTREE-INDEX))
> Call to LET
> Call to EVAL
> Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION REGRESSION-TEST::%DO REGRESSION-TEST::DO-ENTRY)
> Call to REGRESSION-TEST::DO-ENTRY
> Call to EVAL
> Call to CAPI::CAPI-TOP-LEVEL-FUNCTION
> Call to CAPI::INTERACTIVE-PANE-TOP-LOOP
> Call to (HARLEQUIN-COMMON-LISP:SUBFUNCTION MP::PROCESS-SG-FUNCTION MP::INITIALIZE-PROCESS-STACK)
>
> ELE-TESTS 25 > (do-test 'PCURSOR)
> Test PCURSOR failed
> Form: (WITH-BTREE-CURSOR (C INDEX3)
>         (VALUES (PCURSOR-PKEY (CURSOR-PFIRST C))
>                 (PCURSOR-PKEY (CURSOR-PNEXT C))
>                 (PCURSOR-PKEY (CURSOR-PNEXT-NODUP C))
>                 (PCURSOR-PKEY (CURSOR-PNEXT-DUP C))
>                 (PCURSOR-PKEY (CURSOR-PPREV C))
>                 (PCURSOR-PKEY (CURSOR-PPREV-NODUP C))
>                 (PCURSOR-PKEY (CURSOR-PLAST C))
>                 (PCURSOR-PKEY (CURSOR-PSET C 300))
>                 (PCURSOR-PKEY (CURSOR-PSET-RANGE C 199.5))
>                 (PCURSOR-PKEY (CURSOR-PGET-BOTH C 10 101))
>                 (PCURSOR-PKEY (CURSOR-PGET-BOTH-RANGE C 11 111.4))))
> Expected values: 0
>                  2
>                  10
>                  11
>                  10
>                  9
>                  9999
>                  3000
>                  2000
>                  101
>                  112
> Actual values: 0
>                2
>                10
>                11
>                10
>                9
>                9999
>                3000
>                NIL
>                101
>                NIL.
> NIL
>
> ELE-TESTS 27 > (do-test 'PCURSOR2)
> Test PCURSOR2 failed
> Form: (WITH-BTREE-CURSOR (C INDEX4)
>         (VALUES (PCURSOR-PKEY (CURSOR-PFIRST C))
>                 (PCURSOR-PKEY (CURSOR-PNEXT C))
>                 (PCURSOR-PKEY (CURSOR-PNEXT-NODUP C))
>                 (PCURSOR-PKEY (CURSOR-PNEXT-DUP C))
>                 (PCURSOR-PKEY (CURSOR-PPREV C))
>                 (PCURSOR-PKEY (CURSOR-PPREV-NODUP C))
>                 (PCURSOR-PKEY (CURSOR-PLAST C))
>                 (PCURSOR-PKEY (CURSOR-PSET C 300))
>                 (PCURSOR-PKEY (CURSOR-PSET-RANGE C 199.5))
>                 (PCURSOR-PKEY (CURSOR-PGET-BOTH C 10 101))
>                 (PCURSOR-PKEY (CURSOR-PGET-BOTH-RANGE C 11 111.4))))
> Expected values: 0
>                  2
>                  10
>                  11
>                  10
>                  9
>                  9999
>                  3000
>                  2000
>                  101
>                  112
> Actual values: 0
>                2
>                10
>                11
>                10
>                9
>                9999
>                3000
>                NIL
>                101
>                NIL.
> NIL
>
> Seems the last two test has no error reported, just wrong answer.
>
> Is this informative?
>
> Thanks.
>
> Chun Tian (binghe)
>
>   
>> On Jun 12, 2007, at 12:35 PM, Chun Tian (binghe) wrote:
>>
>>     
>>> Ian Eslick <eslick at csail.mit.edu> writes:
>>>
>>>       
>>>> Chun Tian,
>>>>
>>>> Were you able to run the tests on PostgreSQL as well?  Did they show
>>>> similar failures?
>>>>         
>>> No. On PostgreSQL, only INDEXING-TIMING failes: (but this test is
>>> much slower than bdb)
>>>
>>> Test INDEXING-TIMING failed
>>> Form: (PROGN
>>>         (MAKE-STRESS-CLASSES)
>>>         (LET ((INSTS (GET-INSTANCES-BY-CLASS 'STRESS-INDEX))
>>>               (START NIL)
>>>               (END NIL)
>>>               (NORMAL-CHECK NIL)
>>>               (INDEX-CHECK NIL)
>>>               (NORMAL-TIME 0)
>>>               (INDEX-TIME 0))
>>>           (WHEN INSTS (DROP-INSTANCES INSTS :SC *STORE-CONTROLLER*))
>>>           (WITH-TRANSACTION NIL
>>>             (NORMAL-STRESS-SETUP *STRESS-COUNT* 'STRESS- 
>>> NORMAL :STRESS2 10))
>>>           (WITH-TRANSACTION NIL
>>>             (INDEXED-STRESS-SETUP *STRESS-COUNT* 'STRESS- 
>>> INDEX :STRESS2 10))
>>>           (SETF START (GET-INTERNAL-RUN-TIME))
>>>           (SETF NORMAL-CHECK (NORMAL-LOOKUP))
>>>           (SETF END (GET-INTERNAL-RUN-TIME))
>>>           (SETF NORMAL-TIME (/ (- END START 0.0) INTERNAL-TIME- 
>>> UNITS-PER-SECOND))
>>>           (SETF START (GET-INTERNAL-RUN-TIME))
>>>           (SETF INDEX-CHECK (INDEX-LOOKUP))
>>>           (SETF END (GET-INTERNAL-RUN-TIME))
>>>           (SETF INDEX-TIME (/ (- END START 0.0) INTERNAL-TIME-UNITS- 
>>> PER-SECOND))
>>>           (FORMAT T
>>>                   "~%Ranged get of ~A/~A objects = Linear: ~A sec
>>> Indexed: ~A sec~%"
>>>                   *RANGE-SIZE*
>>>                   *STRESS-COUNT*
>>>                   NORMAL-TIME
>>>                   INDEX-TIME)
>>>           (AND (EQUAL NORMAL-CHECK INDEX-CHECK) (> NORMAL-TIME
>>> INDEX-TIME))))
>>> Expected value: T
>>> Actual value: NIL.
>>>
>>> And I rerun the BDB test, some fails like before:
>>>
>>> 4 out of 132 total tests failed: SET-RANGE, PGET-BOTH-RANGE, PCURSOR,
>>>    PCURSOR2.
>>>
>>>
>>>       
>>>> The set range features have always been a little fragile, but I'm not
>>>> sure how 64-bits would effect it.  I can try to run Lispworks 32bit
>>>> on Linux as I think there have been some differences between Linux
>>>> and other platforms in the past.
>>>>
>>>> I also noticed that the test 'SET-RANGE' failed with an error.  Could
>>>> you do the following test?
>>>>
>>>> (setf regression-test::*catch-errors* nil)
>>>> (open-store *testbdb-spec*)
>>>> (do-test 'set-range)
>>>>
>>>> And let me know what the error is?
>>>>         
>>> OK, but something wrong happened:
>>>
>>> CL-USER 1 > (clc:clc-require :elephant-tests)
>>>
>>> CL-USER 2 > (in-package :elephant-tests)
>>> #<The ELEPHANT-TESTS package, 459/1024 internal, 0/16 external>
>>>
>>> ELE-TESTS 3 > (clc:clc-require :ele-bdb)
>>>
>>> ELE-TESTS 4 > *testbdb-spec*
>>> (:BDB "/afs/163.org/user/b/binghe/lisp/elephant/tests/testdb/")
>>>
>>> ELE-TESTS 5 > (setf *testbdb-spec* '(:bdb "/tmp/testdb/"))
>>> (:BDB "/tmp/testdb/")
>>>
>>> ELE-TESTS 6 > (setf *default-spec* *testbdb-spec*)
>>> (:BDB "/tmp/testdb/")
>>>
>>> ELE-TESTS 7 > (setf regression-test::*catch-errors* nil)
>>> NIL
>>>
>>> ELE-TESTS 8 > (open-store *testbdb-spec*)
>>> #<BDB-STORE-CONTROLLER /tmp/testdb/>
>>>
>>> ELE-TESTS 9 > (do-test 'set-range)
>>>
>>> Error: The variable INDEX1 is unbound.
>>>   1 (continue) Try evaluating INDEX1 again.
>>>   2 Specify a value to use this time instead of evaluating INDEX1.
>>>   3 Specify a value to set INDEX1 to.
>>>   4 (abort) Return to level 0.
>>>   5 Return to top loop level 0.
>>>
>>> Type :b for backtrace, :c <option number> to proceed,  or :? for
>>> other options
>>>
>>> ELE-TESTS 10 : 1 > :c 5
>>>
>>> ELE-TESTS 11 >
>>>
>>> Sorry, cannot adjust it myself.
>>>
>>>       
>>>> Thank you,
>>>> Ian
>>>>
>>>>         
>
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel
>
>   




More information about the elephant-devel mailing list