Overview
Comment: | wip |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | v1.90-proper-interface-lists |
Files: | files | file ages | folders |
SHA1: |
191771357481ceef9dd51d8b8f8b8a5f |
User & Date: | mrwellan on 2024-02-14 19:45:49 |
Other Links: | branch diff | manifest | tags |
Context
2024-02-15
| ||
05:49 | added missing file check-in: 1ab5088f10 user: mrwellan tags: v1.90-proper-interface-lists | |
2024-02-14
| ||
19:45 | wip check-in: 1917713574 user: mrwellan tags: v1.90-proper-interface-lists | |
12:17 | wip check-in: fc66e1b369 user: mrwellan tags: v1.90-proper-interface-lists | |
Changes
Modified Makefile from [28eae0e2ed] to [bc9f488d5b].
︙ | ︙ | |||
66 67 68 69 70 71 72 73 74 75 76 77 78 79 | mofiles/servermod.o : mofiles/commonmod.o mofiles/rmtmod.o : mofiles/mtmod.o mofiles/apimod.o mofiles/dbmod.o : mofiles/mtmod.o # mofiles/mtmod.o : mofiles/tcp-transportmod.o mofiles/megatestmod.o : mofiles/pkts.o mofiles/servermod.o mofiles/fsmod.o # mofiles/mtmod.o : mofiles/testsmod.o mofiles/subrunmod.o : mofiles/tasksmod.o mofiles/launchmod.o : mofiles/subrunmod.o mofiles/runsmod.o mofiles/launchmod.o : mofiles/ezstepsmod.o mofiles/runsmod.o : mofiles/archivemod.o mofiles/testsmod.o : mofiles/dbmod.o mofiles/dbfile.o : \ mofiles/debugprint.o mofiles/commonmod.o mofiles/configfmod.o | > | 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | mofiles/servermod.o : mofiles/commonmod.o mofiles/rmtmod.o : mofiles/mtmod.o mofiles/apimod.o mofiles/dbmod.o : mofiles/mtmod.o # mofiles/mtmod.o : mofiles/tcp-transportmod.o mofiles/megatestmod.o : mofiles/pkts.o mofiles/servermod.o mofiles/fsmod.o # mofiles/mtmod.o : mofiles/testsmod.o mofiles/subrunmod.o : mofiles/tasksmod.o mofiles/dcommon.o : mofiles/tasksmod.o mofiles/launchmod.o : mofiles/subrunmod.o mofiles/runsmod.o mofiles/launchmod.o : mofiles/ezstepsmod.o mofiles/runsmod.o : mofiles/archivemod.o mofiles/testsmod.o : mofiles/dbmod.o mofiles/dbfile.o : \ mofiles/debugprint.o mofiles/commonmod.o mofiles/configfmod.o |
︙ | ︙ |
Modified commonmod.scm from [0423da5489] to [a5471b79f9].
︙ | ︙ | |||
94 95 96 97 98 99 100 101 102 103 104 105 106 107 | *time-to-exit* *toppath* *toptest-paths* *transport-type* *common:this-exe-dir* common:with-orig-env alist->env-vars any->number any->number-if-possible assoc/default client:get-signature | > > > > | 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | *time-to-exit* *toppath* *toptest-paths* *transport-type* *common:this-exe-dir* common:list-is-sublist seconds->year-week/day-time common:find-start-mark-and-mark-delta common:with-orig-env alist->env-vars any->number any->number-if-possible assoc/default client:get-signature |
︙ | ︙ |
Modified dashboard-context-menu.scm from [2e962c22f5] to [00d638c5a5].
︙ | ︙ | |||
14 15 16 17 18 19 20 | ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with Megatest. If not, see <http://www.gnu.org/licenses/>. ;;====================================================================== | < < < < < | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with Megatest. If not, see <http://www.gnu.org/licenses/>. ;;====================================================================== (declare (unit dashboard-context-menu)) ;; (declare (uses common)) (declare (uses commonmod)) (declare (uses configfmod)) (declare (uses gutils)) (declare (uses rmtmod)) (declare (uses ezsteps)) |
︙ | ︙ | |||
55 56 57 58 59 60 61 | rmtmod testsmod subrunmod debugprint megatestmod ) | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 50 51 52 53 54 55 56 | rmtmod testsmod subrunmod debugprint megatestmod ) |
Modified dcommon.scm from [a6c5548c9a] to [37c5fbe890].
︙ | ︙ | |||
23 24 25 26 27 28 29 | (declare (uses gutils)) (declare (uses dbmod)) (declare (uses commonmod)) (declare (uses configfmod)) (declare (uses rmtmod)) (declare (uses testsmod)) (declare (uses mtargs)) | > > | | > > > > > > > > > > > > > > > | > | > > > > > > | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | (declare (uses gutils)) (declare (uses dbmod)) (declare (uses commonmod)) (declare (uses configfmod)) (declare (uses rmtmod)) (declare (uses testsmod)) (declare (uses mtargs)) (declare (uses vgmod)) ;; (declare (uses vgmod.import)) (declare (uses ezstepsmod)) (declare (uses rmtmod)) (declare (uses subrunmod)) (declare (uses megatestmod)) (declare (uses runsmod)) (declare (uses tasksmod)) (declare (uses dbfile)) (declare (uses servermod)) (module dcommon * (import scheme chicken ports posix extras format fmt srfi-1 srfi-4 srfi-13 srfi-14 srfi-18 srfi-69 sparse-vectors files format (prefix iup iup:) canvas-draw canvas-draw-iup regex data-structures directory-utils pathname-expand typed-records matchable (prefix sqlite3 sqlite3:) (prefix mtargs args:) commonmod configfmod rmtmod testsmod dbmod debugprint vgmod ezstepsmod rmtmod subrunmod megatestmod runsmod tasksmod dbfile servermod ) (include "megatest-version.scm") (include "common_records.scm") ;; (include "db_records.scm") ;; (include "key_records.scm") (include "run_records.scm") |
︙ | ︙ | |||
388 389 390 391 392 393 394 | ;; (if updater (updater (hash-table-ref/default data get-details-sig #f)))) ;; ;; (if changed (iup:attribute-set! (dboard:tabdat-runs-matrix data) "REDRAW" "ALL")) ;; ;; (debug:print 2 *default-log-port* "run-changes: " run-changes) ;; ;; (debug:print 2 *default-log-port* "test-changes: " test-changes) ;; (list run-changes all-test-changes))) | | | | 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 | ;; (if updater (updater (hash-table-ref/default data get-details-sig #f)))) ;; ;; (if changed (iup:attribute-set! (dboard:tabdat-runs-matrix data) "REDRAW" "ALL")) ;; ;; (debug:print 2 *default-log-port* "run-changes: " run-changes) ;; ;; (debug:print 2 *default-log-port* "test-changes: " test-changes) ;; (list run-changes all-test-changes))) (define (dcommon:runsdat-get-col-num dat target runname force-set) (let* ((runs-index (dboard:runsdat-runs-index dat)) (col-name (conc target "/" runname)) (res (hash-table-ref/default runs-index col-name #f))) (if res res (if force-set (let ((max-col-num (+ 1 (common:max (cons-1 (hash-table-values runs-index)))))) (hash-table-set! runs-index col-name max-col-num) max-col-num))))) (define (dcommon:runsdat-get-row-num dat testname itempath force-set) (let* ((tests-index (dboard:runsdat-runs-index dat)) (row-name (conc testname "/" itempath)) (res (hash-table-ref/default runs-index row-name #f))) (if res res (if force-set (let ((max-row-num (+ 1 (common:max (cons -1 (hash-table-values tests-index)))))) |
︙ | ︙ | |||
1969 1970 1971 1972 1973 1974 1975 | ;; default is to NOT set the cell if the column and row names are not pre-existing ;; (define (dboard:runsdat-set-test-cell dat target runname testname itempath test-id state status #!key (force-set #f)) (let* ((col-num (dcommon:runsdat-get-col-num dat target runname force-set)) (row-num (dcommon:runsdat-get-row-num dat testname itempath force-set))) (if (and row-num col-num) | | | 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 | ;; default is to NOT set the cell if the column and row names are not pre-existing ;; (define (dboard:runsdat-set-test-cell dat target runname testname itempath test-id state status #!key (force-set #f)) (let* ((col-num (dcommon:runsdat-get-col-num dat target runname force-set)) (row-num (dcommon:runsdat-get-row-num dat testname itempath force-set))) (if (and row-num col-num) (let ((tdat (make-dboard:testdat id: test-id state: state status: status))) (sparse-array-set! (dboard:runsdat-matrix-dat dat) col-num row-num tdat) tdat) #f))) |
︙ | ︙ | |||
3311 3312 3313 3314 3315 3316 3317 | (define (tree-path->run-id tabdat path) (if (not (null? path)) (hash-table-ref/default (dboard:tabdat-path-run-ids tabdat) path #f) #f)) (define (new-tree-path->run-id rdat path) (if (not (null? path)) | | | 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 | (define (tree-path->run-id tabdat path) (if (not (null? path)) (hash-table-ref/default (dboard:tabdat-path-run-ids tabdat) path #f) #f)) (define (new-tree-path->run-id rdat path) (if (not (null? path)) (hash-table-ref/default (dboard:rdat-path-run-ids rdat) path #f) #f)) ;; (define (dboard:get-tests-dat tabdat run-id last-update) ;; (let* ((access-mode (dboard:tabdat-access-mode tabdat)) ;; (tdat (if run-id (db:dispatch-query access-mode rmt:get-tests-for-run db:get-tests-for-run ;; run-id ;; (hash-table-ref/default (dboard:tabdat-searchpatts tabdat) "test-name" "%/%") |
︙ | ︙ | |||
6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 | ;; (print "Starting main loop") (thread-start! th2) (thread-join! th2) ) ) ) ) ) | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 | ;; (print "Starting main loop") (thread-start! th2) (thread-join! th2) ) ) ) ) ;;====================================================================== ;; T R E E S T U F F ;;====================================================================== ;; path is a list of nodes, each the child of the previous ;; this routine returns the id so another node can be added ;; either as a leaf or as a branch ;; ;; BUG: This needs a stop sensor for when a branch is exhausted ;; (define (tree:find-node obj path) ;; start at the base of the tree (if (null? path) #f ;; or 0 ???? (let loop ((hed (car path)) (tal (cdr path)) (depth 0) (nodenum 0)) ;; nodes in iup tree are 100% sequential so iterate over nodenum (if (iup:attribute obj (conc "DEPTH" nodenum)) ;; end when no more nodes (let ((node-depth (string->number (iup:attribute obj (conc "DEPTH" nodenum)))) (node-title (iup:attribute obj (conc "TITLE" nodenum)))) (if (and (equal? depth node-depth) (equal? hed node-title)) ;; yep, this is the one! (if (null? tal) ;; end of the line nodenum (loop (car tal)(cdr tal)(+ depth 1)(+ 1 nodenum))) ;; this is the case where we found part of the hierarchy but not ;; all of it, i.e. the node-depth went from deep to less deep (if (> depth node-depth) ;; (+ 1 node-depth)) #f (loop hed tal depth (+ nodenum 1))))) #f)))) ;; top is the top node name zeroeth node VALUE=0 (define (tree:add-node obj top nodelst #!key (userdata #f)) (let ((curr-top (iup:attribute obj "TITLE0"))) (if (or (not (string? curr-top)) (string-null? curr-top) (string-match "^\\s*$" curr-top)) (iup:attribute-set! obj "ADDBRANCH0" top)) (cond ((not (equal? top (iup:attribute obj "TITLE0"))) (debug:print 0 *default-log-port* "ERROR: top name " top " doesn't match " (iup:attribute obj "TITLE0"))) ((null? nodelst)) (else (let loop ((hed (car nodelst)) (tal (cdr nodelst)) (depth 1) (pathl (list top))) ;; Because the tree dialog changes node numbers when ;; nodes are added or removed we must look up nodes ;; each and every time. 0 is the top node so default ;; to that. (let* ((newpath (append pathl (list hed))) (parentnode (tree:find-node obj pathl)) (nodenum (tree:find-node obj newpath))) ;; Add the branch under lastnode if not found (if (not nodenum) (begin (iup:attribute-set! obj (conc "ADDBRANCH" parentnode) hed) ;; ERROR? ADDING DATA TO PARENT, DONT WE WANT IT ON CREATED NODE? (if userdata (iup:attribute-set! obj (conc "USERDATA" parentnode) userdata)) (if (null? tal) #t ;; reset to top (loop (car nodelst)(cdr nodelst) 1 (list top)))) (if (null? tal) ;; if null here then this path has already been added #t (loop (car tal)(cdr tal)(+ depth 1) newpath))))))))) (define (tree:node->path obj nodenum) (let loop ((currnode 0) (path '())) (let* ((node-depth (string->number (iup:attribute obj (conc "DEPTH" currnode)))) (node-title (iup:attribute obj (conc "TITLE" currnode))) (trimpath (if (and (not (null? path)) (> (length path) node-depth)) (take path node-depth) path)) (newpath (append trimpath (list node-title)))) (if (>= currnode nodenum) newpath (loop (+ currnode 1) newpath))))) (define (tree:delete-node obj top node-path) ;; node-path is a list of strings (let ((id (tree:find-node obj (cons top node-path)))) (debug:print 0 *default-log-port* "Found node to remove " id " for path " top " " node-path) (iup:attribute-set! obj (conc "DELNODE" id) "SELECTED"))) #| (let* ((tb (iup:treebox #:value 0 #:name "Runs" #:expand "YES" #:addexpanded "NO" #:selection-cb (lambda (obj id state) ;; (print "obj: " obj ", id: " id ", state: " state) (let* ((run-path (tree:node->path obj id)) (run-id (tree-path->run-id (cdr run-path)))) (if run-id (begin (dboard:data-curr-run-id-set! data run-id) (dashboard:update-run-summary-tab))) ;; (print "path: " (tree:node->path obj id) " run-id: " run-id) )))) |# ;;====================================================================== ;; gutils ;; ;; NOTE: These functions will move to iuputils ;;====================================================================== (define (gutils:colors-similar? color1 color2) (let* ((c1 (map string->number (string-split color1))) (c2 (map string->number (string-split color2))) (delta (map (lambda (a b)(abs (- a b))) c1 c2))) (null? (filter (lambda (x)(> x 3)) delta)))) (define gutils:colors '((PASS . "70 249 73") (FAIL . "253 33 49") (SKIP . "230 230 0"))) (define (gutils:get-color-spec effective-state) (or (alist-ref effective-state gutils:colors) (alist-ref 'FAIL gutils:colors))) ;; BBnote - state status dashboard button color / text defined here (define (gutils:get-color-for-state-status state status);; #!key (get-label #f)) ;; ((if get-label cadr car) (case (string->symbol state) ((COMPLETED) ;; ARCHIVED) (case (string->symbol status) ((PASS) (list "70 249 73" status)) ((PREQ_FAIL PREQ_DISCARDED) (list "255 127 127" status)) ((WARN WAIVED) (list "255 172 13" status)) ((SKIP) (list (gutils:get-color-spec 'SKIP) status)) ((ABORT) (list "198 36 166" status)) (else (list "253 33 49" status)))) ((ARCHIVED) (case (string->symbol status) ((PASS) (list "70 170 73" status)) ((WARN WAIVED) (list "200 130 13" status)) ((SKIP) (list (gutils:get-color-spec 'SKIP) status)) (else (list "180 33 49" status)))) ;; (if (equal? status "PASS") ;; '("70 249 73" "PASS") ;; (if (or (equal? status "WARN") ;; (equal? status "WAIVED")) ;; (list "255 172 13" status) ;; (list "223 33 49" status)))) ;; greenish orangeish redish ((LAUNCHED) (list "101 123 142" state)) ((CHECK) (list "255 100 50" state)) ((REMOTEHOSTSTART) (list "50 130 195" state)) ((RUNNING STARTED) (list "9 131 232" state)) ((KILLREQ) (list "39 82 206" state)) ((KILLED) (list "234 101 17" state)) ((NOT_STARTED) (case (string->symbol status) ((CHECK STARTED)(list (gutils:get-color-spec 'SKIP) state)) (else (list "240 240 240" state)))) ;; for xor mode below ;; ((CLEAN) (case (string->symbol status) ((CLEAN-FAIL CLEAN-CHECK CLEAN-ABORT) (list "200 130 13" status)) ;; orange requested for these (else (list "60 235 63" status)))) ((DIRTY-BETTER) (list "160 255 153" status)) ((DIRTY-WORSE) (list "165 42 42" status)) ((BOTH-BAD) (list "180 33 49" status)) (else (list ;; "192 192 192" "222 222 221" state)))) ;;====================================================================== ;; implementation of context menu that pops up on ;; right click on test cell in Runs & Runs Summary Tabs ;;====================================================================== (define (dboard:launch-testpanel run-id test-id) (let* ((dboardexe (common:find-local-megatest "dashboard")) (cmd (conc dboardexe " -test " run-id "," test-id " &"))) (system cmd))) (define (dashboard:run-menu-items run-id test-id target runname test-name testpatt item-test-path test-info) (list (iup:menu-item (conc "Rerun " testpatt) #:action (lambda (obj) ;; (print " run-id: " run-id " test-id: " test-id " target: " target " runname: " runname " test-name: " test-name " testpatt: " testpatt "item-path : " item-path) (common:run-a-command (conc "megatest -run -target " target " -runname " runname " -testpatt " testpatt " -preclean -clean-cache") ))) (iup:menu-item "Rerun Complete Run" #:action (lambda (obj) (common:run-a-command (conc "megatest -set-state-status NOT_STARTED,n/a -run -target " target " -runname " runname " -testpatt % " " -preclean -clean-cache")))) (iup:menu-item "Clean Complete Run" #:action (lambda (obj) (common:run-a-command (conc "megatest -remove-runs -target " target " -runname " runname " -testpatt % ")))) (iup:menu-item "Kill Complete Run" #:action (lambda (obj) (common:run-a-command (conc "megatest -set-state-status KILLREQ,n/a -target " target " -runname " runname " -testpatt % " " -state RUNNING,REMOTEHOSTSTART,LAUNCHED,NOT_STARTED")))) (iup:menu-item "Delete Run Data" #:action (lambda (obj) (common:run-a-command (conc "megatest -remove-runs -target " target " -runname " runname " -testpatt % " " -keep-records")))))) (define (dashboard:test-menu-items run-id test-id target runname test-name testpatt item-test-path test-info) (list (iup:menu-item (conc "Rerun " item-test-path) #:action (lambda (obj) (common:run-a-command (conc "megatest -set-state-status NOT_STARTED,n/a -run -target " target " -runname " runname " -testpatt " item-test-path " -preclean -clean-cache")))) (iup:menu-item (conc "Kill " item-test-path) #:action (lambda (obj) ;; (rmt:test-set-state-status-by-id run-id test-id "KILLREQ" #f #f) (common:run-a-command (conc "megatest -set-state-status KILLREQ,n/a -target " target " -runname " runname " -testpatt " item-test-path " -state RUNNING,REMOTEHOSTSTART,LAUNCHED")))) (iup:menu-item (conc "Delete data : " item-test-path) #:action (lambda (obj) (common:run-a-command (conc "megatest -remove-runs -target " target " -runname " runname " -testpatt " item-test-path " -keep-records")))) (iup:menu-item (conc "Clean "item-test-path) #:action (lambda (obj) (common:run-a-command (conc "megatest -remove-runs -target " target " -runname " runname " -testpatt " item-test-path)))) (iup:menu-item "Start xterm" #:action (lambda (obj) (dcommon:examine-xterm run-id test-id))) ;;(let* ((cmd (conc (car (argv)) " -xterm " run-id "," test-id "&"))) ;; (system cmd)))) (iup:menu-item "Edit testconfig" #:action (lambda (obj) (let* ((all-tests (tests:get-all)) (editor-rx (or (configf:lookup *configdat* "setup" "editor-regex") "\\b(vim?|nano|pico)\\b")) (editor (or (configf:lookup *configdat* "setup" "editor") (get-environment-variable "VISUAL") (get-environment-variable "EDITOR") "vi")) (tconfig (conc (hash-table-ref all-tests test-name) "/testconfig")) (cmd (conc (if (string-search editor-rx editor) (conc "xterm -e " editor) editor) " " tconfig " &"))) (system cmd)))))) (define (dashboard:step-logs-menu-item run-id test-id target runname test-name testpatt item-test-path test-info) (let* ((steps (tests:get-compressed-steps run-id test-id)) ;; #<stepname start end status Duration Logfile Comment id> (rundir (db:test-get-rundir test-info))) (iup:menu-item "Step logs" (apply iup:menu (map (lambda (step) (let ((stepname (vector-ref step 0)) (logfile (vector-ref step 5)) (status (vector-ref step 3))) (iup:menu-item (conc stepname "/" (if (string=? logfile "") "no log!" logfile) " (" status ")") #:action (lambda (obj) (let ((fullfile (conc rundir "/" logfile))) (if (common:file-exists? fullfile) (dcommon:run-html-viewer fullfile) (message-window (conc "file " fullfile " not found")))))))) steps))))) (define (dashboard:toplevel-menu-items run-id test-id target runname test-name testpatt item-test-path test-info) (list (iup:menu-item "Test Control Panel" #:action (lambda (obj) (dboard:launch-testpanel run-id test-id))) (dashboard:step-logs-menu-item run-id test-id target runname test-name testpatt item-test-path test-info) (iup:menu-item (conc "Rerun " item-test-path) #:action (lambda (obj) (common:run-a-command (conc "megatest -set-state-status NOT_STARTED,n/a -run -target " target " -runname " runname " -testpatt " item-test-path " -preclean -clean-cache")))) (iup:menu-item "Start xterm" #:action (lambda (obj) (dcommon:examine-xterm run-id test-id))) (iup:menu-item (conc "Kill " item-test-path) #:action (lambda (obj) ;; (rmt:test-set-state-status-by-id run-id test-id "KILLREQ" #f #f) (common:run-a-command (conc "megatest -set-state-status KILLREQ,n/a -target " target " -runname " runname " -testpatt " item-test-path " -state RUNNING,REMOTEHOSTSTART,LAUNCHED,NOT_STARTED")))) (let* ((rundir (db:test-get-rundir test-info)) (has-subrun (subrun:subrun-test-initialized? rundir))) (if has-subrun (iup:menu-item "Launch subrun dashboard" #:action (lambda (obj) (subrun:launch-dashboard rundir))) (iup:vbox))) (iup:menu-item (conc "View Log " item-test-path) #:action (lambda (obj) (let* ((rundir (db:test-get-rundir test-info)) (logf (db:test-get-final_logf test-info)) (fullfile (conc rundir "/" logf))) (if (common:file-exists? fullfile) (dcommon:run-html-viewer fullfile) (message-window (conc "file " fullfile " not found."))))) ) )) ;; example section for megatest.config: ;; ;; ;; [custom-context-menu-items] ;; #<unique var> <menu item text, can have template variables> : <command line with template %variable%s> ;; item1 custom show run-id (%run-id%):echo "%run-id%" ;; item2 custom show test-id (%test-id%):echo "%test-id%" ;; item3 custom show target (%target%):echo "%target%" ;; item4 custom show test-name (%test-name%):echo "%test-name%" ;; item5 custom show test-patt (%test-patt%):echo "%test-patt%" ;; item6 custom show test-run-dir (%test-run-dir%):echo "%test-run-dir%" ;; item7 custom show run-area-home (%run-area-home%):echo "%run-area-home%" ;; item8 custom show megatest root (%mt-root%):echo "%mt-root%" ;; item9 custom ls : ls -lrt ;; item10 custom see $MT_RUN_AREA_HOME (not yet implemented) : echo $MT_RUN_AREA_HOME (define (dashboard:custom-menu-items run-id test-id target run-name test-name testpatt item-test-path test-info) (let* ((vars (configf:section-vars *configdat* "custom-context-menu-items")) (item-path (db:test-get-item-path test-info)) (mt-root (pathname-directory (pathname-directory *common:this-exe-dir* )))) (filter-map (lambda (var) (let* ((val (configf:lookup *configdat* "custom-context-menu-items" var)) (m (string-match "^\\s*([^:]+?)\\s*:\\s*(.*?)\\s*$" val))) (if m (let* ((menu-item-text-raw (list-ref m 1)) (command-line-raw (list-ref m 2)) (subst-alist ;; template vars `(( "%run-id%" . ,run-id ) ( "%test-id%" . ,test-id ) ( "%target%" . ,target ) ( "%test-name%" . ,test-name) ( "%test-patt%" . ,testpatt) ( "%test-run-dir%" . ,(db:test-get-rundir test-info)) ( "%mt-root%" . ,mt-root) ( "%run-name%" . ,run-name) ( "%run-area-home%" . ,*toppath*) ( "%item-path%" . ,item-path) ( "%item-test-patt%" . ,item-test-path ))) (command-line ;; replace template vars (foldr (lambda (x i) (string-substitute (car x) (->string (cdr x)) i #t)) command-line-raw subst-alist)) (menu-item-text ;; replace template vars (foldr (lambda (x i) (string-substitute (car x) (->string (cdr x)) i #t)) menu-item-text-raw subst-alist))) (iup:menu-item (conc "*"menu-item-text) #:action (lambda (obj) (let* ((scheme-match (string-match "^#(\\(.*)" command-line))) ;;(BB> "cmdline is >"command-line"<") (common:with-env-vars ;; TODO: with-env-vars <runconfig target vars, env-override vars from mtest> ;; TODO: with-env-vars MT_* (runs:get-mt-env-alist run-id run-name target test-name item-path) (lambda () (if scheme-match (begin (handle-exceptions exn (debug:print 0 *default-log-port* "error with custom menu scheme, exn=" exn) (begin ;;(BB> "gonna eval it!") (eval (with-input-from-string (cadr scheme-match) read))))) (common:run-a-command command-line with-vars: #t)))))))) #f))) vars))) (define (dashboard:context-menu run-id test-id target runname test-name testpatt item-test-path test-info) (let* ((run-menu-items (dashboard:run-menu-items run-id test-id target runname test-name testpatt item-test-path test-info)) (test-menu-items (dashboard:test-menu-items run-id test-id target runname test-name testpatt item-test-path test-info)) (custom-menu-items (dashboard:custom-menu-items run-id test-id target runname test-name testpatt item-test-path test-info)) (toplevel-menu-items (dashboard:toplevel-menu-items run-id test-id target runname test-name testpatt item-test-path test-info)) ) (apply iup:menu `(,@toplevel-menu-items ,(iup:menu-item "Run" (apply iup:menu run-menu-items)) ,(iup:menu-item "Test" (apply iup:menu test-menu-items)) ,@custom-menu-items)))) ) |
Modified ezstepsmod.scm from [ff6068567c] to [91b046c0a9].
︙ | ︙ | |||
43 44 45 46 47 48 49 | (declare (uses testsmod)) (declare (uses runsmod)) (declare (uses fsmod)) (use srfi-69) (module ezstepsmod | < > > > < | 43 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 69 70 71 72 73 74 75 76 | (declare (uses testsmod)) (declare (uses runsmod)) (declare (uses fsmod)) (use srfi-69) (module ezstepsmod ( ezsteps:spawn-run-from ) (import scheme) (cond-expand (chicken-4 (import chicken ports data-structures extras files matchable pathname-expand posix posix-extras regex regex-case sparse-vectors ) (use srfi-69)) (chicken-5 (import (prefix sqlite3 sqlite3:) chicken.base chicken.condition chicken.file |
︙ | ︙ |
Modified gutils.scm from [455c3c7ee1] to [10ee8944a1].
︙ | ︙ | |||
21 22 23 24 25 26 27 | (require-library iup) (import (prefix iup iup:)) (use canvas-draw) (use srfi-1 regex regex-case srfi-69) (declare (unit gutils)) | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 21 22 23 24 25 26 27 | (require-library iup) (import (prefix iup iup:)) (use canvas-draw) (use srfi-1 regex regex-case srfi-69) (declare (unit gutils)) |
Modified mtargs/mtargs.scm from [09e4f74c98] to [36700736fa].
︙ | ︙ | |||
101 102 103 104 105 106 107 108 | (hash-table-keys arg-hash))) (define (any-defined? . args) (not (null? (filter (lambda (x) x) (map get-arg args))))) ) | > > > | 101 102 103 104 105 106 107 108 109 110 111 | (hash-table-keys arg-hash))) (define (any-defined? . args) (not (null? (filter (lambda (x) x) (map get-arg args))))) (define (remove-arg-from-ht arg) (hash-table-delete! arg-hash arg)) ) |
Modified rmtmod.scm from [346ee7beb2] to [bbcad71fc7].
︙ | ︙ | |||
27 28 29 30 31 32 33 34 35 36 37 38 39 40 | (declare (uses mtmod)) (declare (uses tcp-transportmod)) (declare (uses apimod)) (declare (uses servermod)) (module rmtmod ( rmt:tasks-get-last rmt:read-test-data rmt:get-targets rmt:get-run-stats rmt:get-key-vals rmt:test-data-rollup rmt:import-sexpr | > | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | (declare (uses mtmod)) (declare (uses tcp-transportmod)) (declare (uses apimod)) (declare (uses servermod)) (module rmtmod ( rmt:get-tests-for-run-state-status rmt:tasks-get-last rmt:read-test-data rmt:get-targets rmt:get-run-stats rmt:get-key-vals rmt:test-data-rollup rmt:import-sexpr |
︙ | ︙ |
Modified runsmod.scm from [b2ba9c7ca3] to [b95b62c5c1].
︙ | ︙ | |||
43 44 45 46 47 48 49 50 51 52 53 54 55 56 | (declare (uses archivemod)) (declare (uses fsmod)) (use srfi-69) (module runsmod ( setup-env-defaults runs:clean-cache rmt:find-and-mark-incomplete launch:setup launch:end-of-run-check launch:test-copy | > | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | (declare (uses archivemod)) (declare (uses fsmod)) (use srfi-69) (module runsmod ( runs:get-mt-env-alist setup-env-defaults runs:clean-cache rmt:find-and-mark-incomplete launch:setup launch:end-of-run-check launch:test-copy |
︙ | ︙ |
Modified task_records.scm from [ff61a823b3] to [6b67eb70ad].
︙ | ︙ | |||
13 14 15 16 17 18 19 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with Megatest. If not, see <http://www.gnu.org/licenses/>. ;;====================================================================== | < < < < < < < < < < < < < < < < < < < < < < < < < | 13 14 15 16 17 18 19 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with Megatest. If not, see <http://www.gnu.org/licenses/>. ;;====================================================================== |
Modified tasksmod.scm from [ed55eb9fc6] to [f345d4de00].
︙ | ︙ | |||
53 54 55 56 57 58 59 60 61 62 63 64 65 66 | tests:get-test-path-from-environment common:exit-on-version-changed task:get-run-times task:get-test-times tasks:sync-to-postgres tests:get-full-data ) (import scheme) (cond-expand (chicken-4 (import chicken | > > | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | tests:get-test-path-from-environment common:exit-on-version-changed task:get-run-times task:get-test-times tasks:sync-to-postgres tests:get-full-data tasks:task-get-testpatt ) (import scheme) (cond-expand (chicken-4 (import chicken |
︙ | ︙ | |||
1881 1882 1883 1884 1885 1886 1887 1888 | (lambda (missing-waiton) (debug:print-error 0 *default-log-port* "non-existent test \"" missing-waiton "\" is a waiton for tests " (hash-table-ref missing-waitons missing-waiton)) ) (hash-table-keys missing-waitons) ) )) | > > > > > > > > > > > > > > | > > > > > > > > > > > | 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 | (lambda (missing-waiton) (debug:print-error 0 *default-log-port* "non-existent test \"" missing-waiton "\" is a waiton for tests " (hash-table-ref missing-waitons missing-waiton)) ) (hash-table-keys missing-waitons) ) )) ;; make-vector-record tasks task id action owner state target name test item params creation_time execution_time (define (make-tasks:task)(make-vector 11)) (define (tasks:task-get-id vec) (vector-ref vec 0)) (define (tasks:task-get-action vec) (vector-ref vec 1)) (define (tasks:task-get-owner vec) (vector-ref vec 2)) (define (tasks:task-get-state vec) (vector-ref vec 3)) (define (tasks:task-get-target vec) (vector-ref vec 4)) (define (tasks:task-get-name vec) (vector-ref vec 5)) (define (tasks:task-get-testpatt vec) (vector-ref vec 6)) (define (tasks:task-get-keylock vec) (vector-ref vec 7)) (define (tasks:task-get-params vec) (vector-ref vec 8)) (define (tasks:task-get-creation_time vec) (vector-ref vec 9)) (define (tasks:task-get-execution_time vec) (vector-ref vec 10)) (define (tasks:task-set-state! vec val)(vector-set! vec 3 val)) ;; make-vector-record tasks monitor id pid start_time last_update hostname username (define (make-tasks:monitor)(make-vector 5)) (define (tasks:monitor-get-id vec) (vector-ref vec 0)) (define (tasks:monitor-get-pid vec) (vector-ref vec 1)) (define (tasks:monitor-get-start_time vec) (vector-ref vec 2)) (define (tasks:monitor-get-last_update vec) (vector-ref vec 3)) (define (tasks:monitor-get-hostname vec) (vector-ref vec 4)) (define (tasks:monitor-get-username vec) (vector-ref vec 5)) ) |
Modified tree.scm from [ee0f2b29cf] to [d8bf0793ac].
︙ | ︙ | |||
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | (declare (unit tree)) (declare (uses mtargs)) (declare (uses debugprint)) (declare (uses launch)) (declare (uses gutils)) (declare (uses server)) (declare (uses dcommon)) (use format) (require-library iup) (import (prefix iup iup:)) (use canvas-draw) (use sqlite3 srfi-1 posix regex regex-case srfi-69) (import (prefix sqlite3 sqlite3:)) (import (prefix mtargs args:) debugprint) ;; (include "megatest-version.scm") ;; (include "common_records.scm") ;; (include "db_records.scm") ;; (include "key_records.scm") | > < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | (declare (unit tree)) (declare (uses mtargs)) (declare (uses debugprint)) (declare (uses launch)) (declare (uses gutils)) (declare (uses server)) (declare (uses dcommon)) (use format) (require-library iup) (import (prefix iup iup:)) (use canvas-draw) (use sqlite3 srfi-1 posix regex regex-case srfi-69) (import (prefix sqlite3 sqlite3:)) (import (prefix mtargs args:) debugprint) ;; (include "megatest-version.scm") ;; (include "common_records.scm") ;; (include "db_records.scm") ;; (include "key_records.scm") |