Overview
Comment: | Merged in rpc stuff, fixed few bugs |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | archiving |
Files: | files | file ages | folders |
SHA1: |
331e7c90b2a4c20175faea173020685a |
User & Date: | matt on 2012-02-23 21:42:21 |
Other Links: | branch diff | manifest | tags |
Context
2012-02-23
| ||
22:28 | Ported part of test-set-status to be rpc enabled check-in: b92f8f8f5f user: matt tags: archiving | |
21:42 | Merged in rpc stuff, fixed few bugs check-in: 331e7c90b2 user: matt tags: archiving | |
2012-02-16
| ||
13:14 | Added ability to look up paths from previous tests. Test dir is now created before the run is registered check-in: 3dc6c2f1c3 user: mrwellan tags: archiving | |
Changes
Modified Makefile from [2f05184f32] to [cd8f90dd01].
︙ | |||
24 25 26 27 28 29 30 | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | - | # Special dependencies for the includes tests.o db.o launch.o runs.o dashboard-tests.o dashboard-guimonitor.o dashboard-main.o monitor.o dashboard.o megatest.o : db_records.scm tests.o runs.o dashboard.o dashboard-tests.o dashboard-main.o : run_records.scm db.o ezsteps.o keys.o launch.o megatest.o monitor.o runs-for-ref.o runs.o tests.o : key_records.scm tests.o tasks.o dashboard-tasks.o : task_records.scm runs.o : test_records.scm |
︙ |
Modified common.scm from [afba6d90ad] to [5ebf23fbcd].
︙ | |||
35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | + | (define *toppath* #f) (define *already-seen-runconfig-info* #f) (define *waiting-queue* (make-hash-table)) (define *globalexitstatus* 0) ;; attempt to work around possible thread issues (define *passnum* 0) ;; when running track calls to run-tests or similar (define *verbosity* 1) (define *rpc:listener* #f) ;; if set up for server communication this will hold the tcp port (define *runremote* #f) ;; if set up for server communication this will hold <host port> (define (get-with-default val default) (let ((val (args:get-arg val))) (if val val default))) (define (assoc/default key lst . default) (let ((res (assoc key lst))) |
︙ |
Modified db.scm from [353182e764] to [05d3c682d2].
︙ | |||
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | + + + + | ;; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ;; PURPOSE. ;;====================================================================== ;;====================================================================== ;; Database access ;;====================================================================== (require-extension (srfi 18) extras tcp rpc) (import (prefix rpc rpc:)) (use sqlite3 srfi-1 posix regex regex-case srfi-69 csv-xml) (import (prefix sqlite3 sqlite3:)) (declare (unit db)) (declare (uses common)) (declare (uses keys)) (declare (uses ods)) (include "common_records.scm") (include "db_records.scm") (include "key_records.scm") (include "run_records.scm") (define (open-db) ;; (conc *toppath* "/megatest.db") (car *configinfo*))) (let* ((dbpath (conc *toppath* "/megatest.db")) ;; fname) (configdat (car *configinfo*)) (dbexists (file-exists? dbpath)) (db (sqlite3:open-database dbpath)) ;; (never-give-up-open-db dbpath)) (handler (make-busy-timeout 36000))) |
︙ | |||
129 130 131 132 133 134 135 136 137 138 139 140 141 142 | 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | + | comment TEXT DEFAULT '', status TEXT DEFAULT 'n/a', type TEXT DEFAULT '', CONSTRAINT test_data_constraint UNIQUE (test_id,category,variable));") ;; Must do this *after* running patch db !! No more. (db:set-var db "MEGATEST_VERSION" megatest-version) )) (server:client-setup db) db)) ;;====================================================================== ;; TODO: ;; put deltas into an assoc list with version numbers ;; apply all from last to current ;;====================================================================== |
︙ | |||
405 406 407 408 409 410 411 412 413 414 415 416 417 418 | 410 411 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 438 439 440 441 442 443 | + + + + + + + + + + + + + + + + + + + + | (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=? AND NOT (item_path='' AND testname in (SELECT DISTINCT testname FROM tests WHERE testname=? AND item_path != ''));"))) ;;(debug:print 0 "QRY: " qry) (sqlite3:execute db qry run-id newstate newstatus testname testname))) testnames)) (define (db:teststep-set-status! db run-id test-name teststep-name state-in status-in item-path comment logfile) (debug:print 4 "run-id: " run-id " test-name: " test-name) (let* ((state (check-valid-items "state" state-in)) (status (check-valid-items "status" status-in)) (testdat (db:get-test-info db run-id test-name item-path))) (debug:print 5 "testdat: " testdat) (if (and testdat ;; if the section exists then force specification BUG, I don't like how this works. (or (not state)(not status))) (debug:print 0 "WARNING: Invalid " (if status "status" "state") " value \"" (if status state-in status-in) "\", update your validvalues section in megatest.config")) (if testdat (let ((test-id (test:get-id testdat))) ;; FIXME - this should not update the logfile unless it is specified. (sqlite3:execute db "INSERT OR REPLACE into test_steps (test_id,stepname,state,status,event_time,comment,logfile) VALUES(?,?,?,?,strftime('%s','now'),?,?);" test-id teststep-name state-in status-in (if comment comment "") (if logfile logfile "")) #t) ;; fake out a #t - could be execute is returning something complicated (debug:print 0 "ERROR: Can't update " test-name " for run " run-id " -> no such test in db")))) (define (db:delete-tests-in-state db run-id state) (sqlite3:execute db "DELETE FROM tests WHERE state=? AND run_id=?;" state run-id)) (define (db:test-set-state-status-by-id db test-id newstate newstatus newcomment) (if newstate (sqlite3:execute db "UPDATE tests SET state=? WHERE id=?;" newstate test-id)) (if newstatus (sqlite3:execute db "UPDATE tests SET status=? WHERE id=?;" newstatus test-id)) |
︙ | |||
971 972 973 974 975 976 977 | 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | (debug:print 0 "WARNING: path given, " outputfile " is relative, prefixing with current directory") (conc (current-directory) "/" outputfile))) results) ;; brutal clean up (system "rm -rf tempdir"))) ;; (db:extract-ods-file db "outputfile.ods" '(("sysname" "%")("fsname" "%")("datapath" "%")) "%") ;;====================================================================== ;; REMOTE DB ACCESS VIA RPC ;;====================================================================== ;; (define (rdb:get-var db var) ;; (define (rdb:set-var db var val) ;; (define (rdb-get-keys db) ;; (define (rdb:get-value-by-header row header field) ;; (define (rruns:get-std-run-fields keys remfields) ;; (define (rdb:get-runs db runpatt count offset keypatts) ;; (define (rdb:get-num-runs db runpatt) ;; (define (rdb:get-run-info db run-id) ;; (define (rdb:set-comment-for-run db run-id comment) ;; (define (rdb:delete-run db run-id) ;; (define (rdb:update-run-event_time db run-id) ;; (define (rdb-get-tests-for-run db run-id testpatt itempatt states statuses) ;; (define (rdb:delete-test-step-records db run-id test-name itemdat) ;; (define (rdb:delete-test-records db test-id) (define (rdb:set-tests-state-status db run-id testnames currstate currstatus newstate newstatus) (if *runremote* (let ((host (vector-ref *runremote* 0)) (port (vector-ref *runremote* 1))) ((rpc:procedure 'rdb:set-tests-state-status host port) run-id testnames currstate currstatus newstate newstatus)) (db:set-tests-state-status db run-id testnames currstate currstatus newstate newstatus))) (define (rdb:teststep-set-status! db run-id test-name teststep-name state-in status-in itemdat comment logfile) (print "teststep-set-status!:" run-id test-name teststep-name state-in status-in itemdat comment logfile) (let ((item-path (item-list->path itemdat))) (if *runremote* (let ((host (vector-ref *runremote* 0)) (port (vector-ref *runremote* 1))) ((rpc:procedure 'rdb:teststep-set-status! host port) run-id test-name teststep-name state-in status-in item-path comment logfile) (db:teststep-set-status! db run-id test-name teststep-name state-in status-in item-path comment logfile))))) ;; (define (rdb:delete-tests-in-state db run-id state) ;; (define (rdb:test-set-state-status-by-id db test-id newstate newstatus newcomment) ;; (define (rdb:get-count-tests-running db) ;; (define (rdb:get-count-tests-running-in-jobgroup db jobgroup) ;; (define (rdb:estimated-tests-remaining db run-id) ;; (define (rdb:get-test-info db run-id testname item-path) ;; (define (rdb:get-test-data-by-id db test-id) ;; (define (rdb:test-set-comment db run-id testname item-path comment) ;; (define (rdb:test-set-rundir! db run-id testname item-path rundir) ;; (define (rdb:test-get-paths-matching db keynames target) ;; (define (rdb:test-get-test-records-matching db keynames target) ;; (define (rdb:testmeta-get-record db testname) ;; (define (rdb:testmeta-add-record db testname) ;; (define (rdb:testmeta-update-field db testname field value) ;; (define (rdb:csv->test-data db test-id csvdata) ;; (define (rdb:read-test-data db test-id categorypatt) ;; (define (rdb:load-test-data db run-id test-name itemdat) ;; (define (rdb:test-data-rollup db test-id status) ;; (define (rdb:get-prev-tol-for-test db test-id category variable) ;; (define (rdb:step-get-time-as-string vec) ;; (define (rdb:get-steps-for-test db test-id) ;; (define (rdb:get-steps-table db test-id) ;; (define (rdb-get-prereqs-not-met db run-id waiton) ;; (define (rdb:get-prereqs-not-met db run-id waitons ref-item-path) ;; (define (rdb:extract-ods-file db outputfile keypatt-alist runspatt pathmod) |
Modified items.scm from [d370c880ec] to [63e566656e].
︙ | |||
14 15 16 17 18 19 20 | 14 15 16 17 18 19 20 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 46 47 | - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + | ;; (season "summer winter fall spring"))) (declare (unit items)) (declare (uses common)) (include "common_records.scm") |
︙ |
Modified launch.scm from [3d741a045b] to [39a68fda61].
︙ | |||
177 178 179 180 181 182 183 | 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 | - + - + | ;; (set! script (conc script "source " prev-env)))) ;; call the command using mt_ezstep (set! script (conc "mt_ezstep " stepname " " (if prevstep prevstep "-") " " stepcmd)) (debug:print 4 "script: " script) |
︙ |
Modified megatest.scm from [65f72e6e78] to [020b44b20d].
︙ | |||
15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | + | (import (prefix base64 base64:)) (declare (uses common)) (declare (uses megatest-version)) (declare (uses margs)) (declare (uses runs)) (declare (uses launch)) (declare (uses server)) (include "common_records.scm") (include "key_records.scm") (include "db_records.scm") (define help (conc " Megatest, documentation at http://www.kiatoa.com/fossils/megatest |
︙ | |||
88 89 90 91 92 93 94 95 96 97 98 99 100 101 | 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | + | -rollup : fill run (set by :runname) with latest test(s) from prior runs with same keys -update-meta : update the tests metadata for all tests -env2file fname : write the environment to fname.csh and fname.sh -setvars VAR1=val1,VAR2=val2 : Add environment variables to a run NB// these are overwritten by values set in config files. -archive : archive tests, use -target, :runname, -itempatt and -testpatt -server : start the server (reduces contention on megatest.db) Spreadsheet generation -extract-ods fname.ods : extract an open document spreadsheet from the database -pathmod path : insert path, i.e. path/runame/itempath/logfile.html will clear the field if no rundir/testname/itempath/logfile if it contains forward slashes the path will be converted to windows style |
︙ | |||
174 175 176 177 178 179 180 181 182 183 184 185 186 187 | 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | + + | "-runall" ;; run all tests "-remove-runs" "-keepgoing" "-usequeue" "-rebuild-db" "-rollup" "-update-meta" "-server" "-v" ;; verbose 2, more than normal (normal is 1) "-q" ;; quiet 0, errors/warnings only ) args:arg-hash 0)) (if (args:get-arg "-h") |
︙ | |||
377 378 379 380 381 382 383 384 385 386 387 388 389 390 | 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 | + + + + + + + + + + | runname (args:get-arg "-runtests") (args:get-arg "-itempatt") user (make-hash-table))))) ;;====================================================================== ;; Start the server ;;====================================================================== (if (args:get-arg "-server") (let* ((toppath (setup-for-run)) (db (if toppath (open-db) #f))) (if db (server:start db) (debug:print 0 "ERROR: Failed to setup for megatest")))) ;;;====================================================================== ;; Rollup into a run ;;====================================================================== (if (args:get-arg "-rollup") (general-run-call "-rollup" "rollup tests" (lambda (db keys keynames keyvallst) |
︙ | |||
539 540 541 542 543 544 545 | 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 | - + | (change-directory testpath) (if (not (setup-for-run)) (begin (debug:print 0 "Failed to setup, exiting") (exit 1))) (set! db (open-db)) (if (and state status) |
︙ | |||
602 603 604 605 606 607 608 | 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 | - + | (redir (case (string->symbol shell) ((tcsh csh ksh) ">&") ((zsh bash sh ash) "2>&1 >"))) (fullcmd (conc "(" (string-intersperse (cons cmd params) " ") ") " redir " " logfile))) ;; mark the start of the test |
︙ | |||
624 625 626 627 628 629 630 | 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 | - + | (cmd (string-intersperse (list "logpro" logprofile htmllogfile "<" logfile ">" (conc stepname "_logpro.log")) " "))) (debug:print 2 "INFO: running \"" cmd "\"") (change-directory startingdir) (set! exitstat (system cmd)) (set! *globalexitstatus* exitstat) ;; no necessary (change-directory testpath) (test-set-log! db run-id test-name itemdat htmllogfile))) |
︙ |
Modified runs.scm from [4295c23482] to [8d5b51c35f].
︙ | |||
15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | + | (declare (unit runs)) (declare (uses db)) (declare (uses common)) (declare (uses items)) (declare (uses runconfig)) (declare (uses tests)) (declare (uses server)) (include "common_records.scm") (include "key_records.scm") (include "db_records.scm") (include "run_records.scm") (include "test_records.scm") |
︙ | |||
208 209 210 211 212 213 214 | 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 | - + | (if (eq? *passnum* 0) (begin ;; have to delete test records where NOT_STARTED since they can cause -keepgoing to ;; get stuck due to becoming inaccessible from a failed test. I.e. if test B depends ;; on test A but test B reached the point on being registered as NOT_STARTED and test ;; A failed for some reason then on re-run using -keepgoing the run can never complete. (db:delete-tests-in-state db run-id "NOT_STARTED") |
︙ |
Modified server.scm from [0bbf1bf4b6] to [13820d7ecc].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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 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 | + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + - + + | ;; Copyright 2006-2011, Matthew Welland. ;; ;; This program is made available under the GNU GPL version 2.0 or ;; greater. See the accompanying file COPYING for details. ;; ;; This program is distributed WITHOUT ANY WARRANTY; without even the ;; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ;; PURPOSE. (require-extension (srfi 18) extras tcp rpc) (import (prefix rpc rpc:)) (use sqlite3 srfi-1 posix regex regex-case srfi-69) (import (prefix sqlite3 sqlite3:)) (declare (unit server)) (declare (uses common)) (declare (uses db)) (include "common_records.scm") (include "db_records.scm") ;; procstr is the name of the procedure to be called as a string (define (server:autoremote procstr params) (handle-exceptions exn (begin (debug:print 1 "Remote failed for " proc " " params) (apply (eval (string->symbol proc)) params)) (if *runremote* (apply (eval (string->symbol (conc "remote:" procstr))) params) (eval (string->symbol procstr) params)))) (define (server:start db) (debug:print 0 "Attempting to start the server ...") (let* ((rpc:listener (server:find-free-port-and-open (rpc:default-server-port))) (th1 (make-thread (cute (rpc:make-server rpc:listener) "rpc:server") |
Modified tests.scm from [1a89bc4432] to [fab9cd8fcd].
︙ | |||
9 10 11 12 13 14 15 | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | - | (include "common_records.scm") (include "key_records.scm") (include "db_records.scm") (include "run_records.scm") (include "test_records.scm") |
︙ | |||
367 368 369 370 371 372 373 | 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 | - + - - - - - - - - - - - - - - - - - | #f)))))))) ;;====================================================================== ;; test steps ;;====================================================================== |
︙ |