Sorry for the delay, I'm under pressure for some other work.

What is happening is that you aren't getting a proper value back from the index. Can you do a (elephant::dump-btree index1) after running the regression suite?

Ian


On Jun 12, 2007, at 1:13 PM, Chun Tian (binghe) wrote:

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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel



_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

Reply via email to