Index: common.scm ================================================================== --- common.scm +++ common.scm @@ -69,16 +69,17 @@ (define (any->number-if-possible val) (let ((num (any->number val))) (if num num val))) (define (patt-list-match item patts) + (debug:print 8 "INFO: patt-list-match item=" item " patts=" patts) (if (and item patts) ;; here we are filtering for matches with -itempatt (let ((res #f)) ;; look through all the item-patts if defined, format is patt1,patt2,patt3 ... wildcard is % (for-each (lambda (patt) (if (string-match - (regexp (string-substitute "%" ".*" "a%b")) ;;(glob->regexp (string-translate patt "%" "*")) + (regexp (string-substitute "%" ".*" patt)) ;;(glob->regexp (string-translate patt "%" "*")) item) (set! res #t))) (string-split patts ",")) res) #t)) Index: megatest.scm ================================================================== --- megatest.scm +++ megatest.scm @@ -378,21 +378,20 @@ (if (args:get-arg "-runall") (general-run-call "-runall" "run all tests" (lambda (db target runname keys keynames keyvallst) - (let ((flags (make-hash-table))) - (for-each (lambda (parm) - (hash-table-set! flags parm (args:get-arg parm))) - (list "-rerun" "-force")) +;; (let ((flags (make-hash-table))) +;; (for-each (lambda (parm) +;; (hash-table-set! flags parm (args:get-arg parm))) +;; (list "-rerun" "-force" "-itempatt")) (runs:run-tests db target runname - (args:get-arg "-testpatt") - (args:get-arg "-itempatt") + (args:get-arg "-runtests") user - flags))))) + args:arg-hash)))) ;; ) ;;====================================================================== ;; run one test ;;====================================================================== @@ -416,13 +415,12 @@ (lambda (db target runname keys keynames keyvallst) (runs:run-tests db target runname (args:get-arg "-runtests") - (args:get-arg "-itempatt") user - (make-hash-table))))) + args:arg-hash)))) ;;====================================================================== ;; Rollup into a run ;;====================================================================== (if (args:get-arg "-rollup") Index: runs.scm ================================================================== --- runs.scm +++ runs.scm @@ -158,11 +158,11 @@ (debug:print 0 "ERROR: Called without all necessary keys") #f)))) ;; This is a duplicate of run-tests (which has been deprecated). Use this one instead of run tests. ;; keyvals -(define (runs:run-tests db target runname test-patts item-patts user flags) +(define (runs:run-tests db target runname test-patts user flags) (let* ((keys (rdb:get-keys db)) (keyvallst (keys:target->keyval keys target)) (run-id (runs:register-run db keys keyvallst runname "new" "n/a" user)) ;; test-name))) (deferred '()) ;; delay running these since they have a waiton clause ;; keepgoing is the defacto modality now, will add hit-n-run a bit later @@ -267,11 +267,11 @@ ;; test-records is a hash table testname:item_path => vector < testname testconfig waitons priority items-info ... > (define (runs:run-tests-queue db run-id runname test-records keyvallst flags) ;; At this point the list of parent tests is expanded ;; NB// Should expand items here and then insert into the run queue. - (debug:print 5 "test-records: " test-records ", keyvallst: " keyvallst) + (debug:print 5 "test-records: " test-records ", keyvallst: " keyvallst " flags: " (hash-table->alist flags)) (let ((sorted-test-names (tests:sort-by-priority-and-waiton test-records)) (item-patts (hash-table-ref/default flags "-itempatt" #f))) (let loop (; (numtimes 0) ;; shouldn't need this (hed (car sorted-test-names)) (tal (cdr sorted-test-names))) @@ -299,11 +299,11 @@ (run:test db run-id runname keyvallst test-record flags #f) (debug:print 1 "INFO: Skipping " (tests:testqueue-get-testname test-record) " " item-path " as it doesn't match " item-patts)) ;; else the run is stuck, temporarily or permanently (let ((newtal (append tal (list hed)))) ;; couldn't run, take a breather - (thread-sleep! 0.5) + (thread-sleep! 0.1) ;; long sleep here - no resources, may as well be patient (loop (car newtal)(cdr newtal)))))) ;; case where an items came in as a list been processed ((and (list? items) ;; thus we know our items are already calculated (not itemdat)) ;; and not yet expanded into the list of things to be done @@ -319,11 +319,11 @@ (lambda (my-itemdat) (let* ((new-test-record (let ((newrec (make-tests:testqueue))) (vector-copy! test-record newrec) newrec)) (my-item-path (item-list->path my-itemdat))) - (if (patt-list-match my-item-path item-patts) ;; yes, we want to process this item + (if (patt-list-match my-item-path item-patts) ;; yes, we want to process this item, NOTE: Should not need this check here! (let ((newtestname (conc hed "/" my-item-path))) ;; test names are unique on testname/item-path (tests:testqueue-set-items! new-test-record #f) (tests:testqueue-set-itemdat! new-test-record my-itemdat) (tests:testqueue-set-item_path! new-test-record my-item-path) (hash-table-set! test-records newtestname new-test-record) @@ -348,11 +348,11 @@ (begin (debug:print 0 "ERROR: The proc from reading the setup did not yield a list - please report this") (exit 1))))) (let ((newtal (append tal (list hed)))) ;; if can't run more tests, lets take a breather - (thread-sleep! 0.5) + (thread-sleep! 0.1) ;; may as well wait a while for resources to free up (loop (car newtal)(cdr newtal))))) ;; this case should not happen, added to help catch any bugs ((and (list? items) itemdat) (debug:print 0 "ERROR: Should not have a list of items in a test and the itemspath set - please report this") @@ -368,11 +368,11 @@ (if (not *runremote*)(exit)) ;; #f) ;; return a #f as a hint that we are done ;; Here we need to check that all the tests remaining to be run are eligible to run ;; and are not blocked by failed (let ((newlst (tests:filter-non-runnable db run-id tal test-records))) ;; i.e. not FAIL, WAIVED, INCOMPLETE, PASS, KILLED, - (thread-sleep! 0.5) + (thread-sleep! 0.1) (if (not (null? newlst)) (loop (car newlst)(cdr newlst)))))))) ;; parent-test is there as a placeholder for when parent-tests can be run as a setup step (define (run:test db run-id runname keyvallst test-record flags parent-test) Index: tests/Makefile ================================================================== --- tests/Makefile +++ tests/Makefile @@ -22,10 +22,11 @@ test4 : cleanprep $(MEGATEST) -runall -reqtarg ubuntu/nfs/none :runname $(RUNNAME)_aa -v $(SERVER) >& aa.log & $(MEGATEST) -runall -reqtarg ubuntu/nfs/none :runname $(RUNNAME)_ab -v $(SERVER) >& ab.log & $(MEGATEST) -runall -reqtarg ubuntu/nfs/none :runname $(RUNNAME)_ac -v $(SERVER) >& ac.log & $(MEGATEST) -runall -reqtarg ubuntu/nfs/none :runname $(RUNNAME)_ad -v $(SERVER) >& ad.log & + $(MEGATEST) -runtests runfirst -itempatt %/1 -reqtarg ubuntu/nfs/none :runname w15.1.09.06_runfirst_1 -v cleanprep : ../*.scm Makefile *.config sqlite3 megatest.db "delete from metadat where var='SERVER';" mkdir -p /tmp/mt_runs /tmp/mt_links cd ..;make install