Index: api.scm ================================================================== --- api.scm +++ api.scm @@ -133,11 +133,11 @@ ((delete-test-records) (apply db:delete-test-records dbstruct params)) ((delete-old-deleted-test-records) (apply db:delete-old-deleted-test-records dbstruct params)) ((test-set-status-state) (apply db:test-set-status-state dbstruct params)) ((test-set-top-process-pid) (apply db:test-set-top-process-pid dbstruct params)) ((roll-up-pass-fail-counts) (apply db:roll-up-pass-fail-counts dbstruct params)) - ((update-pass-fail-counts) (apply db:general-call dbstruct 'update-pass-fail-counts params)) + ;; ((update-pass-fail-counts) (apply db:general-call dbstruct 'update-pass-fail-counts params)) ((top-test-set-per-pf-counts) (apply db:top-test-set-per-pf-counts dbstruct params)) ((test-set-archive-block-id) (apply db:test-set-archive-block-id dbstruct params)) ;; RUNS ((register-run) (apply db:register-run dbstruct params)) Index: dashboard-tests.scm ================================================================== --- dashboard-tests.scm +++ dashboard-tests.scm @@ -209,14 +209,10 @@ (store-label "HostName" (iup:label ;; (sdb:qry 'getstr (db:test-get-host testdat) ;; ) #:expand "HORIZONTAL") (lambda (testdat)(db:test-get-host testdat))) - (store-label "Uname" - (iup:label " " #:expand "HORIZONTAL") - (lambda (testdat) ;; (sdb:qry 'getstr - (db:test-get-uname testdat))) ;; ) (store-label "DiskFree" (iup:label (conc (db:test-get-diskfree testdat)) #:expand "HORIZONTAL") (lambda (testdat)(conc (db:test-get-diskfree testdat)))) (store-label "CPULoad" (iup:label (conc (db:test-get-cpuload testdat)) #:expand "HORIZONTAL") @@ -228,11 +224,30 @@ (iup:label (conc (db:test-get-final_logf testdat)) #:expand "HORIZONTAL") (lambda (testdat)(conc (db:test-get-final_logf testdat)))) (store-label "ProcessId" (iup:label (conc (db:test-get-process_id testdat)) #:expand "HORIZONTAL") (lambda (testdat)(conc (db:test-get-process_id testdat)))) + (store-label "Uname" + (iup:label " " #:expand "HORIZONTAL") ;; #:wordwrap "YES") + (lambda (testdat) ;; (sdb:qry 'getstr + (db:test-get-uname testdat))) ;; ) ))))) + +;; if there is a submegatest create a button to launch dashboard in that area +;; +(define (submegatest-panel dbstruct keydat testdat runname testconfig) + (let* ((subarea (configf:lookup testconfig "setup" "submegatest")) + (area-exists (and subarea (file-exists? subarea)))) + (debug:print-info 0 "Megatest subarea=" subarea ", area-exists=" area-exists) + (if subarea + (iup:frame + #:title "Megatest Run Info" ; #:expand "YES" + (iup:button + "Launch Dashboard" + #:action (lambda (obj) + (system (conc "cd " subarea ";env -i PATH=$PATH DISPLAY=$DISPLAY HOME=$HOME USER=$USER dashboard &"))))) + (iup:vbox)))) ;; use a global for setting the buttons colors ;; state status teststeps (define *state-status* (vector #f #f #f)) (define (update-state-status-buttons testdat) @@ -412,10 +427,11 @@ (if (not testdat) (begin (debug:print 2 "ERROR: No test data found for test " test-id ", exiting") (exit 1)) (let* (;; (run-id (if testdat (db:test-get-run_id testdat) #f)) + (test-registry (tests:get-all)) (keydat (if testdat (db:get-key-val-pairs dbstruct run-id) #f)) (rundat (if testdat (db:get-run-info dbstruct run-id) #f)) (runname (if testdat (db:get-value-by-header (db:get-rows rundat) (db:get-header rundat) "runname") #f)) @@ -428,10 +444,11 @@ logfile)) ;; (testdat-path (conc rundir "/testdat.db")) ;; this gets recalculated until found (teststeps (if testdat (tests:get-compressed-steps dbstruct run-id test-id) '())) (testfullname (if testdat (db:test-get-fullname testdat) "Gathering data ...")) (testname (if testdat (db:test-get-testname testdat) "n/a")) + ;; (tests:get-testconfig testdat testname 'return-procs)) (testmeta (if testdat (let ((tm (db:testmeta-get-record dbstruct testname))) (if tm tm (make-db:testmeta))) (make-db:testmeta))) @@ -440,10 +457,26 @@ ;; (conc ":" (car keyval) " " (cadr keyval))) (cadr keyval)) keydat) "/")) (item-path (db:test-get-item-path testdat)) + ;; this next block was added to fix a bug where variables were + ;; needed. Revisit this. + (runconfig (let ((runconfigf (conc *toppath* "/runconfigs.config"))) + (if (file-exists? runconfigf) + (handle-exceptions + exn + #f ;; do nothing, just keep on trucking .... + (setup-env-defaults runconfigf run-id (make-hash-table) keydat environ-patt: keystring)) + (make-hash-table)))) + (testconfig (begin + ;; (runs:set-megatest-env-vars run-id inrunname: runname testname: test-name itempath: item-path) + (runs:set-megatest-env-vars run-id inkeyvals: keydat inrunname: runname intarget: keystring testname: testname itempath: item-path) ;; these may be needed by the launching process + (handle-exceptions + exn + #f + (tests:get-testconfig (db:test-get-testname testdat) test-registry #t)))) (viewlog (lambda (x) (if (file-exists? logfile) ;(system (conc "firefox " logfile "&")) (dashboard-tests:run-html-viewer logfile) (message-window (conc "File " logfile " not found"))))) @@ -570,11 +603,11 @@ " -testpatt " (conc testname "/" (if (equal? item-path "") "%" item-path)) " -v")))) (clean-run-execute (lambda (x) - (let ((cmd (conc "megatest -remove-runs -target " keystring " -runname " runname + (let ((cmd (conc "bmegatest -remove-runs -target " keystring " -runname " runname " -testpatt " (conc testname "/" (if (equal? item-path "") "%" item-path)) ";megatest -target " keystring " -runname " runname " -runtests " (conc testname "/" (if (equal? item-path "") @@ -612,11 +645,13 @@ ;; The run and test info (iup:hbox ; #:expand "YES" (run-info-panel dbstruct keydat testdat runname) (test-info-panel testdat store-label widgets) (test-meta-panel testmeta store-meta)) - (host-info-panel testdat store-label) + (iup:hbox + (host-info-panel testdat store-label) + (submegatest-panel dbstruct keydat testdat runname testconfig)) ;; The controls (iup:frame #:title "Actions" (iup:vbox (iup:hbox (iup:button "View Log" #:action viewlog #:size "80x") Index: dashboard.scm ================================================================== --- dashboard.scm +++ dashboard.scm Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -1724,45 +1724,45 @@ ;; Use: (db:get-value-by-header (db:get-header runinfo)(db:get-rows runinfo)) ;; to extract info from the structure returned ;; ;; NOTE: THIS IS COMPLETELY UNFINISHED. IT GOES WITH rmt:get-get-paths-matching-keynames ;; -(define (db:get-run-ids-matching dbstruct keynames target res) -;; (define (db:get-runs-by-patt dbstruct keys runnamepatt targpatt offset limit) ;; test-name) - (let* ((tmp (runs:get-std-run-fields keys '("id" "runname" "state" "status" "owner" "event_time"))) - (keystr (car tmp)) - (header (cadr tmp)) - (res '()) - (key-patt "") - (runwildtype (if (substring-index "%" runnamepatt) "like" "glob")) - (qry-str #f) - (keyvals (if targpatt (keys:target->keyval keys targpatt) '()))) - (for-each (lambda (keyval) - (let* ((key (car keyval)) - (patt (cadr keyval)) - (fulkey (conc ":" key)) - (wildtype (if (substring-index "%" patt) "like" "glob"))) - (if patt - (set! key-patt (conc key-patt " AND " key " " wildtype " '" patt "'")) - (begin - (debug:print 0 "ERROR: searching for runs with no pattern set for " fulkey) - (exit 6))))) - keyvals) - (set! qry-str (conc "SELECT " keystr " FROM runs WHERE state != 'deleted' AND runname " runwildtype " ? " key-patt " ORDER BY event_time " - (if limit (conc " LIMIT " limit) "") - (if offset (conc " OFFSET " offset) "") - ";")) - (debug:print-info 4 "runs:get-runs-by-patt qry=" qry-str " " runnamepatt) - (db:with-db dbstruct #f #f ;; reads db, does not write to it. - (lambda (db) - (sqlite3:for-each-row - (lambda (a . r) - (set! res (cons (list->vector (cons a r)) res))) - (db:get-db dbstruct #f) - qry-str - runnamepatt))) - (vector header res))) +;; (define (db:get-run-ids-matching dbstruct keynames target res) +;; ;; (define (db:get-runs-by-patt dbstruct keys runnamepatt targpatt offset limit) ;; test-name) +;; (let* ((tmp (runs:get-std-run-fields keys '("id" "runname" "state" "status" "owner" "event_time"))) +;; (keystr (car tmp)) +;; (header (cadr tmp)) +;; (res '()) +;; (key-patt "") +;; (runwildtype (if (substring-index "%" runnamepatt) "like" "glob")) +;; (qry-str #f) +;; (keyvals (if targpatt (keys:target->keyval keys targpatt) '()))) +;; (for-each (lambda (keyval) +;; (let* ((key (car keyval)) +;; (patt (cadr keyval)) +;; (fulkey (conc ":" key)) +;; (wildtype (if (substring-index "%" patt) "like" "glob"))) +;; (if patt +;; (set! key-patt (conc key-patt " AND " key " " wildtype " '" patt "'")) +;; (begin +;; (debug:print 0 "ERROR: searching for runs with no pattern set for " fulkey) +;; (exit 6))))) +;; keyvals) +;; (set! qry-str (conc "SELECT " keystr " FROM runs WHERE state != 'deleted' AND runname " runwildtype " ? " key-patt " ORDER BY event_time " +;; (if limit (conc " LIMIT " limit) "") +;; (if offset (conc " OFFSET " offset) "") +;; ";")) +;; (debug:print-info 4 "runs:get-runs-by-patt qry=" qry-str " " runnamepatt) +;; (db:with-db dbstruct #f #f ;; reads db, does not write to it. +;; (lambda (db) +;; (sqlite3:for-each-row +;; (lambda (a . r) +;; (set! res (cons (list->vector (cons a r)) res))) +;; (db:get-db dbstruct #f) +;; qry-str +;; runnamepatt))) +;; (vector header res))) ;; Get all targets from the db ;; (define (db:get-targets dbstruct) (let* ((res '()) @@ -2370,11 +2370,12 @@ (sqlite3:first-result db (conc "SELECT count(id) FROM tests WHERE state in ('RUNNING','LAUNCHED','REMOTEHOSTSTART') AND testname in ('" (string-intersperse testnames "','") "') AND NOT (uname = 'n/a' AND item_path='');")) ;; should this include the (uname = 'n/a' ...) ??? - ))))))) + )) + 0))))) ;; DEBUG FIXME - need to merge this v.155 query correctly ;; AND testname in (SELECT testname FROM test_meta WHERE jobgroup=?) ;; AND NOT (uname = 'n/a' AND item_path = '');" ;; done with run when: @@ -2662,10 +2663,12 @@ ;; Now rollup the counts to the central megatest.db (db:general-call dbdat 'pass-fail-counts (list pass-count fail-count test-id)) ;; if the test is not FAIL then set status based on the fail and pass counts. (db:general-call dbdat 'test_data-pf-rollup (list test-id test-id test-id test-id)))) +;; NOT USED!? +;; (define (db:csv->test-data dbstruct run-id test-id csvdata) (debug:print 4 "test-id " test-id ", csvdata: " csvdata) (let* ((dbdat (db:get-db dbstruct run-id)) (db (db:dbdat-get-db dbdat)) (csvlist (csv->list (make-csv-reader @@ -2693,11 +2696,11 @@ ", expected: " expected " tol: " tol " units: " units " status: " status " comment: " comment " type: " type) (if (and (or (not expected)(equal? expected "")) (or (not tol) (equal? expected "")) (or (not units) (equal? expected ""))) - (let-values (((new-expected new-tol new-units)(tdb:get-prev-tol-for-test tdb test-id category variable))) + (let-values (((new-expected new-tol new-units)(tdb:get-prev-tol-for-test #f test-id category variable))) (set! expected new-expected) (set! tol new-tol) (set! units new-units))) (debug:print 4 "AFTER: category: " category " variable: " variable " value: " value @@ -2942,21 +2945,21 @@ '(top-test-set-per-pf-counts "UPDATE tests SET state=CASE WHEN (SELECT count(id) FROM tests WHERE testname=? AND item_path != '' - AND status IN ('INCOMPLETE') - AND state in ('RUNNING','NOT_STARTED','LAUNCHED','REMOTEHOSTSTART')) > 0 THEN 'RUNNING' + AND status NOT IN ('n/a') + AND state in ('NOT_STARTED')) > 0 THEN 'UNKNOWN' WHEN (SELECT count(id) FROM tests WHERE testname=? AND item_path != '' - AND status NOT IN ('TEN_STRIKES','BLOCKED') + AND (status NOT IN ('TEN_STRIKES','BLOCKED') OR status IN ('INCOMPLETE')) AND state in ('RUNNING','NOT_STARTED','LAUNCHED','REMOTEHOSTSTART')) > 0 THEN 'RUNNING' WHEN (SELECT count(id) FROM tests WHERE testname=? AND item_path != '' - AND state != 'COMPLETED') = 0 THEN 'COMPLETED' + AND state NOT IN ('COMPLETED','DELETED')) = 0 THEN 'COMPLETED' WHEN (SELECT count(id) FROM tests WHERE testname=? AND item_path != '' AND state = 'NOT_STARTED') > 0 THEN 'NOT_STARTED' ELSE 'UNKNOWN' END, @@ -3113,12 +3116,12 @@ ;; (define (db:get-matching-previous-test-run-records dbstruct run-id test-name item-path) (let* ((dbdat (db:get-db dbstruct #f)) (db (db:dbdat-get-db dbdat)) (keys (db:get-keys db)) - (selstr (string-intersperse (map (lambda (x)(vector-ref x 0)) keys) ",")) - (qrystr (string-intersperse (map (lambda (x)(conc (vector-ref x 0) "=?")) keys) " AND ")) + (selstr (string-intersperse keys ",")) + (qrystr (string-intersperse (map (lambda (x)(conc x "=?")) keys) " AND ")) (keyvals #f) (tests-hash (make-hash-table))) ;; first look up the key values from the run selected by run-id (db:delay-if-busy dbdat) (sqlite3:for-each-row @@ -3139,11 +3142,11 @@ (debug:print 4 "selstr: " selstr ", qrystr: " qrystr ", keyvals: " keyvals ", previous run ids found: " prev-run-ids) (if (null? prev-run-ids) '() ;; no previous runs? return null (let loop ((hed (car prev-run-ids)) (tal (cdr prev-run-ids))) - (let ((results (db:get-tests-for-run dbstruct run-id hed (conc test-name "/" item-path) '() '() #f #f #f #f #f #f))) + (let ((results (db:get-tests-for-run dbstruct hed (conc test-name "/" item-path) '() '() #f #f #f #f #f #f))) (debug:print 4 "Got tests for run-id " run-id ", test-name " test-name ", item-path " item-path " results: " (intersperse results "\n")) ;; Keep only the youngest of any test/item combination (for-each (lambda (testdat) @@ -3266,13 +3269,13 @@ ;; A routine to map itempaths using a itemmap (define (db:compare-itempaths patha pathb itemmap) (debug:print-info 6 "ITEMMAP is " itemmap) (if itemmap - (let ((path-b-mapped (db:convert-test-itempath pathb itemmap))) - (debug:print-info 6 "ITEMMAP is " itemmap ", path: " pathb ", mapped path: " path-b-mapped) - (equal? patha pathb)) + (let ((pathb-mapped (db:multi-pattern-apply pathb itemmap))) + (debug:print-info 6 "ITEMMAP is " itemmap ", path: " pathb ", mapped path: " pathb-mapped) + (equal? patha pathb-mapped)) (equal? patha pathb))) ;; (let* ((mapparts (string-split itemmap)) ;; (pattern (car mapparts)) ;; (replacement (if (> (length mapparts) 1) (cadr mapparts) ""))) @@ -3281,10 +3284,13 @@ ;; (string-substitute pattern replacement pathb)) ;; (equal? (string-substitute pattern "" patha) ;; (string-substitute pattern "" pathb)))) ;; A routine to convert test/itempath using a itemmap +;; NOTE: to process only an itempath (i.e. no prepended testname) +;; just call db:multi-pattern-apply +;; (define (db:convert-test-itempath path-in itemmap) (debug:print-info 6 "ITEMMAP is " itemmap) (let* ((path-parts (string-split path-in "/")) (test-name (if (null? path-parts) "" (car path-parts))) (item-path (string-intersperse (if (null? path-parts) '() (cdr path-parts)) "/"))) @@ -3348,11 +3354,11 @@ (item-path (db:test-get-item-path test)) (is-completed (equal? state "COMPLETED")) (is-running (equal? state "RUNNING")) (is-killed (equal? state "KILLED")) (is-ok (member status '("PASS" "WARN" "CHECK" "WAIVED" "SKIP"))) - (same-itempath (db:compare-itempaths ref-item-path item-path itemmap))) ;; (equal? ref-item-path item-path))) + (same-itempath (db:compare-itempaths item-path ref-item-path itemmap))) ;; (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 is-completed Index: docs/manual/Makefile ================================================================== --- docs/manual/Makefile +++ docs/manual/Makefile @@ -13,11 +13,11 @@ # asciidoc -b html5 -a icons -a iconsdir=$(DISPATH)/images/icons -a toc2 design_spec.txt # all : server.ps megatest_manual.html client.ps -megatest_manual.html : megatest_manual.txt getting_started.txt writing_tests.txt reference.txt ../plan.txt howto.txt +megatest_manual.html : megatest_manual.txt getting_started.txt writing_tests.txt reference.txt ../plan.txt howto.txt *png asciidoc -b html5 -a icons -a iconsdir=$(DISPATH)/images/icons -a toc2 megatest_manual.txt # dos2unix megatest_manual.html server.ps : server.dot dot -Tps server.dot > server.ps ADDED docs/manual/complex-itemmap.dot Index: docs/manual/complex-itemmap.dot ================================================================== --- /dev/null +++ docs/manual/complex-itemmap.dot @@ -0,0 +1,35 @@ +digraph G { + + // put client after server so server_start node is visible + // + subgraph cluster_2 { + node [style=filled,shape=box]; + + "test1" -> test2; + runremote_lookup_server -> login_attempt [label="have server"]; + runremote_lookup_server -> monitordb_lookup_server [label="no server"]; + + monitordb_lookup_server -> login_attempt [label="have server"]; + monitordb_lookup_server -> server_start_remote [label="no server"]; + + server_start_remote -> delay_2_sec; + delay_2_sec -> runremote_lookup_server; + + login_attempt -> "rmt:send-receive_start" [label="login sucessful"]; + "rmt:send-receive_start" -> "rmt:send-receive_start"; + + "rmt:send-receive_start" -> runremote_lookup_server [label=exception]; + login_attempt -> clear_runremote [label="login failed"]; + + "remove_running > 5s" -> runremote_lookup_server; + + subgraph cluster_3 { + node [style=filled]; + clear_runremote -> "remove_running > 5s"; + } + + label = "client:setup"; + color=green; + } + +} ADDED docs/manual/itemmap.fig Index: docs/manual/itemmap.fig ================================================================== --- /dev/null +++ docs/manual/itemmap.fig @@ -0,0 +1,129 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +0 32 #c6b797 +0 33 #eff8ff +0 34 #dccba6 +0 35 #404040 +0 36 #808080 +0 37 #c0c0c0 +0 38 #e0e0e0 +0 39 #8e8f8e +0 40 #aaaaaa +0 41 #555555 +0 42 #c7c3c7 +0 43 #565151 +0 44 #8e8e8e +0 45 #d7d7d7 +0 46 #85807d +0 47 #d2d2d2 +0 48 #3a3a3a +0 49 #4573aa +0 50 #aeaeae +0 51 #7b79a5 +0 52 #444444 +0 53 #73758c +0 54 #f7f7f7 +0 55 #414541 +0 56 #635dce +0 57 #bebebe +0 58 #515151 +0 59 #e7e3e7 +0 60 #000049 +0 61 #797979 +0 62 #303430 +0 63 #414141 +0 64 #c7b696 +6 3600 2700 4455 3555 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 3600 2700 4050 2700 4050 3150 3600 3150 3600 2700 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 3690 3150 3690 3285 4185 3285 4185 2790 4050 2790 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 3825 3285 3825 3420 4320 3420 4320 2925 4185 2925 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 3960 3420 3960 3555 4455 3555 4455 3060 4320 3060 +-6 +6 1845 4500 2700 5355 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1845 4500 2295 4500 2295 4950 1845 4950 1845 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1935 4950 1935 5085 2430 5085 2430 4590 2295 4590 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2070 5085 2070 5220 2565 5220 2565 4725 2430 4725 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2205 5220 2205 5355 2700 5355 2700 4860 2565 4860 +-6 +6 1800 900 2655 1755 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1800 900 2250 900 2250 1350 1800 1350 1800 900 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1890 1350 1890 1485 2385 1485 2385 990 2250 990 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2025 1485 2025 1620 2520 1620 2520 1125 2385 1125 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2160 1620 2160 1755 2655 1755 2655 1260 2520 1260 +-6 +6 5400 900 6255 1755 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5400 900 5850 900 5850 1350 5400 1350 5400 900 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5490 1350 5490 1485 5985 1485 5985 990 5850 990 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5625 1485 5625 1620 6120 1620 6120 1125 5985 1125 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5760 1620 5760 1755 6255 1755 6255 1260 6120 1260 +-6 +6 5400 4500 6255 5355 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5400 4500 5850 4500 5850 4950 5400 4950 5400 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5490 4950 5490 5085 5985 5085 5985 4590 5850 4590 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5625 5085 5625 5220 6120 5220 6120 4725 5985 4725 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5760 5220 5760 5355 6255 5355 6255 4860 6120 4860 +-6 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5355 4455 4500 3600 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5400 1800 4500 2700 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 3600 3600 2700 4500 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 3510 2610 2790 1890 +2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1530 675 3060 675 3060 5580 1530 5580 1530 675 +2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 3195 675 4815 675 4815 5580 3195 5580 3195 675 +2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4950 675 6660 675 6660 5580 4950 5580 4950 675 +2 2 0 2 7 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 0 45 8550 45 8550 7245 0 7245 0 45 +2 1 0 2 23 7 50 -1 -1 0.000 0 0 -1 1 0 3 + 0 0 1.00 60.00 120.00 + 5040 6300 4050 5175 4050 3690 +2 1 0 2 23 7 50 -1 -1 0.000 0 0 -1 1 0 3 + 0 0 1.00 60.00 120.00 + 1080 5850 1080 2115 1755 1530 +4 0 0 50 -1 0 16 0.0000 4 135 360 1935 4725 TstB\001 +4 0 0 50 -1 0 16 0.0000 4 135 360 5445 1170 TstC\001 +4 0 0 50 -1 0 16 0.0000 4 135 360 5445 4770 TstD\001 +4 0 0 50 -1 0 16 0.0000 4 135 360 3600 2970 TstE\001 +4 0 0 50 -1 0 16 0.0000 4 135 360 1845 1170 TstA\001 +4 0 0 50 -1 0 16 0.0000 4 180 1260 900 6210 [requirements]\001 +4 0 0 50 -1 0 16 0.0000 4 135 990 900 6405 waiton TstE\001 +4 0 0 50 -1 0 16 0.0000 4 180 2070 900 6600 itemap foo/(\\d+) \\1/bar\001 +4 0 0 50 -1 0 16 0.0000 4 180 810 5220 6165 [itemmap]\001 +4 0 0 50 -1 0 16 0.0000 4 150 1260 5220 6360 TstC .*/ foo/\001 +4 0 0 50 -1 0 16 0.0000 4 165 1080 5220 6555 TstD ab/ xy/\001 ADDED docs/manual/itemmap.png Index: docs/manual/itemmap.png ================================================================== --- /dev/null +++ docs/manual/itemmap.png cannot compute difference between binary files Index: docs/manual/megatest_manual.html ================================================================== --- docs/manual/megatest_manual.html +++ docs/manual/megatest_manual.html @@ -1145,10 +1145,18 @@
[setup] reruns 5
[setup] +runtimelim 1h 2m 3s # this will automatically kill the test if it runs for more than 1h 2m and 3s+
Complex mappings can be handled with the [itemmap] section
[requirements] # With a toplevel test you may wish to generate your list @@ -1242,11 +1266,11 @@ # # waiton #{shell get-valid-tests-to-run.sh}
runtimelim 1h 2m 3s # this will automatically kill the test if it runs for more than 1h 2m and 3s