Differences From Artifact [66475d1bf4]:
- File db.scm — part of check-in [89fedf98b8] at 2017-09-29 17:56:31 on branch v1.64-keep-running-fix — got further. noticed race condition when not stepping one at a time by setting launcher. noticed xor does not handle preq-fail. (user: bjbarcla, size: 191050) [annotate] [blame] [check-ins using]
To Artifact [1045a4a832]:
- File
db.scm
— part of check-in
[6baf47004a]
at
2017-10-02 17:57:41
on branch v1.64-keep-running-fix
— upgraded mt: to rmt: in runs.scm for status setting, fleshed out statuses that qualify for killed & in progress in db:prereqs-not-met
.. dead end. learnings applied to v1.64-itemflow2 branch. (user: bjbarcla, size: 191713) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
3520 3521 3522 3523 3524 3525 3526 | "STARTED") (else (car all-curr-statuses))))) ;; (print "bad-not-supported: " bad-not-support " all-curr-states: " all-curr-states " all-curr-statuses: " all-curr-states) ;; " newstate: " newstate " newstatus: " newstatus) ;; NB// Pass the db so it is part of the transaction | > | | | | | | | | 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 | "STARTED") (else (car all-curr-statuses))))) ;; (print "bad-not-supported: " bad-not-support " all-curr-states: " all-curr-states " all-curr-statuses: " all-curr-states) ;; " newstate: " newstate " newstatus: " newstatus) ;; NB// Pass the db so it is part of the transaction ;; (debug:print 4 *default-log-port* "BB> tl-test-id="tl-test-id" ; "test-name":"item-path"> bad-not-started="bad-not-started" newstate="newstate" newstatus="newstatus" num-non-completes="num-non-completes" non-completes="non-completes "len(sscs)="(length state-status-counts) " state-status-counts: " ;; (apply conc ;; (map (lambda (x) ;; (conc ;; (with-output-to-string (lambda () (pp (dbr:counts->alist x)))) " | ")) ;; state-status-counts)) ;; ); end debug:print (if tl-test-id (db:test-set-state-status db run-id tl-test-id newstate newstatus #f)) ;; we are still in the transaction - must access the db and not the dbstruct )))))) (mutex-unlock! *db-transaction-mutex*) (if (and test-id state status (equal? status "AUTO")) (db:test-data-rollup dbstruct run-id test-id status)) tr-res))))) |
︙ | ︙ | |||
4096 4097 4098 4099 4100 4101 4102 | running-tests) ;; calling functions want the entire data '()) (if (or (not waitons) (null? waitons)) '() (let* ((unmet-pre-reqs '()) (result '())) | | | | | | 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 | running-tests) ;; calling functions want the entire data '()) (if (or (not waitons) (null? waitons)) '() (let* ((unmet-pre-reqs '()) (result '())) (for-each ;; waitons (lambda (waitontest-name) ;; by getting the tests with matching name we are looking only at the matching test ;; and related sub items ;; next should be using mt:get-tests-for-run? (let ((tests (db:get-tests-for-run-state-status dbstruct run-id waitontest-name)) (ever-seen #f) (parent-waiton-met #f) (item-waiton-met #f)) (for-each ;; item (test record) in waiton (lambda (test) ;; BB- this is the upstream test ;; (if (equal? waitontest-name (db:test-get-testname test)) ;; by defintion this had better be true ... (let* ((state (db:test-get-state test)) (status (db:test-get-status test)) (item-path (db:test-get-item-path test)) ;; BB- this is the upstream itempath (is-completed (equal? state "COMPLETED")) (is-running (member state '("LAUNCHED" "REMOTEHOSTSTART" "RUNNING"))) (is-killed (member state '("KILLREQ" "KILLING" "KILLED"))) (is-ok (member status ok-statuses)) ;; testname-b path-a path-b (same-itempath (db:compare-itempaths ref-test-name item-path ref-item-path itemmaps))) ;; (equal? ref-item-path item-path))) (set! ever-seen #t) (cond ;; case 1, non-item (parent test) is ((and (equal? item-path "") ;; this is the parent test of the waiton being examined |
︙ | ︙ | |||
4144 4145 4146 4147 4148 4149 4150 | (set! parent-waiton-met #t))) ;; normal checking of parent items, any parent or parent item not ok blocks running ((and is-completed (or is-ok (member 'toplevel mode)) ;; toplevel does not block on FAIL (and is-ok (member 'itemmatch mode))) ;; itemmatch blocks on not ok (set! item-waiton-met #t))))) | | > > > > | > > > > > > > > > > > | 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 | (set! parent-waiton-met #t))) ;; normal checking of parent items, any parent or parent item not ok blocks running ((and is-completed (or is-ok (member 'toplevel mode)) ;; toplevel does not block on FAIL (and is-ok (member 'itemmatch mode))) ;; itemmatch blocks on not ok (set! item-waiton-met #t))))) tests) ;; end of item for-each ;; both requirements, parent and item-waiton must be met to NOT add item to ;; prereq's not met list ;; is: (if (not (or (and (equal? ref-item-path "") parent-waiton-met) item-waiton-met)) (set! result (append (if (null? tests) (list waitontest-name) tests) result))) ;; appends the string if the full record is not available ;; was briefly: ;; (if (not ;; (and ;; item-waiton-met ;; (or parent-waiton-met (not (equal? ref-item-path ""))))) ;; ;;add to list ;; (set! result (append (if (null? tests) (list waitontest-name) tests) result))) ;; appends the string if the full record is not available ;; if the test is not found then clearly the waiton is not met... ;; (if (not ever-seen)(set! result (cons waitontest-name result))))) (if (not ever-seen) (set! result (append (if (null? tests)(list waitontest-name) tests) result))))) waitons) ;; TODO: for itemwait and itemmatch mode, filter out failed toplevel prereq test if any items passed. |
︙ | ︙ |