Index: mtut.scm
==================================================================
--- mtut.scm
+++ mtut.scm
@@ -1128,11 +1128,11 @@
;; (if optional ;; we need to be able to differentiate same contour, different behavior.
;; (conc runkey ":" optional) ;; NOTE: NOT COMPLETELY IMPLEMENTED. DO NOT USE
;; runkey)
;; key-msg)
)))))
- (if (>= packets-generated (configf:lookup mtconf "setup" "max_packets_per_run")) (print "Skipping area: " area " and target: " runkey " due to packets-generated: " packets-generated " higher than " (configf:lookup mtconf "setup" "max_packets_per_run"))))
+ (if (>= packets-generated (string->number (configf:lookup mtconf "setup" "max_packets_per_run"))) (print "Skipping area: " area " and target: " runkey " due to packets-generated: " packets-generated " higher than " (configf:lookup mtconf "setup" "max_packets_per_run"))))
) (filter (lambda (x) (if (not (args:get-arg "-area")) #t (if (string= x (args:get-arg "-area")) #t #f))) all-areas))
) val-alist)) ;; iterate over the param split by ;\s*
;; fossil scm based triggers
Index: tests/Makefile
==================================================================
--- tests/Makefile
+++ tests/Makefile
@@ -38,11 +38,11 @@
TARGET = "ubuntu/nfs/none"
all : build unit test4
# test1 test2 test3 test4 test5 test6 test7 test8 test9
-unit : all-rmt.log
+unit : all-rmt.log all-api.log
# basicserver.log runs.log misc.log tests.log
rel :
cd release;dashboard -rows 25 &
Index: tests/rununittest.sh
==================================================================
--- tests/rununittest.sh
+++ tests/rununittest.sh
@@ -28,11 +28,11 @@
# Clean setup
#
dbdir=$(echo /tmp/$USER/megatest_localdb/simplerun/.[a-zA-Z]*/)
echo "dbdir=$dbdir"
-rm -f simplerun/megatest.db simplerun/monitor.db simplerun/db/monitor.db $dbdir
+rm -f simplerun/megatest.db simplerun/monitor.db simplerun/db/monitor.db
rm -rf simplelinks/ simpleruns/ simplerun/db/ $dbdir
mkdir -p simplelinks simpleruns
(cd simplerun;cp ../../*_records.scm .;perl -pi.bak -e 's/define-inline/define/' *_records.scm)
(cd simplerun;cp ../../altdb.scm .)
ADDED tests/unittests/all-api.scm
Index: tests/unittests/all-api.scm
==================================================================
--- /dev/null
+++ tests/unittests/all-api.scm
@@ -0,0 +1,158 @@
+
+;;======================================================================
+;; A L L - A P I
+;;======================================================================
+
+;; Copyright 2006-2017, Matthew Welland.
+;;
+;; This file is part of Megatest.
+;;
+;; Megatest is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; Megatest is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; 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 .
+
+
+;; Run like this:
+;;
+;; Update the following line. make unit from parent directory.
+;; ./rununittest.sh all-api 1
+
+;; Definitions:
+;; NTN - no test needed
+;; DEP - function is deprecated, no point in testing
+;; NED - function nested under others, no test needed.
+;; DEF - deferred
+
+(define my-dbstruct (db:setup #t))
+(define toppath (current-directory))
+(define keypatts '(("SYSTEM" "ubuntu")("RELEASE" "v1.234")) )
+(define keys (db:get-keys my-dbstruct))
+
+;;(test #f #t (string?(server:start-and-wait *toppath*)))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'start-server (list *toppath* ))) 0))
+
+(test #f '() (vector-ref (api:execute-requests my-dbstruct (vector 'get-key-val-pairs (list 0 ))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'set-var (list "LAST_UPDATE" 1234567))) 0))
+(test #f 1234567 (vector-ref (api:execute-requests my-dbstruct (vector 'get-var (list "LAST_UPDATE" ))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'del-var (list "LAST_UPDATE" ))) 0))
+(test #f '("SYSTEM" "RELEASE") (vector-ref (api:execute-requests my-dbstruct (vector 'get-keys (list ))) 1))
+(test #f '() (vector-ref (api:execute-requests my-dbstruct (vector 'get-key-vals (list 1 ))) 1))
+(test #f 0 (vector-ref (api:execute-requests my-dbstruct (vector "test-toplevel-num-items" (list 1 "foo"))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-test-info-by-id (list 1 1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-steps-info-by-id (list 1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-data-info-by-id (list 1))) 0))
+
+(test #f '(#t "successful login") (vector-ref (api:execute-requests my-dbstruct (vector 'login (list toppath megatest-version "Fred"))) 1))
+(test #f '(-1 . 0) (vector-ref (api:execute-requests my-dbstruct (vector 'get-latest-host-load (list "localhost"))) 1))
+
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-changed-record-ids (list 0))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-run-record-ids (list "%" 1 keys "%/%"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-not-completed-cnt (list 1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-tests-tags (list ))) 0))
+;; no such query supported in api.scm, but it is is the list of read-only queries.
+;;(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-tests-times (list ))) 0))
+(test #f '("SYSTEM" "RELEASE") (vector-ref (api:execute-requests my-dbstruct (vector 'get-keys-write (list ))) 1))
+(test #f (vector '("SYSTEM" "RELEASE") '())(vector-ref (api:execute-requests my-dbstruct (vector 'get-targets (list 1 ))) 1))
+(test #f "" (vector-ref (api:execute-requests my-dbstruct (vector 'get-target (list 1 ))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'general-call (list 'register-test 1 1 "foo" ""))) 0))
+(test #f 1 (vector-ref (api:execute-requests my-dbstruct (vector 'get-test-id (list 1 "foo" ""))) 1))
+(test #f "/tmp/badname" (vector-ref (api:execute-requests my-dbstruct (vector 'test-get-rundir-from-test-id (list 1 1))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'set-tests-state-status (list 1 '("foo") "COMPLETED" "PASS" "NOT_STARTED" "PASS"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'test-set-state-status-by-id (list 1 1 "COMPLETED" "PASS" "Just testing!"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-tests-for-run (list 1 "%" '() '() #f #f #f #f #f #f 0 #f))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-tests-for-run-mindata (list 1 "%" '("COMPLETED") '("PASS") #f ))) 0))
+;; api.scm calls db:get-tests-for-runs-mindata, which does not exist.
+;;(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'get-tests-for-runs-mindata (list 1 "%" '("COMPLETED") '("PASS") #f ))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "delete-test-records" (list 1 2 ))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "test-set-state-status" (list 1 1 "COMPLETED" "FAIL" "Another message" ))) 0))
+;; api.scm calls db:get-previous-test-run-record, which does not exist.
+;;(test #f '() (vector-ref (api:execute-requests my-dbstruct (vector "get-previous-test-run-record" (list 1 ))) 1))
+(test #f '() (vector-ref (api:execute-requests my-dbstruct (vector "get-matching-previous-test-run-records" (list 1 "foo" ""))) 1))
+(test #f '("/tmp/badname" "logs/final.log") (vector-ref (api:execute-requests my-dbstruct (vector "test-get-logfile-info" (list 1 "foo"))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "test-get-records-for-index-file" (list 1 "foo"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "get-testinfo-state-status" (list 1 1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "general-call" (list 'test-set-log 1 "/tmp/another/logfile/eh" 1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "test-set-archive-block-id" (list 1 1 123))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "test-set-top-process-pid" (list 1 1 123))) 0))
+(test #f 123 (vector-ref (api:execute-requests my-dbstruct (vector "test-get-top-process-pid" (list 1 1))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "get-run-ids-matching-target" (list keys "%/%" #f "%" "%" "%" "%"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "test-get-paths-matching-keynames-target-new" (list 1 keys "%/%" #f "%" "%" "%" "%"))) 0))
+(test #f '() (vector-ref (api:execute-requests my-dbstruct (vector "get-prereqs-not-met" (list 1 '() "foo" "" '(normal) '()))) 1))
+(test #f 0 (vector-ref (api:execute-requests my-dbstruct (vector "get-count-tests-running-for-run-id" (list 1))) 1))
+(test #f 0 (vector-ref (api:execute-requests my-dbstruct (vector "get-count-tests-running" (list 1))) 1))
+(test #f 0 (vector-ref (api:execute-requests my-dbstruct (vector "get-count-tests-running-for-testname" (list 1 "foo"))) 1))
+(test #f 0 (vector-ref (api:execute-requests my-dbstruct (vector "get-count-tests-running-in-jobgroup" (list 1 "nada"))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "set-state-status-and-roll-up-items" (list 1 "foo" "" "COMPLETED" "FAIL" "Just yet another message"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "set-state-status-and-roll-up-run" (list 1 "COMPLETED" "FAIL"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "top-test-set-per-pf-counts" (list 1 "foo"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "get-raw-run-stats" (list 1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "get-run-info" (list 1))) 0))
+(test #f 0 (vector-ref (api:execute-requests my-dbstruct (vector "get-num-runs" (list "%"))) 1))
+(test #f 0 (vector-ref (api:execute-requests my-dbstruct (vector "get-runs-cnt-by-patt" (list "%" "%/%" keys))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "register-run" (list '(("SYSTEM" "ubuntu")("RELEASE" "v1.234")) "bar" "NEW" "JUSTFINE" "bobafett" "quick" ))) 0))
+(test #f #(#t "bar") (api:execute-requests my-dbstruct (vector "get-run-name-from-id" '(1))))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "delete-run" (list 2))) 0)) ;; delete a non-existant run
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "update-run-stats" (list 1 '()))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "get-main-run-stats" (list 1 ))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "delete-old-deleted-test-records" '())) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "get-runs" (list "%" 10 0 keypatts))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "simple-get-runs" (list "%" 10 0 keypatts))) 0))
+(test #f #(#t (1))(api:execute-requests my-dbstruct (vector "get-all-run-ids" '())))
+(test #f #(#t ()) (api:execute-requests my-dbstruct (vector "get-prev-run-ids" '(1))))
+(test #f #(#t "JUSTFINE") (api:execute-requests my-dbstruct (vector "get-run-status" '(1))))
+(test #f #(#t "NEW") (api:execute-requests my-dbstruct (vector "get-run-state" '(1))))
+(test #f #(#t (("Totals" "UNKNOWN" 1) ("bar" "UNKNOWN" 1))) (api:execute-requests my-dbstruct (vector "get-run-stats" '())))
+(test #f #(#t ()) (api:execute-requests my-dbstruct (vector "get-run-times" '(1 1 ))))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'lock/unlock-run '(1 #t #f "mikey"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'set-run-status '(1 "NOTFINE" "A message"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'set-run-state-status '(1 "NOTFINE" "AMESS"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector 'update-run-event_time '(1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "get-runs-by-patt" (list keys "%" "%/%" #f #f #f #f "ASC"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "get-steps-data" (list 1 1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "get-steps-for-test" (list 1 1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "delete-steps-for-test!" (list 1 1))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "teststep-set-status!" (list 1 1 "step1" "COMPLETED" "PASS" "force pass" "/tmp/logfile"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "test-data-rollup" (list 1 1 "COMPLETED"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "csv->test-data" (list 1 1 "some,data"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "read-test-data" (list 1 1 "%"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "read-test-data*" (list 1 1 "%" "%"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "tasks-add" (list "run" "Fred" "%" "foo" "%/%" #f))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "tasks-set-state-given-param-key" (list "mykey" "COMPLETED"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "tasks-get-last" (list "%" "foo"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "find-task-queue-records" (list "%" "myrun" "%/%" "RUNNING" "run"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "testmeta-add-record" (list "foo"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "testmeta-update-field" (list "foo" "description" "junk"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "testmeta-get-record" (list "foo"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "have-incompletes?" (list 1 12000))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "mark-incomplete" (list 1 12000))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "no-sync-set" (list "field1" "value1"))) 0))
+(test #f "value1" (vector-ref (api:execute-requests my-dbstruct (vector "no-sync-get/default" (list "field1" #f))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "no-sync-del!" (list "field1"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "no-sync-get-lock" (list "mykey"))) 0))
+(test #f 1 (vector-ref (api:execute-requests my-dbstruct (vector "archive-register-disk" (list "mydisk" "/usr/mydisk" 10000000))) 1))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "archive-register-block-name" (list 1 "/usr/mydisk/myblock"))) 0))
+;;This api function calls db:archive-allocate-testsuite/area-to-block, which does not exist.
+;;(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "archive-allocate-testsuite/area-to-block" (list 1 "/usr/mydisk/myblock"))) 0))
+(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "test-get-archive-block-info" (list 1 ))) 0))
+
+
+;;debug this: ERROR: parameter last-update for db:sync-tables must be a pair or a number, received: (0 . last_update)
+;;(test #f #t (vector-ref (api:execute-requests my-dbstruct (vector "sync-inmem->db" (list 1))) 0))
+
+;;debug this. Error: bad argument count - received 0 but expected 5: #