Index: tests/Makefile ================================================================== --- tests/Makefile +++ tests/Makefile @@ -45,11 +45,11 @@ unit : basicserver.log server.log all-rmt.log # all-rmt.log all-api.log # runs.log misc.log tests.log # inter dependencies on the unit tests, I wish these could be "suggestions" -all-rmt.log : all-api.log +# all-rmt.log : all-api.log rel : cd release;dashboard -rows 25 & ## basicserver.log : unittests/basicserver.scm ADDED tests/simplerun/stress-test.scm Index: tests/simplerun/stress-test.scm ================================================================== --- /dev/null +++ tests/simplerun/stress-test.scm @@ -0,0 +1,102 @@ +;;====================================================================== +;; S E R V E R +;;====================================================================== +;; 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: +;; +;; (cd ..;make && make install) && ./rununittest.sh server 1;(cd simplerun;megatest -stop-server 0) +(import big-chicken + chicken.random + test + srfi-18 + + rmtmod + trace + apimod + dbmod + launchmod + commonmod + ) + +(trace-call-sites #t) +(trace + + ;; db:get-dbdat + ;; rmt:find-main-server + ;; rmt:send-receive-real + ;; rmt:send-receive + ;; sexpr->string + ;; server-ready? + ;; rmt:register-server + ;; rmt:deregister-server + ;; rmt:open-main-connection + ;; rmt:general-open-connection + ;; rmt:get-conn + ;; common:watchdog + ;; rmt:find-main-server + ;; get-all-server-pkts + ;; get-viable-servers + ;; get-best-candidate + ;; api:run-server-process + ;; api:process-request + ;; rmt:run + ;; rmt:try-start-server + ) + + +(define *db* (db:setup ".db/main.db")) + +;; these let me cut and paste from source easily +(define apath *toppath*) +(define run-id (pseudo-random-integer 10)) +(define dbname (conc ".db/"run-id".db")) +(define remote *remotedat*) +(define keyvals '(("SYSTEM" "a")("RELEASE" "b"))) + +(test #f #t (rmt:open-main-connection remote apath)) +(test #f #t (conndat? (rmt:get-conn *remotedat* *toppath* ".db/main.db"))) +(test #f #t (conndat? (rmt:get-conn *remotedat* *toppath* ".db/main.db"))) +(test #f dbname (list-ref (rmt:send-receive-real *remotedat* *toppath* ".db/main.db" 'get-server `(,apath ,dbname)) + 6)) + +(thread-sleep! 2) +(test #f #t (rmt:general-open-connection *remotedat* *toppath* dbname)) + +(let loop ((end-time (+ (current-seconds) 600))) + (test #f #t (list? (rmt:get-servers-info *toppath*))) + + (test #f '("SYSTEM" "RELEASE") (rmt:get-keys)) + (test #f 1 (rmt:send-receive 'register-run #f (list keyvals "run1" "new" "n/a" "justme" #f))) + ;; (print "Got here.") + + (test #f 1 (rmt:send-receive 'register-run 1 (list keyvals "run1" "new" "n/a" "justme" #f))) + + (test #f 2 (rmt:register-run keyvals "run2" "new" "n/a" "justme" #f)) + ;; (test #f 2 (rmt:deregister-server *remotedat* *toppath* iface port server-key dbname + + (test #f #t (number? (rmt:get-count-servers *remotedat* *toppath*))) + + (test #f "run2" (rmt:get-run-name-from-id 2)) + (test #f #f (rmt:send-receive 'get-test-info-by-id 2 '(2 1))) + + (test #f #t (rmt:general-call 'update-cpuload-diskfree 2 1.5 1e6 1)) + (if (< (current-seconds) end-time)(loop end-time))) + +(exit)