Index: megatest.scm ================================================================== --- megatest.scm +++ megatest.scm @@ -878,24 +878,27 @@ ;; NOTE: list-runs and list-db-targets operate on local db!!! ;; (if (or (args:get-arg "-list-runs") (args:get-arg "-list-db-targets")) (if (launch:setup-for-run) - (let* ((dbstruct (make-dbr:dbstruct path: *toppath* local: #t)) - (runpatt (args:get-arg "-list-runs")) - (testpatt (if (args:get-arg "-testpatt") - (args:get-arg "-testpatt") - "%")) - (keys (db:get-keys dbstruct)) + (let* ((dbstruct (make-dbr:dbstruct path: *toppath* local: #t)) + (runpatt (args:get-arg "-list-runs")) + (testpatt (if (args:get-arg "-testpatt") + (args:get-arg "-testpatt") + "%")) + (keys (db:get-keys dbstruct)) ;; (runsdat (db:get-runs dbstruct runpatt #f #f '())) - (runsdat (db:get-runs-by-patt dbstruct keys (or runpatt "%") (common:args-get-target) - #f #f)) + (runsdat (db:get-runs-by-patt dbstruct keys (or runpatt "%") (common:args-get-target) + #f #f)) ;; (cdb:remote-run db:get-runs #f runpatt #f #f '())) - (runs (db:get-rows runsdat)) - (header (db:get-header runsdat)) + (runs (db:get-rows runsdat)) + (header (db:get-header runsdat)) (db-targets (args:get-arg "-list-db-targets")) - (seen (make-hash-table))) + (mode (let ((dmode (args:get-arg "-dumpmode"))) + (if dmode (string->symbol dmode) #f))) + (seen (make-hash-table)) + (data (make-hash-table))) ;; target -> ;; Each run (for-each (lambda (run) (let ((targetstr (string-intersperse (map (lambda (x) (db:get-value-by-header run header x)) @@ -903,14 +906,21 @@ (if db-targets (if (not (hash-table-ref/default seen targetstr #f)) (begin (hash-table-set! seen targetstr #t) ;; (print "[" targetstr "]")))) - (print targetstr)))) - (if (not db-targets) - (let* ((run-id (db:get-value-by-header run header "id")) - (tests (db:get-tests-for-run dbstruct run-id testpatt '() '() #f #f #f 'testname 'asc #f))) + (case mode + ((json) + (hash-table-set! data targetstr + (or (hash-table-ref/default data targetstr #f)(make-hash-table)))) + (else + (print targetstr))))) + (let* ((run-id (db:get-value-by-header run header "id")) + (tests (db:get-tests-for-run dbstruct run-id testpatt '() '() #f #f #f 'testname 'asc #f)) + (run-data (hash-table-set! + (case mode + ((json) (print "Run: " targetstr "/" (db:get-value-by-header run header "runname") " status: " (db:get-value-by-header run header "state") " run-id: " run-id ", number tests: " (length tests)) (for-each (lambda (test) @@ -933,11 +943,11 @@ (equal? (db:test-get-state test) "NOT_STARTED"))) (begin (print " cpuload: " (db:test-get-cpuload test) "\n diskfree: " (db:test-get-diskfree test) "\n uname: " ;; (sdb:qry 'getstr - (db:test-get-uname test) ;; ) + (db:test-get-uname test) ;; ) "\n rundir: " ;; (sdb:qry 'getstr ;; (filedb:get-path *fdb* (db:test-get-rundir test) ;; ) ) ;; Each test ;; DO NOT remote run