Overview
Comment: | Merged v1.60 into decoupled-tests |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | v1.60-decoupled-tests |
Files: | files | file ages | folders |
SHA1: |
fc19888e7f92fbcb6036313a72726636 |
User & Date: | matt on 2015-08-27 23:58:44 |
Other Links: | branch diff | manifest | tags |
Context
2015-08-28
| ||
00:08 | create directories on demand Closed-Leaf check-in: f19ae0b363 user: matt tags: v1.60-decoupled-tests | |
2015-08-27
| ||
23:58 | Merged v1.60 into decoupled-tests check-in: fc19888e7f user: matt tags: v1.60-decoupled-tests | |
23:47 | Allow overriding num reruns from config, added to docs check-in: 8c4b1ebbb6 user: matt tags: v1.60 | |
2015-08-14
| ||
09:08 | Added tests dir back check-in: ad3e213115 user: matt tags: v1.60-decoupled-tests | |
Changes
Modified datashare-testing/.sd.config from [3db28d187c] to [567a2bce44].
1 2 3 4 5 6 7 8 9 10 11 12 | # Read in the users vars first (so the offical data cannot be overridden [include ~/.datashare.config] # Read in local overrides [include datashare.config] # Replace [storage] with settings entry - more secure [settings] storage /tmp/#{getenv USER}/datashare/disk1 \ /tmp/#{getenv USER}/datashare/disk2 | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # Read in the users vars first (so the offical data cannot be overridden [include ~/.datashare.config] # Read in local overrides [include datashare.config] # Replace [storage] with settings entry - more secure [settings] storage /tmp/#{getenv USER}/datashare/disk1 \ /tmp/#{getenv USER}/datashare/disk2 basepath #{scheme (or (getenv "BASEPATH") "/tmp/#{getenv USER}")} [areas] synthesis asic/synthesis verilog asic/verilog customlibs custom/oalibs megatest tools/megatest |
︙ | ︙ |
Modified datashare.scm from [2abd8aec1c] to [578f007a04].
︙ | ︙ | |||
653 654 655 656 657 658 659 | (iup:button "Pushme" #:expand "YES" )))) (define (datashare:gui configdat) (iup:show (iup:dialog | | | 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 | (iup:button "Pushme" #:expand "YES" )))) (define (datashare:gui configdat) (iup:show (iup:dialog #:title (conc "DataShare dashboard " (current-user-name) ":" (current-directory)) #:menu (datashare:main-menu) (let* ((tabs (iup:tabs #:tabchangepos-cb (lambda (obj curr prev) (set! *datashare:current-tab-number* curr)) (datashare:publish-view configdat) (datashare:get-view configdat) (datashare:manage-view configdat) |
︙ | ︙ |
Modified db.scm from [8a33d5ef0f] to [5b045adee9].
︙ | ︙ | |||
2240 2241 2242 2243 2244 2245 2246 | (sqlite3:execute db "DELETE FROM tests WHERE state='DELETED' AND event_time<?;" targtime)))) run-ids))) ;; set tests with state currstate and status currstatus to newstate and newstatus ;; use currstate = #f and or currstatus = #f to apply to any state or status respectively ;; WARNING: SQL injection risk. NB// See new but not yet used "faster" version below ;; | | | | | > > > | | | 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 | (sqlite3:execute db "DELETE FROM tests WHERE state='DELETED' AND event_time<?;" targtime)))) run-ids))) ;; set tests with state currstate and status currstatus to newstate and newstatus ;; use currstate = #f and or currstatus = #f to apply to any state or status respectively ;; WARNING: SQL injection risk. NB// See new but not yet used "faster" version below ;; ;; AND NOT (item_path='' AND testname in (SELECT DISTINCT testname FROM tests WHERE testname=? AND item_path != ''));"))) ;; (debug:print 0 "QRY: " qry) ;; (db:delay-if-busy) ;; ;; NB// This call only operates on toplevel tests. Consider replacing it with more general call ;; (define (db:set-tests-state-status dbstruct run-id testnames currstate currstatus newstate newstatus) (for-each (lambda (testname) (let ((qry (conc "UPDATE tests SET state=?,status=? WHERE " (if currstate (conc "state='" currstate "' AND ") "") (if currstatus (conc "status='" currstatus "' AND ") "") " run_id=? AND testname LIKE ?;"))) (db:with-db dbstruct run-id #t (lambda (db) (let ((test-id (db:get-test-id dbstruct run-id testname ""))) (sqlite3:execute db qry newstate newstatus run-id testname) (if test-id (mt:process-triggers run-id test-id newstate newstatus))) )))) testnames)) ;; speed up for common cases with a little logic ;; NB// Ultimately this will be deprecated in deference to mt:test-set-state-status-by-id ;; (define (db:test-set-state-status-by-id dbstruct run-id test-id newstate newstatus newcomment) |
︙ | ︙ | |||
3261 3262 3263 3264 3265 3266 3267 | ;; M I S C M A N A G E M E N T I T E M S ;;====================================================================== ;; A routine to map itempaths using a itemmap (define (db:compare-itempaths patha pathb itemmap) (debug:print-info 6 "ITEMMAP is " itemmap) (if itemmap | > > > > > | | | | | | | | < < < < | | | > > > > | > > > > > > > > | > > > > | > > > > > > | | 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 | ;; M I S C M A N A G E M E N T I T E M S ;;====================================================================== ;; 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)) (equal? patha pathb))) ;; (let* ((mapparts (string-split itemmap)) ;; (pattern (car mapparts)) ;; (replacement (if (> (length mapparts) 1) (cadr mapparts) ""))) ;; (if replacement ;; (equal? (string-substitute pattern replacement patha) ;; (string-substitute pattern replacement pathb)) ;; (equal? (string-substitute pattern "" patha) ;; (string-substitute pattern "" pathb)))) ;; A routine to convert test/itempath using a itemmap (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)) "/"))) (conc test-name "/" (db:multi-pattern-apply item-path itemmap)))) ;; patterns are: ;; "rx1" "replacement1"\n ;; "rx2" "replacement2" ;; etc. ;; (define (db:multi-pattern-apply item-path itemmap) (let ((all-patts (string-split itemmap "\n"))) (if (null? all-patts) item-path (let loop ((hed (car all-patts)) (tal (cdr all-patts)) (res item-path)) (let* ((parts (string-split hed)) (patt (car parts)) (repl (if (> (length parts) 1)(cadr parts) "")) (newr (if (and patt repl) (string-substitute patt repl res) (begin (debug:print 0 "WARNING: itemmap has problem \"" itemmap "\", patt: " patt ", repl: " repl) res)))) (if (null? tal) newr (loop (car tal)(cdr tal) newr))))))) ;; the new prereqs calculation, looks also at itempath if specified ;; all prereqs must be met ;; if prereq test with itempath='' is COMPLETED and PASS, WARN, CHECK, or WAIVED then prereq is met ;; if prereq test with itempath=ref-item-path and COMPLETED with PASS, WARN, CHECK, or WAIVED then prereq is met ;; ;; Note: mode 'normal means that tests must be COMPLETED and ok (i.e. PASS, WARN, CHECK, SKIP or WAIVED) ;; mode 'toplevel means that tests must be COMPLETED only ;; mode 'itemmatch or 'itemwait means that tests items must be COMPLETED and (PASS|WARN|WAIVED|CHECK) [[ NB// NOT IMPLEMENTED YET ]] ;; |
︙ | ︙ |
Modified docs/manual/megatest_manual.html from [deb650ba7e] to [25fe0b3f9e].
︙ | ︙ | |||
1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 | <h4 id="_launchers">launchers</h4> <div class="listingblock"> <div class="title">test/itempath ⇒ host-type</div> <div class="content monospaced"> <pre>runfirst/sum% remote</pre> </div></div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_the_testconfig_file">The testconfig File</h2> <div class="sectionbody"> <div class="sect2"> | > > > > > > > > > > | 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 | <h4 id="_launchers">launchers</h4> <div class="listingblock"> <div class="title">test/itempath ⇒ host-type</div> <div class="content monospaced"> <pre>runfirst/sum% remote</pre> </div></div> </div> <div class="sect3"> <h4 id="_miscellaneous_setup_items">Miscellaneous Setup Items</h4> <div class="paragraph"><p>Attempt to rerun tests in "STUCK/DEAD", "n/a", "ZERO_ITEMS" states.</p></div> <div class="listingblock"> <div class="title">In megatest.config</div> <div class="content monospaced"> <pre>[setup] reruns 5</pre> </div></div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_the_testconfig_file">The testconfig File</h2> <div class="sectionbody"> <div class="sect2"> |
︙ | ︙ | |||
1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 | <h4 id="_skip_if_test_ran_more_recently_than_specified_time">Skip if test ran more recently than specified time</h4> <div class="listingblock"> <div class="title">Skip if this test has been run in the past fifteen minutes and 15 seconds.</div> <div class="content monospaced"> <pre>[skip] rundelay 15m 15s</pre> </div></div> </div> <div class="sect3"> <h4 id="_controlled_waiver_propagation">Controlled waiver propagation</h4> <div class="paragraph"><p>If test is FAIL and previous test in run with same MT_TARGET is WAIVED then apply the following rules from the testconfig: If a waiver check is specified in the testconfig apply the check and if it passes then set this FAIL to WAIVED</p></div> <div class="paragraph"><p>Waiver check has two parts, 1) a list of waiver, rulename, filepatterns and 2) the rulename script spec (note that "diff" and "logpro" are predefined)</p></div> <div class="listingblock"> | > > > > > > | 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 | <h4 id="_skip_if_test_ran_more_recently_than_specified_time">Skip if test ran more recently than specified time</h4> <div class="listingblock"> <div class="title">Skip if this test has been run in the past fifteen minutes and 15 seconds.</div> <div class="content monospaced"> <pre>[skip] rundelay 15m 15s</pre> </div></div> </div> <div class="sect3"> <h4 id="_disks">Disks</h4> <div class="paragraph"><p>A disks section in testconfig will override the disks section in megatest.config. This can be used to allocate disks on a per-test or per item basis.</p></div> </div> <div class="sect3"> <h4 id="_controlled_waiver_propagation">Controlled waiver propagation</h4> <div class="paragraph"><p>If test is FAIL and previous test in run with same MT_TARGET is WAIVED then apply the following rules from the testconfig: If a waiver check is specified in the testconfig apply the check and if it passes then set this FAIL to WAIVED</p></div> <div class="paragraph"><p>Waiver check has two parts, 1) a list of waiver, rulename, filepatterns and 2) the rulename script spec (note that "diff" and "logpro" are predefined)</p></div> <div class="listingblock"> |
︙ | ︙ | |||
1560 1561 1562 1563 1564 1565 1566 | </div> </div> <div id="footnotes"><hr></div> <div id="footer"> <div id="footer-text"> Version 1.0<br> Last updated | | | 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 | </div> </div> <div id="footnotes"><hr></div> <div id="footer"> <div id="footer-text"> Version 1.0<br> Last updated 2015-08-24 19:48:43 MST </div> </div> </body> </html> |
Modified docs/manual/reference.txt from [4af9a389c4] to [2b7b55d46c].
︙ | ︙ | |||
44 45 46 47 48 49 50 51 52 53 54 55 56 57 | launchers ^^^^^^^^^ .test/itempath => host-type ------------ runfirst/sum% remote ------------ The testconfig File ------------------- Setup section ~~~~~~~~~~~~~ | > > > > > > > > > > > | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | launchers ^^^^^^^^^ .test/itempath => host-type ------------ runfirst/sum% remote ------------ Miscellaneous Setup Items ^^^^^^^^^^^^^^^^^^^^^^^^^ Attempt to rerun tests in "STUCK/DEAD", "n/a", "ZERO_ITEMS" states. .In megatest.config ------------------ [setup] reruns 5 ------------------ The testconfig File ------------------- Setup section ~~~~~~~~~~~~~ |
︙ | ︙ |
Modified megatest.scm from [d76645c251] to [ca32053a65].
︙ | ︙ | |||
786 787 788 789 790 791 792 | (let ((tl (launch:setup-for-run))) (push-directory *toppath*) (let ((data (full-runconfigs-read))) ;; keep this one local (cond ((and (args:get-arg "-section") (args:get-arg "-var")) | | > | 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 | (let ((tl (launch:setup-for-run))) (push-directory *toppath*) (let ((data (full-runconfigs-read))) ;; keep this one local (cond ((and (args:get-arg "-section") (args:get-arg "-var")) (let ((val (or (configf:lookup data (args:get-arg "-section")(args:get-arg "-var")) (configf:lookup data "default" (args:get-arg "-var"))))) (if val (print val)))) ((not (args:get-arg "-dumpmode")) (pp (hash-table->alist data))) ((string=? (args:get-arg "-dumpmode") "json") (json-write data)) (else (debug:print 0 "ERROR: -dumpmode of " (args:get-arg "-dumpmode") " not recognised"))) |
︙ | ︙ |
Deleted readline-fix.scm version [23cc657f47].
|
| < < |
Modified runs.scm from [d4c7e3371b] to [f6dbf494ae].
︙ | ︙ | |||
222 223 224 225 226 227 228 | (test-records (make-hash-table)) ;; need to process runconfigs before generating these lists (all-tests-registry #f) ;; (tests:get-all)) ;; (tests:get-valid-tests (make-hash-table) test-search-path)) ;; all valid tests to check waiton names (all-test-names #f) ;; (hash-table-keys all-tests-registry)) (test-names #f) ;; (tests:filter-test-names all-test-names test-patts)) (required-tests #f) ;; Put fully qualified test/testpath names in this list to be done (task-key (conc (hash-table->alist flags) " " (get-host-name) " " (current-process-id))) | | > > > > > > > | 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | (test-records (make-hash-table)) ;; need to process runconfigs before generating these lists (all-tests-registry #f) ;; (tests:get-all)) ;; (tests:get-valid-tests (make-hash-table) test-search-path)) ;; all valid tests to check waiton names (all-test-names #f) ;; (hash-table-keys all-tests-registry)) (test-names #f) ;; (tests:filter-test-names all-test-names test-patts)) (required-tests #f) ;; Put fully qualified test/testpath names in this list to be done (task-key (conc (hash-table->alist flags) " " (get-host-name) " " (current-process-id))) (tdbdat (tasks:open-db)) (config-reruns (let ((x (configf:lookup *configdat* "setup" "reruns"))) (if x (string->number x) #f)))) ;; override the number of reruns from the configs (if (and config-reruns (> run-count config-reruns)) (set! run-count config-reruns)) (if (tasks:need-server run-id)(tasks:start-and-wait-for-server tdbdat run-id 10)) (let ((sighand (lambda (signum) ;; (signal-mask! signum) ;; to mask or not? seems to cause issues in exiting (if (eq? signum signal/stop) (debug:print 0 "ERROR: attempt to STOP process. Exiting.")) (set! *time-to-exit* #t) |
︙ | ︙ | |||
480 481 482 483 484 485 486 | "runs: mark-incompletes"))) (thread-start! th1) (thread-start! th2) (thread-join! th1) (set! keep-going #f) (thread-join! th2) ;; if run-count > 0 call, set -preclean and -rerun STUCK/DEAD | | | 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 | "runs: mark-incompletes"))) (thread-start! th1) (thread-start! th2) (thread-join! th1) (set! keep-going #f) (thread-join! th2) ;; if run-count > 0 call, set -preclean and -rerun STUCK/DEAD (if (> run-count 0) ;; handle reruns (begin (if (not (hash-table-ref/default flags "-preclean" #f)) (hash-table-set! flags "-preclean" #t)) (if (not (hash-table-ref/default flags "-rerun" #f)) (hash-table-set! flags "-rerun" "STUCK/DEAD,n/a,ZERO_ITEMS")) ;; recursive call to self (runs:run-tests target runname test-patts user flags run-count: (- run-count 1))))) |
︙ | ︙ |
Modified tests/fdktestqa/testqa/configs/megatest.def.config from [1df0e5e24a] to [11f50463c8].
1 2 3 4 5 6 | # You can override environment variables for all your tests here [env-override] EXAMPLE_VAR example value # As you run more tests you may need to add additional disks, the names are arbitrary but must be unique [disks] | | | 1 2 3 4 5 6 7 8 | # You can override environment variables for all your tests here [env-override] EXAMPLE_VAR example value # As you run more tests you may need to add additional disks, the names are arbitrary but must be unique [disks] disk0 #{scheme (create-directory (nice-path "#{getenv MT_RUN_AREA_HOME}/../simpleruns") #t)} |
Modified tests/fullrun/megatest.config from [f1db02f870] to [007216e935].
︙ | ︙ | |||
143 144 145 146 147 148 149 | # XTERM [system xterm] # RUNDEAD [system exit 56] [server] # force use of server always | | | | | < | 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | # XTERM [system xterm] # RUNDEAD [system exit 56] [server] # force use of server always # required yes # Use http instead of direct filesystem access transport http # transport fs # transport nmsg synchronous 0 # If the server can't be started on this port it will try the next port until # it succeeds port 9080 # This server will keep running this number of hours after last access. # Three minutes is 0.05 hours # timeout 0.025 timeout 0.01 # faststart; unless no, start server but proceed with writes until server started # faststart no faststart yes # Start server when average query takes longer than this # server-query-threshold 55500 server-query-threshold 1000 # daemonize yes # hostname #{scheme (get-host-name)} ## disks are: ## name host:/path/to/area ## -or- |
︙ | ︙ | |||
284 285 286 287 288 289 290 | # # match. # flexi-launcher yes [jobtools] flexi-launcher yes [host-types] | | | 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 | # # match. # flexi-launcher yes [jobtools] flexi-launcher yes [host-types] general nbfake alt #{get jobtools launcher} local nbfake remote #{get jobtools launcher} [launchers] runfirst/sum% remote % general |
Modified tests/unittests/runs.scm from [25943e33c5] to [17931d05af].
︙ | ︙ | |||
318 319 320 321 322 323 324 325 326 327 328 329 330 | (print "Waiting for server to be done, should be about 20 seconds") (test "server stop" #f (let ((hostname (car *runremote*)) (port (cadr *runremote*))) (tasks:kill-server #t hostname port server-pid 'http) (open-run-close tasks:get-best-server tasks:open-db))) ;; (cdb:kill-server *runremote*) ;; (thread-join! th1 th2 th3) ;; ADD ME!!!! (db:get-prereqs-not-met *db* 1 '("runfirst") "" mode: 'normal) ;; ADD ME!!!! (rdb:get-tests-for-run *db* 1 "runfirst" #f '() '()) | > > > > > > | 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 | (print "Waiting for server to be done, should be about 20 seconds") (test "server stop" #f (let ((hostname (car *runremote*)) (port (cadr *runremote*))) (tasks:kill-server #t hostname port server-pid 'http) (open-run-close tasks:get-best-server tasks:open-db))) ;;====================================================================== ;; M O R E R E M O T E C A L L S ;;====================================================================== (test #f #f (rmt:set-tests-state-status 1 '("runfirst") "RUNNING" "WARN" "COMPLETED" "FAIL")) ;; (cdb:kill-server *runremote*) ;; (thread-join! th1 th2 th3) ;; ADD ME!!!! (db:get-prereqs-not-met *db* 1 '("runfirst") "" mode: 'normal) ;; ADD ME!!!! (rdb:get-tests-for-run *db* 1 "runfirst" #f '() '()) |