Artifact
6dbaa79db60b52eb4b5fb49eed54a832a2de05cb:
0000: 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ;;==============
0010: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 0a 3b 3b 20 53 20 45 20 ========.;; S E
0050: 52 20 56 20 45 20 52 0a 3b 3b 3d 3d 3d 3d 3d 3d R V E R.;;======
0060: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00a0: 0a 3b 3b 20 20 43 6f 70 79 72 69 67 68 74 20 32 .;; Copyright 2
00b0: 30 30 36 2d 32 30 31 37 2c 20 4d 61 74 74 68 65 006-2017, Matthe
00c0: 77 20 57 65 6c 6c 61 6e 64 2e 0a 3b 3b 20 0a 3b w Welland..;; .;
00d0: 3b 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 70 ; This file is p
00e0: 61 72 74 20 6f 66 20 4d 65 67 61 74 65 73 74 2e art of Megatest.
00f0: 0a 3b 3b 20 0a 3b 3b 20 20 20 20 20 4d 65 67 61 .;; .;; Mega
0100: 74 65 73 74 20 69 73 20 66 72 65 65 20 73 6f 66 test is free sof
0110: 74 77 61 72 65 3a 20 79 6f 75 20 63 61 6e 20 72 tware: you can r
0120: 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 edistribute it a
0130: 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 nd/or modify.;;
0140: 20 20 20 20 69 74 20 75 6e 64 65 72 20 74 68 65 it under the
0150: 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e terms of the GN
0160: 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 U General Public
0170: 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c License as publ
0180: 69 73 68 65 64 20 62 79 0a 3b 3b 20 20 20 20 20 ished by.;;
0190: 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 the Free Softwar
01a0: 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 e Foundation, ei
01b0: 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f ther version 3 o
01c0: 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f f the License, o
01d0: 72 0a 3b 3b 20 20 20 20 20 28 61 74 20 79 6f 75 r.;; (at you
01e0: 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 r option) any la
01f0: 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 3b 3b 20 ter version..;;
0200: 0a 3b 3b 20 20 20 20 20 4d 65 67 61 74 65 73 74 .;; Megatest
0210: 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 is distributed
0220: 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 in the hope that
0230: 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 it will be usef
0240: 75 6c 2c 0a 3b 3b 20 20 20 20 20 62 75 74 20 57 ul,.;; but W
0250: 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 ITHOUT ANY WARRA
0260: 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 NTY; without eve
0270: 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 n the implied wa
0280: 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 20 20 20 rranty of.;;
0290: 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 MERCHANTABILITY
02a0: 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 or FITNESS FOR
02b0: 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 A PARTICULAR PUR
02c0: 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b POSE. See the.;
02d0: 3b 20 20 20 20 20 47 4e 55 20 47 65 6e 65 72 61 ; GNU Genera
02e0: 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 l Public License
02f0: 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c for more detail
0300: 73 2e 0a 3b 3b 20 0a 3b 3b 20 20 20 20 20 59 6f s..;; .;; Yo
0310: 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 u should have re
0320: 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 ceived a copy of
0330: 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c the GNU General
0340: 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a Public License.
0350: 3b 3b 20 20 20 20 20 61 6c 6f 6e 67 20 77 69 74 ;; along wit
0360: 68 20 4d 65 67 61 74 65 73 74 2e 20 20 49 66 20 h Megatest. If
0370: 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 3a 2f not, see <http:/
0380: 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 /www.gnu.org/lic
0390: 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 20 52 75 6e enses/>...;; Run
03a0: 20 6c 69 6b 65 20 74 68 69 73 3a 0a 3b 3b 0a 3b like this:.;;.;
03b0: 3b 20 20 2e 2f 72 75 6e 75 6e 69 74 74 65 73 74 ; ./rununittest
03c0: 2e 73 68 20 73 65 72 76 65 72 20 31 3b 28 63 64 .sh server 1;(cd
03d0: 20 73 69 6d 70 6c 65 72 75 6e 3b 6d 65 67 61 74 simplerun;megat
03e0: 65 73 74 20 2d 73 74 6f 70 2d 73 65 72 76 65 72 est -stop-server
03f0: 20 30 29 0a 0a 28 64 65 6c 65 74 65 2d 66 69 6c 0)..(delete-fil
0400: 65 2a 20 22 6c 6f 67 73 2f 31 2e 6c 6f 67 22 29 e* "logs/1.log")
0410: 0a 28 64 65 66 69 6e 65 20 72 75 6e 2d 69 64 20 .(define run-id
0420: 31 29 0a 0a 28 74 65 73 74 20 22 73 65 74 75 70 1)..(test "setup
0430: 20 66 6f 72 20 72 75 6e 22 20 23 74 20 28 62 65 for run" #t (be
0440: 67 69 6e 20 28 6c 61 75 6e 63 68 3a 73 65 74 75 gin (launch:setu
0450: 70 29 0a 20 09 09 09 09 28 73 74 72 69 6e 67 3f p). ....(string?
0460: 20 28 67 65 74 65 6e 76 20 22 4d 54 5f 52 55 4e (getenv "MT_RUN
0470: 5f 41 52 45 41 5f 48 4f 4d 45 22 29 29 29 29 0a _AREA_HOME")))).
0480: 0a 28 74 65 73 74 20 23 66 20 23 74 20 28 61 6e .(test #f #t (an
0490: 64 20 28 73 65 72 76 65 72 3a 6b 69 6e 64 2d 72 d (server:kind-r
04a0: 75 6e 20 2a 74 6f 70 70 61 74 68 2a 29 20 23 74 un *toppath*) #t
04b0: 29 29 0a 0a 0a 28 64 65 66 69 6e 65 20 75 73 65 ))...(define use
04c0: 72 20 20 20 20 28 63 75 72 72 65 6e 74 2d 75 73 r (current-us
04d0: 65 72 2d 6e 61 6d 65 29 29 0a 28 64 65 66 69 6e er-name)).(defin
04e0: 65 20 72 75 6e 6e 61 6d 65 20 22 6d 79 74 65 73 e runname "mytes
04f0: 74 72 75 6e 22 29 0a 28 64 65 66 69 6e 65 20 6b trun").(define k
0500: 65 79 73 20 20 20 20 28 72 6d 74 3a 67 65 74 2d eys (rmt:get-
0510: 6b 65 79 73 29 29 0a 28 64 65 66 69 6e 65 20 72 keys)).(define r
0520: 75 6e 69 6e 66 6f 20 23 66 29 0a 28 64 65 66 69 uninfo #f).(defi
0530: 6e 65 20 6b 65 79 76 61 6c 73 20 27 28 28 22 53 ne keyvals '(("S
0540: 59 53 54 45 4d 22 20 22 61 62 63 22 29 28 22 52 YSTEM" "abc")("R
0550: 45 4c 45 41 53 45 22 20 22 64 65 66 22 29 29 29 ELEASE" "def")))
0560: 0a 28 64 65 66 69 6e 65 20 68 65 61 64 65 72 20 .(define header
0570: 20 28 6c 69 73 74 20 22 53 59 53 54 45 4d 22 20 (list "SYSTEM"
0580: 22 52 45 4c 45 41 53 45 22 20 22 69 64 22 20 22 "RELEASE" "id" "
0590: 72 75 6e 6e 61 6d 65 22 20 22 73 74 61 74 65 22 runname" "state"
05a0: 20 22 73 74 61 74 75 73 22 20 22 6f 77 6e 65 72 "status" "owner
05b0: 22 20 22 65 76 65 6e 74 5f 74 69 6d 65 22 29 29 " "event_time"))
05c0: 0a 0a 3b 3b 20 53 65 74 75 70 0a 3b 3b 0a 3b 3b ..;; Setup.;;.;;
05d0: 20 28 74 65 73 74 20 23 66 20 23 66 20 20 28 6e (test #f #f (n
05e0: 6f 74 20 28 63 6c 69 65 6e 74 3a 73 65 74 75 70 ot (client:setup
05f0: 20 72 75 6e 2d 69 64 29 29 29 0a 3b 3b 20 28 74 run-id))).;; (t
0600: 65 73 74 20 23 66 20 23 66 20 20 28 6e 6f 74 20 est #f #f (not
0610: 28 68 61 73 68 2d 74 61 62 6c 65 2d 72 65 66 2f (hash-table-ref/
0620: 64 65 66 61 75 6c 74 20 2a 72 75 6e 72 65 6d 6f default *runremo
0630: 74 65 2a 20 72 75 6e 2d 69 64 20 23 66 29 29 29 te* run-id #f)))
0640: 0a 0a 3b 3b 20 4c 6f 67 69 6e 0a 3b 3b 0a 28 74 ..;; Login.;;.(t
0650: 65 73 74 20 23 66 27 28 23 74 20 22 73 75 63 63 est #f'(#t "succ
0660: 65 73 73 66 75 6c 20 6c 6f 67 69 6e 22 29 0a 20 essful login").
0670: 20 20 20 20 20 28 72 6d 74 3a 6c 6f 67 69 6e 20 (rmt:login
0680: 72 75 6e 2d 69 64 29 29 0a 0a 3b 3b 20 4b 65 79 run-id))..;; Key
0690: 73 0a 3b 3b 0a 28 74 65 73 74 20 23 66 20 27 28 s.;;.(test #f '(
06a0: 22 53 59 53 54 45 4d 22 20 22 52 45 4c 45 41 53 "SYSTEM" "RELEAS
06b0: 45 22 29 20 20 28 72 6d 74 3a 67 65 74 2d 6b 65 E") (rmt:get-ke
06c0: 79 73 29 29 0a 0a 3b 3b 20 4e 6f 20 64 61 74 61 ys))..;; No data
06d0: 20 69 6e 20 64 62 0a 3b 3b 0a 28 74 65 73 74 20 in db.;;.(test
06e0: 23 66 20 27 28 29 20 28 72 6d 74 3a 67 65 74 2d #f '() (rmt:get-
06f0: 61 6c 6c 2d 72 75 6e 2d 69 64 73 29 29 0a 28 74 all-run-ids)).(t
0700: 65 73 74 20 23 66 20 23 66 20 20 28 72 6d 74 3a est #f #f (rmt:
0710: 67 65 74 2d 72 75 6e 2d 6e 61 6d 65 2d 66 72 6f get-run-name-fro
0720: 6d 2d 69 64 20 72 75 6e 2d 69 64 29 29 0a 28 74 m-id run-id)).(t
0730: 65 73 74 20 23 66 20 0a 20 20 20 20 20 20 28 76 est #f . (v
0740: 65 63 74 6f 72 0a 20 20 20 20 20 20 20 68 65 61 ector. hea
0750: 64 65 72 0a 20 20 20 20 20 20 20 28 76 65 63 74 der. (vect
0760: 6f 72 20 23 66 20 23 66 20 23 66 20 23 66 29 29 or #f #f #f #f))
0770: 0a 20 20 20 20 20 20 28 72 6d 74 3a 67 65 74 2d . (rmt:get-
0780: 72 75 6e 2d 69 6e 66 6f 20 72 75 6e 2d 69 64 29 run-info run-id)
0790: 29 0a 0a 3b 3b 20 49 6e 73 65 72 74 20 64 61 74 )..;; Insert dat
07a0: 61 20 69 6e 74 6f 20 64 62 0a 3b 3b 0a 28 74 65 a into db.;;.(te
07b0: 73 74 20 23 66 20 31 20 28 72 6d 74 3a 72 65 67 st #f 1 (rmt:reg
07c0: 69 73 74 65 72 2d 72 75 6e 20 6b 65 79 76 61 6c ister-run keyval
07d0: 73 20 72 75 6e 6e 61 6d 65 20 22 6e 65 77 22 20 s runname "new"
07e0: 22 6e 2f 61 22 20 75 73 65 72 29 29 0a 3b 3b 20 "n/a" user)).;;
07f0: 28 74 65 73 74 20 23 66 20 23 66 20 28 72 6d 74 (test #f #f (rmt
0800: 3a 67 65 74 2d 72 75 6e 73 2d 62 79 2d 70 61 74 :get-runs-by-pat
0810: 74 20 6b 65 79 73 20 72 75 6e 6e 61 6d 65 29 29 t keys runname))
0820: 0a 28 74 65 73 74 20 23 66 20 23 74 20 28 72 6d .(test #f #t (rm
0830: 74 3a 67 65 6e 65 72 61 6c 2d 63 61 6c 6c 20 27 t:general-call '
0840: 72 65 67 69 73 74 65 72 2d 74 65 73 74 20 72 75 register-test ru
0850: 6e 2d 69 64 20 72 75 6e 2d 69 64 20 22 74 65 73 n-id run-id "tes
0860: 74 2d 6f 6e 65 22 20 22 22 29 29 0a 28 64 65 66 t-one" "")).(def
0870: 69 6e 65 20 74 65 73 74 2d 6f 6e 65 2d 69 64 20 ine test-one-id
0880: 23 66 29 0a 28 74 65 73 74 20 23 66 20 31 20 20 #f).(test #f 1
0890: 28 6c 65 74 20 28 28 74 65 73 74 2d 69 64 20 28 (let ((test-id (
08a0: 72 6d 74 3a 67 65 74 2d 74 65 73 74 2d 69 64 20 rmt:get-test-id
08b0: 72 75 6e 2d 69 64 20 22 74 65 73 74 2d 6f 6e 65 run-id "test-one
08c0: 22 20 22 22 29 29 29 0a 09 20 20 20 20 20 20 28 " ""))).. (
08d0: 73 65 74 21 20 74 65 73 74 2d 6f 6e 65 2d 69 64 set! test-one-id
08e0: 20 74 65 73 74 2d 69 64 29 0a 09 20 20 20 20 20 test-id)..
08f0: 20 74 65 73 74 2d 69 64 29 29 0a 28 64 65 66 69 test-id)).(defi
0900: 6e 65 20 74 65 73 74 2d 6f 6e 65 2d 72 65 63 20 ne test-one-rec
0910: 23 66 29 0a 28 74 65 73 74 20 23 66 20 22 74 65 #f).(test #f "te
0920: 73 74 2d 6f 6e 65 22 20 28 6c 65 74 20 28 28 74 st-one" (let ((t
0930: 65 73 74 2d 72 65 63 20 28 72 6d 74 3a 67 65 74 est-rec (rmt:get
0940: 2d 74 65 73 74 2d 69 6e 66 6f 2d 62 79 2d 69 64 -test-info-by-id
0950: 20 72 75 6e 2d 69 64 20 74 65 73 74 2d 6f 6e 65 run-id test-one
0960: 2d 69 64 29 29 29 0a 09 09 20 20 20 20 20 20 28 -id)))... (
0970: 73 65 74 21 20 74 65 73 74 2d 6f 6e 65 2d 72 65 set! test-one-re
0980: 63 20 74 65 73 74 2d 72 65 63 29 0a 09 09 20 20 c test-rec)...
0990: 20 20 20 20 28 76 65 63 74 6f 72 2d 72 65 66 20 (vector-ref
09a0: 74 65 73 74 2d 72 65 63 20 32 29 29 29 0a 0a 3b test-rec 2)))..;
09b0: 3b 20 57 69 74 68 20 64 61 74 61 20 69 6e 20 64 ; With data in d
09c0: 62 0a 3b 3b 0a 28 70 72 69 6e 74 20 22 55 73 69 b.;;.(print "Usi
09d0: 6e 67 20 72 75 6e 61 6d 65 3d 22 20 72 75 6e 6e ng runame=" runn
09e0: 61 6d 65 29 0a 28 74 65 73 74 20 23 66 20 27 28 ame).(test #f '(
09f0: 31 29 20 20 20 20 28 72 6d 74 3a 67 65 74 2d 61 1) (rmt:get-a
0a00: 6c 6c 2d 72 75 6e 2d 69 64 73 29 29 0a 28 74 65 ll-run-ids)).(te
0a10: 73 74 20 23 66 20 72 75 6e 6e 61 6d 65 20 28 72 st #f runname (r
0a20: 6d 74 3a 67 65 74 2d 72 75 6e 2d 6e 61 6d 65 2d mt:get-run-name-
0a30: 66 72 6f 6d 2d 69 64 20 72 75 6e 2d 69 64 29 29 from-id run-id))
0a40: 0a 28 74 65 73 74 20 23 66 20 0a 20 20 20 20 20 .(test #f .
0a50: 20 72 75 6e 6e 61 6d 65 0a 20 20 20 20 20 20 28 runname. (
0a60: 6c 65 74 20 28 28 72 75 6e 2d 69 6e 66 6f 20 28 let ((run-info (
0a70: 72 6d 74 3a 67 65 74 2d 72 75 6e 2d 69 6e 66 6f rmt:get-run-info
0a80: 20 72 75 6e 2d 69 64 29 29 29 0a 09 28 64 62 3a run-id)))..(db:
0a90: 67 65 74 2d 76 61 6c 75 65 2d 62 79 2d 68 65 61 get-value-by-hea
0aa0: 64 65 72 20 28 64 62 3a 67 65 74 2d 72 6f 77 73 der (db:get-rows
0ab0: 20 72 75 6e 2d 69 6e 66 6f 29 0a 09 09 09 09 28 run-info).....(
0ac0: 64 62 3a 67 65 74 2d 68 65 61 64 65 72 20 72 75 db:get-header ru
0ad0: 6e 2d 69 6e 66 6f 29 0a 09 09 09 09 22 72 75 6e n-info)....."run
0ae0: 6e 61 6d 65 22 29 29 29 0a 0a 3b 3b 20 74 65 73 name")))..;; tes
0af0: 74 20 6b 69 6c 6c 69 6e 67 20 73 65 72 76 65 72 t killing server
0b00: 0a 3b 3b 0a 28 66 6f 72 2d 65 61 63 68 0a 20 28 .;;.(for-each. (
0b10: 6c 61 6d 62 64 61 20 28 72 75 6e 2d 69 64 29 0a lambda (run-id).
0b20: 20 20 20 28 74 65 73 74 20 23 66 20 23 74 20 28 (test #f #t (
0b30: 61 6e 64 20 28 74 61 73 6b 73 3a 6b 69 6c 6c 2d and (tasks:kill-
0b40: 73 65 72 76 65 72 2d 72 75 6e 2d 69 64 20 72 75 server-run-id ru
0b50: 6e 2d 69 64 29 20 23 74 29 29 0a 20 20 20 28 74 n-id) #t)). (t
0b60: 65 73 74 20 23 66 20 23 66 20 28 74 61 73 6b 73 est #f #f (tasks
0b70: 3a 73 65 72 76 65 72 2d 72 75 6e 6e 69 6e 67 2d :server-running-
0b80: 6f 72 2d 73 74 61 72 74 69 6e 67 3f 20 28 64 62 or-starting? (db
0b90: 3a 64 65 6c 61 79 2d 69 66 2d 62 75 73 79 20 28 :delay-if-busy (
0ba0: 74 61 73 6b 73 3a 6f 70 65 6e 2d 64 62 29 29 20 tasks:open-db))
0bb0: 72 75 6e 2d 69 64 29 29 29 0a 20 28 6c 69 73 74 run-id))). (list
0bc0: 20 30 20 31 29 29 0a 0a 3b 3b 20 54 65 73 74 73 0 1))..;; Tests
0bd0: 20 74 6f 20 61 73 73 65 73 73 20 72 65 61 64 69 to assess readi
0be0: 6e 67 2f 77 72 69 74 69 6e 67 20 77 68 69 6c 65 ng/writing while
0bf0: 20 73 65 72 76 65 72 73 20 61 72 65 20 73 74 61 servers are sta
0c00: 72 74 69 6e 67 2f 73 74 6f 70 70 69 6e 67 0a 3b rting/stopping.;
0c10: 3b 20 4e 4f 20 4c 4f 4e 47 45 52 20 41 50 50 4c ; NO LONGER APPL
0c20: 49 43 41 42 4c 45 0a 0a 3b 3b 20 53 65 72 76 65 ICABLE..;; Serve
0c30: 72 20 74 65 73 74 73 20 67 6f 20 68 65 72 65 0a r tests go here.
0c40: 28 64 65 66 69 6e 65 20 28 73 65 72 76 65 72 2d (define (server-
0c50: 74 65 73 74 73 2d 64 6f 6e 74 2d 72 75 6e 2d 72 tests-dont-run-r
0c60: 69 67 68 74 2d 6e 6f 77 29 0a 28 66 6f 72 2d 65 ight-now).(for-e
0c70: 61 63 68 0a 20 28 6c 61 6d 62 64 61 20 28 72 75 ach. (lambda (ru
0c80: 6e 2d 69 64 29 0a 20 20 20 28 74 65 73 74 20 23 n-id). (test #
0c90: 66 20 23 66 20 28 74 61 73 6b 73 3a 73 65 72 76 f #f (tasks:serv
0ca0: 65 72 2d 72 75 6e 6e 69 6e 67 2d 6f 72 2d 73 74 er-running-or-st
0cb0: 61 72 74 69 6e 67 3f 20 28 64 62 3a 64 65 6c 61 arting? (db:dela
0cc0: 79 2d 69 66 2d 62 75 73 79 20 28 74 61 73 6b 73 y-if-busy (tasks
0cd0: 3a 6f 70 65 6e 2d 64 62 29 29 20 72 75 6e 2d 69 :open-db)) run-i
0ce0: 64 29 29 0a 20 20 20 28 73 65 72 76 65 72 3a 6b d)). (server:k
0cf0: 69 6e 64 2d 72 75 6e 20 72 75 6e 2d 69 64 29 0a ind-run run-id).
0d00: 20 20 20 28 74 65 73 74 20 22 64 69 64 20 73 65 (test "did se
0d10: 72 76 65 72 20 73 74 61 72 74 20 77 69 74 68 69 rver start withi
0d20: 6e 20 32 30 20 73 65 63 6f 6e 64 73 3f 22 0a 09 n 20 seconds?"..
0d30: 20 23 74 0a 09 20 28 6c 65 74 20 6c 6f 6f 70 20 #t.. (let loop
0d40: 28 28 72 65 6d 74 72 69 65 73 20 32 30 29 0a 09 ((remtries 20)..
0d50: 09 20 20 20 20 28 72 75 6e 6e 69 6e 67 20 28 74 . (running (t
0d60: 61 73 6b 73 3a 73 65 72 76 65 72 2d 72 75 6e 6e asks:server-runn
0d70: 69 6e 67 2d 6f 72 2d 73 74 61 72 74 69 6e 67 3f ing-or-starting?
0d80: 20 28 64 62 3a 64 65 6c 61 79 2d 69 66 2d 62 75 (db:delay-if-bu
0d90: 73 79 0a 09 09 09 09 09 09 09 09 20 28 74 61 73 sy......... (tas
0da0: 6b 73 3a 6f 70 65 6e 2d 64 62 29 29 0a 09 09 09 ks:open-db))....
0db0: 09 09 09 09 09 72 75 6e 2d 69 64 29 29 29 0a 09 .....run-id)))..
0dc0: 20 20 20 28 69 66 20 72 75 6e 6e 69 6e 67 20 0a (if running .
0dd0: 09 20 20 20 20 20 20 20 28 3e 20 72 75 6e 6e 69 . (> runni
0de0: 6e 67 20 30 29 0a 09 20 20 20 20 20 20 20 28 69 ng 0).. (i
0df0: 66 20 28 3e 20 72 65 6d 74 72 69 65 73 20 30 29 f (> remtries 0)
0e00: 0a 09 09 20 20 20 28 62 65 67 69 6e 0a 09 09 20 ... (begin...
0e10: 20 20 20 20 28 74 68 72 65 61 64 2d 73 6c 65 65 (thread-slee
0e20: 70 21 20 31 29 0a 09 09 20 20 20 20 20 28 6c 6f p! 1)... (lo
0e30: 6f 70 20 28 2d 20 72 65 6d 74 72 69 65 73 20 31 op (- remtries 1
0e40: 29 0a 09 09 09 20 20 20 28 74 61 73 6b 73 3a 73 ).... (tasks:s
0e50: 65 72 76 65 72 2d 72 75 6e 6e 69 6e 67 2d 6f 72 erver-running-or
0e60: 2d 73 74 61 72 74 69 6e 67 3f 20 28 64 62 3a 64 -starting? (db:d
0e70: 65 6c 61 79 2d 69 66 2d 62 75 73 79 0a 09 09 09 elay-if-busy....
0e80: 09 09 09 09 20 20 20 20 20 20 20 28 74 61 73 6b .... (task
0e90: 73 3a 6f 70 65 6e 2d 64 62 29 29 0a 09 09 09 09 s:open-db)).....
0ea0: 09 09 09 20 20 20 20 20 20 72 75 6e 2d 69 64 29 ... run-id)
0eb0: 29 29 29 29 29 29 0a 20 20 20 0a 20 20 20 28 74 )))))). . (t
0ec0: 65 73 74 20 22 64 69 64 20 73 65 72 76 65 72 20 est "did server
0ed0: 62 65 63 6f 6d 65 20 61 76 61 69 6c 61 62 6c 65 become available
0ee0: 22 20 23 74 0a 09 20 28 6c 65 74 20 6c 6f 6f 70 " #t.. (let loop
0ef0: 20 28 28 72 65 6d 74 72 69 65 73 20 31 30 29 0a ((remtries 10).
0f00: 09 09 20 20 20 20 28 72 65 73 20 20 20 20 20 20 .. (res
0f10: 28 74 61 73 6b 73 3a 67 65 74 2d 73 65 72 76 65 (tasks:get-serve
0f20: 72 20 28 64 62 3a 64 65 6c 61 79 2d 69 66 2d 62 r (db:delay-if-b
0f30: 75 73 79 20 28 74 61 73 6b 73 3a 6f 70 65 6e 2d usy (tasks:open-
0f40: 64 62 29 29 20 72 75 6e 2d 69 64 29 29 29 0a 09 db)) run-id)))..
0f50: 20 20 20 28 69 66 20 72 65 73 0a 09 20 20 20 20 (if res..
0f60: 20 20 20 28 76 65 63 74 6f 72 3f 20 72 65 73 29 (vector? res)
0f70: 0a 09 20 20 20 20 20 20 20 28 62 65 67 69 6e 0a .. (begin.
0f80: 09 09 20 28 69 66 20 28 3e 20 72 65 6d 74 72 69 .. (if (> remtri
0f90: 65 73 20 30 29 0a 09 09 20 20 20 20 20 28 62 65 es 0)... (be
0fa0: 67 69 6e 0a 09 09 20 20 20 20 20 20 20 28 74 68 gin... (th
0fb0: 72 65 61 64 2d 73 6c 65 65 70 21 20 31 2e 31 29 read-sleep! 1.1)
0fc0: 0a 09 09 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 ... (loop
0fd0: 28 2d 20 72 65 6d 74 72 69 65 73 20 31 29 28 74 (- remtries 1)(t
0fe0: 61 73 6b 73 3a 67 65 74 2d 73 65 72 76 65 72 20 asks:get-server
0ff0: 28 64 62 3a 64 65 6c 61 79 2d 69 66 2d 62 75 73 (db:delay-if-bus
1000: 79 20 28 74 61 73 6b 73 3a 6f 70 65 6e 2d 64 62 y (tasks:open-db
1010: 29 29 20 72 75 6e 2d 69 64 29 29 29 0a 09 09 20 )) run-id)))...
1020: 20 20 20 20 72 65 73 29 29 29 29 29 0a 20 20 20 res))))).
1030: 29 0a 20 28 6c 69 73 74 20 30 20 31 29 29 29 0a ). (list 0 1))).
1040: 0a 28 64 65 66 69 6e 65 20 73 74 61 72 74 2d 74 .(define start-t
1050: 69 6d 65 20 28 63 75 72 72 65 6e 74 2d 73 65 63 ime (current-sec
1060: 6f 6e 64 73 29 29 0a 28 64 65 66 69 6e 65 20 28 onds)).(define (
1070: 72 65 61 64 69 6e 67 2d 77 72 69 74 69 6e 67 2d reading-writing-
1080: 77 68 69 6c 65 2d 73 65 72 76 65 72 2d 73 74 61 while-server-sta
1090: 72 74 69 6e 67 2d 73 74 6f 70 70 69 6e 67 2d 64 rting-stopping-d
10a0: 6f 6e 74 2d 72 75 6e 2d 6e 6f 77 29 0a 28 6c 65 ont-run-now).(le
10b0: 74 20 6c 6f 6f 70 20 28 28 74 65 73 74 2d 73 74 t loop ((test-st
10c0: 61 74 65 20 27 73 74 61 72 74 29 29 0a 20 20 28 ate 'start)). (
10d0: 6c 65 74 2a 20 28 28 73 65 72 76 65 72 2d 64 61 let* ((server-da
10e0: 74 73 20 28 74 61 73 6b 73 3a 67 65 74 2d 73 65 ts (tasks:get-se
10f0: 72 76 65 72 2d 72 65 63 6f 72 64 73 20 28 64 62 rver-records (db
1100: 3a 64 65 6c 61 79 2d 69 66 2d 62 75 73 79 20 28 :delay-if-busy (
1110: 74 61 73 6b 73 3a 6f 70 65 6e 2d 64 62 29 29 20 tasks:open-db))
1120: 72 75 6e 2d 69 64 29 29 0a 09 20 28 66 69 72 73 run-id)).. (firs
1130: 74 2d 64 61 74 20 20 20 28 69 66 20 28 6e 6f 74 t-dat (if (not
1140: 20 28 6e 75 6c 6c 3f 20 73 65 72 76 65 72 2d 64 (null? server-d
1150: 61 74 73 29 29 0a 09 09 09 20 20 28 63 61 72 20 ats)).... (car
1160: 73 65 72 76 65 72 2d 64 61 74 73 29 0a 09 09 09 server-dats)....
1170: 20 20 23 66 29 29 29 0a 20 20 20 20 28 6d 61 70 #f))). (map
1180: 20 28 6c 61 6d 62 64 61 20 28 64 61 74 29 0a 09 (lambda (dat)..
1190: 20 20 20 28 61 70 70 6c 79 20 70 72 69 6e 74 20 (apply print
11a0: 28 69 6e 74 65 72 73 70 65 72 73 65 20 28 76 65 (intersperse (ve
11b0: 63 74 6f 72 2d 3e 6c 69 73 74 20 64 61 74 29 20 ctor->list dat)
11c0: 22 2c 20 22 29 29 29 0a 09 20 73 65 72 76 65 72 ", "))).. server
11d0: 2d 64 61 74 73 29 0a 20 20 20 20 28 74 65 73 74 -dats). (test
11e0: 20 23 66 20 74 65 73 74 2d 6f 6e 65 2d 72 65 63 #f test-one-rec
11f0: 20 28 72 6d 74 3a 67 65 74 2d 74 65 73 74 2d 69 (rmt:get-test-i
1200: 6e 66 6f 2d 62 79 2d 69 64 20 72 75 6e 2d 69 64 nfo-by-id run-id
1210: 20 74 65 73 74 2d 6f 6e 65 2d 69 64 29 29 0a 20 test-one-id)).
1220: 20 20 20 28 74 68 72 65 61 64 2d 73 6c 65 65 70 (thread-sleep
1230: 21 20 31 29 0a 20 20 20 20 28 63 61 73 65 20 74 ! 1). (case t
1240: 65 73 74 2d 73 74 61 74 65 0a 20 20 20 20 20 20 est-state.
1250: 28 28 73 74 61 72 74 29 0a 20 20 20 20 20 20 20 ((start).
1260: 28 70 72 69 6e 74 20 22 54 72 79 69 6e 67 20 74 (print "Trying t
1270: 6f 20 73 74 61 72 74 20 73 65 72 76 65 72 22 29 o start server")
1280: 0a 20 20 20 20 20 20 20 28 73 65 72 76 65 72 3a . (server:
1290: 6b 69 6e 64 2d 72 75 6e 20 72 75 6e 2d 69 64 29 kind-run run-id)
12a0: 0a 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 27 73 . (loop 's
12b0: 65 72 76 65 72 2d 73 74 61 72 74 65 64 29 29 0a erver-started)).
12c0: 20 20 20 20 20 20 28 28 73 65 72 76 65 72 2d 73 ((server-s
12d0: 74 61 72 74 65 64 29 0a 20 20 20 20 20 20 20 28 tarted). (
12e0: 63 61 73 65 20 28 69 66 20 66 69 72 73 74 2d 64 case (if first-d
12f0: 61 74 20 28 76 65 63 74 6f 72 2d 72 65 66 20 66 at (vector-ref f
1300: 69 72 73 74 2d 64 61 74 20 30 29 20 27 62 6c 61 irst-dat 0) 'bla
1310: 68 29 0a 09 20 28 28 72 75 6e 6e 69 6e 67 29 0a h).. ((running).
1320: 09 20 20 28 70 72 69 6e 74 20 22 53 65 72 76 65 . (print "Serve
1330: 72 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 r appears to be
1340: 72 75 6e 6e 69 6e 67 2e 20 4e 6f 77 20 61 73 6b running. Now ask
1350: 20 69 74 20 74 6f 20 73 68 75 74 64 6f 77 6e 22 it to shutdown"
1360: 29 0a 09 20 20 28 72 6d 74 3a 6b 69 6c 6c 2d 73 ).. (rmt:kill-s
1370: 65 72 76 65 72 20 72 75 6e 2d 69 64 29 0a 09 20 erver run-id)..
1380: 20 28 6c 6f 6f 70 20 27 73 65 72 76 65 72 2d 73 (loop 'server-s
1390: 68 75 74 64 6f 77 6e 29 29 0a 09 20 28 28 73 68 hutdown)).. ((sh
13a0: 75 74 74 69 6e 67 2d 64 6f 77 6e 29 0a 09 20 20 utting-down)..
13b0: 28 6c 6f 6f 70 20 74 65 73 74 2d 73 74 61 74 65 (loop test-state
13c0: 29 29 0a 09 20 28 65 6c 73 65 20 28 70 72 69 6e )).. (else (prin
13d0: 74 20 22 44 6f 6e 27 74 20 6b 6e 6f 77 20 77 68 t "Don't know wh
13e0: 61 74 20 74 6f 20 64 6f 20 69 66 20 67 65 74 20 at to do if get
13f0: 68 65 72 65 22 29 29 29 29 0a 20 20 20 20 20 20 here")))).
1400: 28 28 73 65 72 76 65 72 2d 73 68 75 74 64 6f 77 ((server-shutdow
1410: 6e 29 0a 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 n). (loop
1420: 74 65 73 74 2d 73 74 61 74 65 29 29 29 29 29 0a test-state))))).
1430: 29 0a 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ).;;============
1440: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1450: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1460: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1470: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 3b 3b 20 45 4e ==========.;; EN
1480: 44 20 4f 46 20 54 45 53 54 53 0a 3b 3b 3d 3d 3d D OF TESTS.;;===
1490: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
14a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
14b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
14c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
14d0: 3d 3d 3d 0a 0a 0a 3b 3b 20 28 74 65 73 74 20 23 ===...;; (test #
14e0: 66 20 23 66 20 28 63 6c 69 65 6e 74 3a 73 65 74 f #f (client:set
14f0: 75 70 20 72 75 6e 2d 69 64 29 29 0a 0a 3b 3b 20 up run-id))..;;
1500: 28 73 65 74 21 20 2a 74 72 61 6e 73 70 6f 72 74 (set! *transport
1510: 2d 74 79 70 65 2a 20 27 68 74 74 70 29 0a 3b 3b -type* 'http).;;
1520: 20 0a 3b 3b 20 28 74 65 73 74 20 22 73 65 74 75 .;; (test "setu
1530: 70 20 66 6f 72 20 72 75 6e 22 20 23 74 20 28 62 p for run" #t (b
1540: 65 67 69 6e 20 28 6c 61 75 6e 63 68 3a 73 65 74 egin (launch:set
1550: 75 70 2d 66 6f 72 2d 72 75 6e 29 0a 3b 3b 20 09 up-for-run).;; .
1560: 09 09 09 28 73 74 72 69 6e 67 3f 20 28 67 65 74 ...(string? (get
1570: 65 6e 76 20 22 4d 54 5f 52 55 4e 5f 41 52 45 41 env "MT_RUN_AREA
1580: 5f 48 4f 4d 45 22 29 29 29 29 0a 3b 3b 20 0a 3b _HOME")))).;; .;
1590: 3b 20 28 74 65 73 74 20 22 73 65 72 76 65 72 2d ; (test "server-
15a0: 72 65 67 69 73 74 65 72 2c 20 67 65 74 2d 62 65 register, get-be
15b0: 73 74 2d 73 65 72 76 65 72 22 20 23 74 20 28 6c st-server" #t (l
15c0: 65 74 20 28 28 72 65 73 20 23 66 29 29 0a 3b 3b et ((res #f)).;;
15d0: 20 09 09 09 09 09 20 20 20 20 20 20 28 6f 70 65 ..... (ope
15e0: 6e 2d 72 75 6e 2d 63 6c 6f 73 65 20 74 61 73 6b n-run-close task
15f0: 73 3a 73 65 72 76 65 72 2d 72 65 67 69 73 74 65 s:server-registe
1600: 72 20 74 61 73 6b 73 3a 6f 70 65 6e 2d 64 62 20 r tasks:open-db
1610: 31 20 22 62 6f 62 22 20 31 32 33 34 20 31 30 30 1 "bob" 1234 100
1620: 20 27 6c 69 76 65 20 27 68 74 74 70 29 0a 3b 3b 'live 'http).;;
1630: 20 09 09 09 09 09 20 20 20 20 20 20 28 73 65 74 ..... (set
1640: 21 20 72 65 73 20 28 6f 70 65 6e 2d 72 75 6e 2d ! res (open-run-
1650: 63 6c 6f 73 65 20 74 61 73 6b 73 3a 67 65 74 2d close tasks:get-
1660: 62 65 73 74 2d 73 65 72 76 65 72 20 74 61 73 6b best-server task
1670: 73 3a 6f 70 65 6e 2d 64 62 29 29 0a 3b 3b 20 09 s:open-db)).;; .
1680: 09 09 09 09 20 20 20 20 20 20 28 6e 75 6d 62 65 .... (numbe
1690: 72 3f 20 28 76 65 63 74 6f 72 2d 72 65 66 20 72 r? (vector-ref r
16a0: 65 73 20 33 29 29 29 29 0a 3b 3b 20 0a 3b 3b 20 es 3)))).;; .;;
16b0: 28 74 65 73 74 20 22 64 65 2d 72 65 67 69 73 74 (test "de-regist
16c0: 65 72 20 73 65 72 76 65 72 22 20 23 66 20 28 6c er server" #f (l
16d0: 65 74 20 28 28 72 65 73 20 23 66 29 29 0a 3b 3b et ((res #f)).;;
16e0: 20 09 09 09 09 28 6f 70 65 6e 2d 72 75 6e 2d 63 ....(open-run-c
16f0: 6c 6f 73 65 20 74 61 73 6b 73 3a 73 65 72 76 65 lose tasks:serve
1700: 72 2d 64 65 72 65 67 69 73 74 65 72 20 74 61 73 r-deregister tas
1710: 6b 73 3a 6f 70 65 6e 2d 64 62 20 22 62 6f 62 22 ks:open-db "bob"
1720: 20 70 6f 72 74 3a 20 31 32 33 34 29 0a 3b 3b 20 port: 1234).;;
1730: 09 09 09 09 28 76 65 63 74 6f 72 3f 20 28 6f 70 ....(vector? (op
1740: 65 6e 2d 72 75 6e 2d 63 6c 6f 73 65 20 74 61 73 en-run-close tas
1750: 6b 73 3a 67 65 74 2d 62 65 73 74 2d 73 65 72 76 ks:get-best-serv
1760: 65 72 20 74 61 73 6b 73 3a 6f 70 65 6e 2d 64 62 er tasks:open-db
1770: 29 29 29 29 0a 3b 3b 20 0a 3b 3b 20 28 64 65 66 )))).;; .;; (def
1780: 69 6e 65 20 73 65 72 76 65 72 2d 70 69 64 20 23 ine server-pid #
1790: 66 29 0a 3b 3b 20 0a 3b 3b 20 3b 3b 20 4e 6f 74 f).;; .;; ;; Not
17a0: 20 73 75 72 65 20 68 6f 77 20 74 68 65 20 66 6f sure how the fo
17b0: 6c 6c 6f 77 69 6e 67 20 73 68 6f 75 6c 64 20 77 llowing should w
17c0: 6f 72 6b 2c 20 72 65 70 6c 61 63 69 6e 67 20 69 ork, replacing i
17d0: 74 20 77 69 74 68 20 73 79 73 74 65 6d 20 6f 66 t with system of
17e0: 20 6d 65 67 61 74 65 73 74 20 2d 73 65 72 76 65 megatest -serve
17f0: 72 0a 3b 3b 20 3b 3b 20 28 74 65 73 74 20 22 6c r.;; ;; (test "l
1800: 61 75 6e 63 68 20 73 65 72 76 65 72 22 20 23 74 aunch server" #t
1810: 20 28 6c 65 74 20 28 28 70 69 64 20 28 70 72 6f (let ((pid (pro
1820: 63 65 73 73 2d 66 6f 72 6b 20 28 6c 61 6d 62 64 cess-fork (lambd
1830: 61 20 28 29 0a 3b 3b 20 3b 3b 20 09 09 09 09 09 a ().;; ;; .....
1840: 09 20 20 20 20 3b 3b 20 28 64 61 65 6d 6f 6e 3a . ;; (daemon:
1850: 69 7a 65 29 0a 3b 3b 20 3b 3b 20 09 09 09 09 09 ize).;; ;; .....
1860: 09 20 20 20 20 28 73 65 72 76 65 72 3a 6c 61 75 . (server:lau
1870: 6e 63 68 20 27 68 74 74 70 29 29 29 29 29 0a 3b nch 'http))))).;
1880: 3b 20 3b 3b 20 09 09 09 20 20 20 28 73 65 74 21 ; ;; ... (set!
1890: 20 73 65 72 76 65 72 2d 70 69 64 20 70 69 64 29 server-pid pid)
18a0: 0a 3b 3b 20 3b 3b 20 09 09 09 20 20 20 28 6e 75 .;; ;; ... (nu
18b0: 6d 62 65 72 3f 20 70 69 64 29 29 29 0a 3b 3b 20 mber? pid))).;;
18c0: 28 73 79 73 74 65 6d 20 22 2e 2e 2f 2e 2e 2f 62 (system "../../b
18d0: 69 6e 2f 6d 65 67 61 74 65 73 74 20 2d 73 65 72 in/megatest -ser
18e0: 76 65 72 20 2d 20 2d 64 65 62 75 67 62 63 6f 6d ver - -debugbcom
18f0: 20 32 32 20 3e 20 73 65 72 76 65 72 2e 6c 6f 67 22 > server.log
1900: 20 32 3e 20 73 65 72 76 65 72 2e 6c 6f 67 20 26 2> server.log &
1910: 22 29 0a 3b 3b 20 0a 3b 3b 20 28 6c 65 74 20 6c ").;; .;; (let l
1920: 6f 6f 70 20 28 28 6e 20 31 30 29 29 0a 3b 3b 20 oop ((n 10)).;;
1930: 20 20 28 74 68 72 65 61 64 2d 73 6c 65 65 70 21 (thread-sleep!
1940: 20 31 29 20 3b 3b 20 6e 65 65 64 20 74 6f 20 77 1) ;; need to w
1950: 61 69 74 20 66 6f 72 20 73 65 72 76 65 72 20 74 ait for server t
1960: 6f 20 73 74 61 72 74 2e 0a 3b 3b 20 20 20 28 6c o start..;; (l
1970: 65 74 20 28 28 72 65 73 20 28 6f 70 65 6e 2d 72 et ((res (open-r
1980: 75 6e 2d 63 6c 6f 73 65 20 74 61 73 6b 73 3a 67 un-close tasks:g
1990: 65 74 2d 62 65 73 74 2d 73 65 72 76 65 72 20 74 et-best-server t
19a0: 61 73 6b 73 3a 6f 70 65 6e 2d 64 62 29 29 29 0a asks:open-db))).
19b0: 3b 3b 20 20 20 20 20 28 70 72 69 6e 74 20 22 74 ;; (print "t
19c0: 61 73 6b 73 3a 67 65 74 2d 62 65 73 74 2d 73 65 asks:get-best-se
19d0: 72 76 65 72 20 72 65 74 75 72 6e 65 64 20 22 20 rver returned "
19e0: 72 65 73 29 0a 3b 3b 20 20 20 20 20 28 69 66 20 res).;; (if
19f0: 28 61 6e 64 20 28 6e 6f 74 20 72 65 73 29 0a 3b (and (not res).;
1a00: 3b 20 09 20 20 20 20 20 28 3e 20 6e 20 30 29 29 ; . (> n 0))
1a10: 0a 3b 3b 20 09 28 6c 6f 6f 70 20 28 2d 20 6e 20 .;; .(loop (- n
1a20: 31 29 29 29 29 29 0a 3b 3b 20 0a 3b 3b 20 28 74 1))))).;; .;; (t
1a30: 65 73 74 20 22 67 65 74 2d 62 65 73 74 2d 73 65 est "get-best-se
1a40: 72 76 65 72 22 20 23 74 20 28 62 65 67 69 6e 20 rver" #t (begin
1a50: 0a 3b 3b 20 09 09 09 20 20 20 20 20 28 63 6c 69 .;; ... (cli
1a60: 65 6e 74 3a 6c 61 75 6e 63 68 29 0a 3b 3b 20 09 ent:launch).;; .
1a70: 09 09 20 20 20 20 20 28 6c 65 74 20 28 28 64 61 .. (let ((da
1a80: 74 20 28 6f 70 65 6e 2d 72 75 6e 2d 63 6c 6f 73 t (open-run-clos
1a90: 65 20 74 61 73 6b 73 3a 67 65 74 2d 62 65 73 74 e tasks:get-best
1aa0: 2d 73 65 72 76 65 72 20 74 61 73 6b 73 3a 6f 70 -server tasks:op
1ab0: 65 6e 2d 64 62 29 29 29 0a 3b 3b 20 09 09 09 20 en-db))).;; ...
1ac0: 20 20 20 20 20 20 28 76 65 63 74 6f 72 3f 20 64 (vector? d
1ad0: 61 74 29 29 29 29 0a 3b 3b 20 0a 3b 3b 20 28 64 at)))).;; .;; (d
1ae0: 65 66 69 6e 65 20 2a 6b 65 79 73 2a 20 20 20 20 efine *keys*
1af0: 20 20 20 20 20 20 20 20 20 20 20 28 6b 65 79 73 (keys
1b00: 3a 63 6f 6e 66 69 67 2d 67 65 74 2d 66 69 65 6c :config-get-fiel
1b10: 64 73 20 2a 63 6f 6e 66 69 67 64 61 74 2a 29 29 ds *configdat*))
1b20: 0a 3b 3b 20 28 64 65 66 69 6e 65 20 2a 6b 65 79 .;; (define *key
1b30: 76 61 6c 73 2a 20 20 20 20 20 20 20 20 20 20 20 vals*
1b40: 20 28 6b 65 79 73 3a 74 61 72 67 65 74 2d 3e 6b (keys:target->k
1b50: 65 79 76 61 6c 20 2a 6b 65 79 73 2a 20 22 61 2f eyval *keys* "a/
1b60: 62 2f 63 22 29 29 0a 3b 3b 20 0a 3b 3b 20 28 74 b/c")).;; .;; (t
1b70: 65 73 74 20 23 66 20 23 74 20 20 20 20 20 20 20 est #f #t
1b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b90: 28 73 74 72 69 6e 67 3f 20 28 63 61 72 20 2a 72 (string? (car *r
1ba0: 75 6e 72 65 6d 6f 74 65 2a 29 29 29 0a 3b 3b 20 unremote*))).;;
1bb0: 28 74 65 73 74 20 23 66 20 27 28 23 74 20 22 73 (test #f '(#t "s
1bc0: 75 63 63 65 73 73 66 75 6c 20 6c 6f 67 69 6e 22 uccessful login"
1bd0: 29 20 28 72 6d 74 3a 6c 6f 67 69 6e 29 29 20 3b ) (rmt:login)) ;
1be0: 3b 20 20 2a 72 75 6e 72 65 6d 6f 74 65 2a 20 2a ; *runremote* *
1bf0: 74 6f 70 70 61 74 68 2a 20 2a 6d 79 2d 63 6c 69 toppath* *my-cli
1c00: 65 6e 74 2d 73 69 67 6e 61 74 75 72 65 2a 29 29 ent-signature*))
1c10: 29 0a 3b 3b 20 0a 3b 3b 20 28 74 65 73 74 20 23 ).;; .;; (test #
1c20: 66 20 23 66 20 20 20 20 20 20 20 20 20 20 20 20 f #f
1c30: 20 20 20 20 20 20 20 20 20 20 20 28 72 6d 74 3a (rmt:
1c40: 67 65 74 2d 74 65 73 74 2d 69 6e 66 6f 2d 62 79 get-test-info-by
1c50: 2d 69 64 20 39 39 29 29 20 3b 3b 20 67 65 74 20 -id 99)) ;; get
1c60: 6e 6f 6e 2d 65 78 69 73 74 61 6e 74 20 74 65 73 non-existant tes
1c70: 74 0a 3b 3b 20 0a 3b 3b 20 3b 3b 20 52 55 4e 53 t.;; .;; ;; RUNS
1c80: 0a 3b 3b 20 28 74 65 73 74 20 23 66 20 31 20 20 .;; (test #f 1
1c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1ca0: 20 20 20 20 20 20 28 72 6d 74 3a 72 65 67 69 73 (rmt:regis
1cb0: 74 65 72 2d 72 75 6e 20 20 2a 6b 65 79 76 61 6c ter-run *keyval
1cc0: 73 2a 20 22 66 69 72 73 74 72 75 6e 22 20 22 6e s* "firstrun" "n
1cd0: 65 77 22 20 22 6e 2f 61 22 20 28 63 75 72 72 65 ew" "n/a" (curre
1ce0: 6e 74 2d 75 73 65 72 2d 6e 61 6d 65 29 29 29 0a nt-user-name))).
1cf0: 3b 3b 20 28 74 65 73 74 20 22 67 65 74 20 72 75 ;; (test "get ru
1d00: 6e 20 69 6e 66 6f 22 20 20 22 66 69 72 73 74 72 n info" "firstr
1d10: 75 6e 22 20 20 28 6c 65 74 20 28 28 72 69 6e 66 un" (let ((rinf
1d20: 6f 20 28 72 6d 74 3a 67 65 74 2d 72 75 6e 2d 69 o (rmt:get-run-i
1d30: 6e 66 6f 20 31 29 29 29 0a 3b 3b 20 09 09 09 09 nfo 1))).;; ....
1d40: 20 20 20 20 28 76 65 63 74 6f 72 2d 72 65 66 20 (vector-ref
1d50: 28 76 65 63 74 6f 72 2d 72 65 66 20 72 69 6e 66 (vector-ref rinf
1d60: 6f 20 31 29 20 33 29 29 29 0a 3b 3b 20 28 74 65 o 1) 3))).;; (te
1d70: 73 74 20 22 67 65 74 20 72 75 6e 6e 61 6d 65 20 st "get runname
1d80: 66 72 6f 6d 20 69 64 22 20 22 66 69 72 73 74 72 from id" "firstr
1d90: 75 6e 22 20 28 72 6d 74 3a 67 65 74 2d 72 75 6e un" (rmt:get-run
1da0: 2d 6e 61 6d 65 2d 66 72 6f 6d 2d 69 64 20 31 29 -name-from-id 1)
1db0: 29 0a 3b 3b 20 0a 3b 3b 20 3b 3b 20 54 45 53 54 ).;; .;; ;; TEST
1dc0: 53 0a 3b 3b 20 28 74 65 73 74 20 22 67 65 74 20 S.;; (test "get
1dd0: 74 65 73 74 73 20 28 6e 6f 20 64 61 74 61 29 22 tests (no data)"
1de0: 20 27 28 29 20 20 20 28 72 6d 74 3a 67 65 74 2d '() (rmt:get-
1df0: 74 65 73 74 73 2d 66 6f 72 2d 72 75 6e 20 31 20 tests-for-run 1
1e00: 22 25 22 20 27 28 29 20 27 28 29 20 23 66 20 23 "%" '() '() #f #
1e10: 66 20 23 66 20 23 66 20 23 66 20 23 66 29 29 0a f #f #f #f #f)).
1e20: 3b 3b 20 28 74 65 73 74 20 22 72 65 67 69 73 74 ;; (test "regist
1e30: 65 72 20 74 65 73 74 22 20 20 20 20 20 20 20 23 er test" #
1e40: 74 20 20 20 20 28 72 6d 74 3a 67 65 6e 65 72 61 t (rmt:genera
1e50: 6c 2d 63 61 6c 6c 20 27 72 65 67 69 73 74 65 72 l-call 'register
1e60: 2d 74 65 73 74 20 31 20 22 74 65 73 74 31 22 20 -test 1 "test1"
1e70: 22 22 29 29 0a 3b 3b 20 28 74 65 73 74 20 22 67 "")).;; (test "g
1e80: 65 74 20 74 65 73 74 73 20 28 73 6f 6d 65 20 64 et tests (some d
1e90: 61 74 61 29 22 20 20 31 20 20 28 6c 65 6e 67 74 ata)" 1 (lengt
1ea0: 68 20 28 72 6d 74 3a 67 65 74 2d 74 65 73 74 73 h (rmt:get-tests
1eb0: 2d 66 6f 72 2d 72 75 6e 20 31 20 22 25 22 20 27 -for-run 1 "%" '
1ec0: 28 29 20 27 28 29 20 23 66 20 23 66 20 23 66 20 () '() #f #f #f
1ed0: 23 66 20 23 66 20 23 66 29 29 29 0a 3b 3b 20 28 #f #f #f))).;; (
1ee0: 74 65 73 74 20 22 67 65 74 20 74 65 73 74 20 69 test "get test i
1ef0: 64 22 20 20 20 20 20 20 20 20 20 20 20 20 31 20 d" 1
1f00: 20 28 72 6d 74 3a 67 65 74 2d 74 65 73 74 2d 69 (rmt:get-test-i
1f10: 64 20 31 20 22 74 65 73 74 31 22 20 22 22 29 29 d 1 "test1" ""))
1f20: 0a 3b 3b 20 28 74 65 73 74 20 22 73 79 6e 63 20 .;; (test "sync
1f30: 62 61 63 6b 22 20 20 20 20 20 20 20 20 20 20 20 back"
1f40: 20 20 20 23 74 20 28 3e 20 28 72 6d 74 3a 73 79 #t (> (rmt:sy
1f50: 6e 63 2d 69 6e 6d 65 6d 2d 3e 64 62 29 20 30 29 nc-inmem->db) 0)
1f60: 29 0a 3b 3b 20 28 74 65 73 74 20 22 67 65 74 20 ).;; (test "get
1f70: 74 65 73 74 20 69 64 20 66 72 6f 6d 20 6d 61 69 test id from mai
1f80: 6e 22 20 20 31 20 20 28 64 62 3a 67 65 74 2d 74 n" 1 (db:get-t
1f90: 65 73 74 2d 69 64 20 2a 64 62 2a 20 31 20 22 74 est-id *db* 1 "t
1fa0: 65 73 74 31 22 20 22 22 29 29 0a 3b 3b 20 28 74 est1" "")).;; (t
1fb0: 65 73 74 20 22 67 65 74 20 6b 65 79 73 22 20 20 est "get keys"
1fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 74 20 #t
1fd0: 28 6c 69 73 74 3f 20 28 72 6d 74 3a 67 65 74 2d (list? (rmt:get-
1fe0: 6b 65 79 73 29 29 29 0a 3b 3b 20 28 74 65 73 74 keys))).;; (test
1ff0: 20 22 73 65 74 20 63 6f 6d 6d 65 6e 74 22 20 20 "set comment"
2000: 20 20 20 20 20 20 20 20 20 20 23 74 20 28 62 65 #t (be
2010: 67 69 6e 20 28 72 6d 74 3a 67 65 6e 65 72 61 6c gin (rmt:general
2020: 2d 63 61 6c 6c 20 27 73 65 74 2d 74 65 73 74 2d -call 'set-test-
2030: 63 6f 6d 6d 65 6e 74 20 22 74 68 69 73 20 69 73 comment "this is
2040: 20 61 20 63 6f 6d 6d 65 6e 74 22 20 31 29 20 23 a comment" 1) #
2050: 74 29 29 0a 3b 3b 20 28 74 65 73 74 20 22 67 65 t)).;; (test "ge
2060: 74 20 63 6f 6d 6d 65 6e 74 22 20 22 74 68 69 73 t comment" "this
2070: 20 69 73 20 61 20 63 6f 6d 6d 65 6e 74 22 20 28 is a comment" (
2080: 6c 65 74 20 28 28 74 72 65 63 20 28 72 6d 74 3a let ((trec (rmt:
2090: 67 65 74 2d 74 65 73 74 2d 69 6e 66 6f 2d 62 79 get-test-info-by
20a0: 2d 69 64 20 31 29 29 29 0a 3b 3b 20 09 09 09 09 -id 1))).;; ....
20b0: 09 20 20 28 64 62 3a 74 65 73 74 2d 67 65 74 2d . (db:test-get-
20c0: 63 6f 6d 6d 65 6e 74 20 74 72 65 63 29 29 29 0a comment trec))).
20d0: 3b 3b 20 0a 3b 3b 20 3b 3b 20 4d 4f 52 45 20 52 ;; .;; ;; MORE R
20e0: 55 4e 53 0a 3b 3b 20 28 74 65 73 74 20 22 67 65 UNS.;; (test "ge
20f0: 74 20 72 75 6e 73 22 20 20 23 74 20 28 6c 65 74 t runs" #t (let
2100: 2a 20 28 28 72 75 6e 73 20 20 20 28 72 6d 74 3a * ((runs (rmt:
2110: 67 65 74 2d 72 75 6e 73 20 22 25 22 20 23 66 20 get-runs "%" #f
2120: 23 66 20 27 28 29 29 29 0a 3b 3b 20 09 09 09 20 #f '())).;; ...
2130: 20 20 20 28 68 65 61 64 65 72 20 28 76 65 63 74 (header (vect
2140: 6f 72 2d 72 65 66 20 72 75 6e 73 20 30 29 29 0a or-ref runs 0)).
2150: 3b 3b 20 09 09 09 20 20 20 20 28 64 61 74 61 20 ;; ... (data
2160: 20 20 28 76 65 63 74 6f 72 2d 72 65 66 20 72 75 (vector-ref ru
2170: 6e 73 20 31 29 29 29 0a 3b 3b 20 09 09 20 20 20 ns 1))).;; ..
2180: 20 20 20 20 28 61 6e 64 20 28 6c 69 73 74 3f 20 (and (list?
2190: 20 20 68 65 61 64 65 72 29 0a 3b 3b 20 09 09 09 header).;; ...
21a0: 20 20 20 20 28 6c 69 73 74 3f 20 20 20 64 61 74 (list? dat
21b0: 61 29 0a 3b 3b 20 09 09 09 20 20 20 20 28 76 65 a).;; ... (ve
21c0: 63 74 6f 72 3f 20 28 63 61 72 20 64 61 74 61 29 ctor? (car data)
21d0: 29 29 29 29 0a 3b 3b 20 0a 3b 3b 20 28 74 65 73 )))).;; .;; (tes
21e0: 74 20 22 67 65 74 20 6c 6f 63 61 6c 20 74 65 73 t "get local tes
21f0: 74 69 6e 66 6f 22 20 22 74 65 73 74 31 22 20 28 tinfo" "test1" (
2200: 76 65 63 74 6f 72 2d 72 65 66 20 28 64 62 3a 67 vector-ref (db:g
2210: 65 74 2d 74 65 73 74 69 6e 66 6f 2d 73 74 61 74 et-testinfo-stat
2220: 65 2d 73 74 61 74 75 73 20 2a 64 62 2a 20 31 29 e-status *db* 1)
2230: 20 32 29 29 0a 3b 3b 20 28 74 65 73 74 20 22 67 2)).;; (test "g
2240: 65 74 20 74 65 73 74 69 6e 66 6f 22 20 20 20 20 et testinfo"
2250: 20 20 20 22 74 65 73 74 31 22 20 28 76 65 63 74 "test1" (vect
2260: 6f 72 2d 72 65 66 20 28 72 6d 74 3a 67 65 74 2d or-ref (rmt:get-
2270: 74 65 73 74 69 6e 66 6f 2d 73 74 61 74 65 2d 73 testinfo-state-s
2280: 74 61 74 75 73 20 31 29 20 32 29 29 0a 3b 3b 20 tatus 1) 2)).;;
2290: 0a 3b 3b 20 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .;; ;;==========
22a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
22b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
22c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
22d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 3b 3b 20 ============.;;
22e0: 3b 3b 20 44 20 42 0a 3b 3b 20 3b 3b 3d 3d 3d 3d ;; D B.;; ;;====
22f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2300: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2310: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2320: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2330: 3d 3d 0a 3b 3b 20 0a 3b 3b 20 28 74 65 73 74 20 ==.;; .;; (test
2340: 22 70 61 73 73 20 66 61 69 6c 20 63 6f 75 6e 74 "pass fail count
2350: 73 22 20 23 74 20 28 72 6d 74 3a 67 65 6e 65 72 s" #t (rmt:gener
2360: 61 6c 2d 63 61 6c 6c 20 27 70 61 73 73 2d 66 61 al-call 'pass-fa
2370: 69 6c 2d 63 6f 75 6e 74 73 20 31 30 20 39 20 31 il-counts 10 9 1
2380: 29 29 0a 3b 3b 20 28 74 65 73 74 20 22 67 65 74 )).;; (test "get
2390: 20 70 61 73 73 20 66 61 69 6c 20 63 6f 75 6e 74 pass fail count
23a0: 73 22 20 31 39 20 28 6c 65 74 20 28 28 64 61 74 s" 19 (let ((dat
23b0: 20 28 72 6d 74 3a 67 65 74 2d 74 65 73 74 2d 69 (rmt:get-test-i
23c0: 6e 66 6f 2d 62 79 2d 69 64 20 31 29 29 29 0a 3b nfo-by-id 1))).;
23d0: 3b 20 09 09 09 09 20 20 28 2b 20 28 64 62 3a 74 ; .... (+ (db:t
23e0: 65 73 74 2d 67 65 74 2d 70 61 73 73 5f 63 6f 75 est-get-pass_cou
23f0: 6e 74 20 64 61 74 29 0a 3b 3b 20 09 09 09 09 20 nt dat).;; ....
2400: 20 20 20 20 28 64 62 3a 74 65 73 74 2d 67 65 74 (db:test-get
2410: 2d 66 61 69 6c 5f 63 6f 75 6e 74 20 64 61 74 29 -fail_count dat)
2420: 29 29 29 0a 3b 3b 20 0a 3b 3b 20 28 64 65 66 69 ))).;; .;; (defi
2430: 6e 65 20 74 65 73 74 72 65 67 69 73 74 72 79 20 ne testregistry
2440: 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 (make-hash-table
2450: 29 29 0a 3b 3b 20 28 66 6f 72 2d 65 61 63 68 0a )).;; (for-each.
2460: 3b 3b 20 20 28 6c 61 6d 62 64 61 20 28 74 6e 61 ;; (lambda (tna
2470: 6d 65 29 0a 3b 3b 20 20 20 20 28 66 6f 72 2d 65 me).;; (for-e
2480: 61 63 68 0a 3b 3b 20 20 20 20 20 28 6c 61 6d 62 ach.;; (lamb
2490: 64 61 20 28 69 74 65 6d 70 61 74 68 29 0a 3b 3b da (itempath).;;
24a0: 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 6b (let ((tk
24b0: 65 79 20 20 28 63 6f 6e 63 20 74 6e 61 6d 65 20 ey (conc tname
24c0: 22 2f 22 20 69 74 65 6d 70 61 74 68 29 29 0a 3b "/" itempath)).;
24d0: 3b 20 09 20 20 20 20 28 72 70 61 73 73 20 28 72 ; . (rpass (r
24e0: 61 6e 64 6f 6d 20 31 30 29 29 0a 3b 3b 20 09 20 andom 10)).;; .
24f0: 20 20 20 28 72 66 61 69 6c 20 28 72 61 6e 64 6f (rfail (rando
2500: 6d 20 31 30 29 29 29 0a 3b 3b 20 09 28 68 61 73 m 10))).;; .(has
2510: 68 2d 74 61 62 6c 65 2d 73 65 74 21 20 74 65 73 h-table-set! tes
2520: 74 72 65 67 69 73 74 72 79 20 74 6b 65 79 20 28 tregistry tkey (
2530: 6c 69 73 74 20 74 6e 61 6d 65 20 69 74 65 6d 70 list tname itemp
2540: 61 74 68 29 29 0a 3b 3b 20 09 28 72 6d 74 3a 67 ath)).;; .(rmt:g
2550: 65 6e 65 72 61 6c 2d 63 61 6c 6c 20 27 72 65 67 eneral-call 'reg
2560: 69 73 74 65 72 2d 74 65 73 74 20 31 20 74 6e 61 ister-test 1 tna
2570: 6d 65 20 69 74 65 6d 70 61 74 68 29 0a 3b 3b 20 me itempath).;;
2580: 09 28 6c 65 74 2a 20 28 28 74 69 64 20 20 28 72 .(let* ((tid (r
2590: 6d 74 3a 67 65 74 2d 74 65 73 74 2d 69 64 20 31 mt:get-test-id 1
25a0: 20 74 6e 61 6d 65 20 69 74 65 6d 70 61 74 68 29 tname itempath)
25b0: 29 0a 3b 3b 20 09 20 20 20 20 20 20 20 28 74 64 ).;; . (td
25c0: 61 74 20 28 72 6d 74 3a 67 65 74 2d 74 65 73 74 at (rmt:get-test
25d0: 2d 69 6e 66 6f 2d 62 79 2d 69 64 20 74 69 64 29 -info-by-id tid)
25e0: 29 29 0a 3b 3b 20 09 20 20 28 72 6d 74 3a 67 65 )).;; . (rmt:ge
25f0: 6e 65 72 61 6c 2d 63 61 6c 6c 20 27 70 61 73 73 neral-call 'pass
2600: 2d 66 61 69 6c 2d 63 6f 75 6e 74 73 20 72 70 61 -fail-counts rpa
2610: 73 73 20 72 66 61 69 6c 20 28 64 62 3a 74 65 73 ss rfail (db:tes
2620: 74 2d 67 65 74 2d 69 64 20 74 64 61 74 29 29 0a t-get-id tdat)).
2630: 3b 3b 20 09 20 20 28 6c 65 74 2a 20 28 28 72 65 ;; . (let* ((re
2640: 73 64 61 74 20 28 72 6d 74 3a 67 65 74 2d 74 65 sdat (rmt:get-te
2650: 73 74 2d 69 6e 66 6f 2d 62 79 2d 69 64 20 74 69 st-info-by-id ti
2660: 64 29 29 29 0a 3b 3b 20 09 20 20 20 20 28 74 65 d))).;; . (te
2670: 73 74 20 22 73 65 74 2f 67 65 74 20 70 61 73 73 st "set/get pass
2680: 20 66 61 69 6c 20 63 6f 75 6e 74 73 22 20 28 6c fail counts" (l
2690: 69 73 74 20 72 70 61 73 73 20 72 66 61 69 6c 29 ist rpass rfail)
26a0: 0a 3b 3b 20 09 09 20 20 28 6c 69 73 74 20 28 64 .;; .. (list (d
26b0: 62 3a 74 65 73 74 2d 67 65 74 2d 70 61 73 73 5f b:test-get-pass_
26c0: 63 6f 75 6e 74 20 72 65 73 64 61 74 29 0a 3b 3b count resdat).;;
26d0: 20 09 09 09 28 64 62 3a 74 65 73 74 2d 67 65 74 ...(db:test-get
26e0: 2d 66 61 69 6c 5f 63 6f 75 6e 74 20 72 65 73 64 -fail_count resd
26f0: 61 74 29 29 29 29 29 29 29 0a 3b 3b 20 20 20 20 at))))))).;;
2700: 20 28 6c 69 73 74 20 22 22 20 22 61 22 20 22 62 (list "" "a" "b
2710: 22 20 22 63 22 20 22 64 22 20 22 65 22 20 22 66 " "c" "d" "e" "f
2720: 22 20 22 67 22 20 22 68 22 20 22 69 22 20 22 6a " "g" "h" "i" "j
2730: 22 29 29 29 0a 3b 3b 20 20 28 6c 69 73 74 20 22 "))).;; (list "
2740: 74 65 73 74 31 22 20 22 74 65 73 74 32 22 20 22 test1" "test2" "
2750: 74 65 73 74 33 22 20 22 74 65 73 74 34 22 20 22 test3" "test4" "
2760: 74 65 73 74 35 22 29 29 0a 3b 3b 20 0a 3b 3b 20 test5")).;; .;;
2770: 0a 3b 3b 20 28 74 65 73 74 20 23 66 20 27 28 23 .;; (test #f '(#
2780: 74 20 22 65 78 69 74 20 70 72 6f 63 65 73 73 20 t "exit process
2790: 73 74 61 72 74 65 64 22 29 20 28 72 6d 74 3a 6b started") (rmt:k
27a0: 69 6c 6c 2d 73 65 72 76 65 72 29 29 20 3b 3b 20 ill-server)) ;;
27b0: 2a 74 6f 70 70 61 74 68 2a 20 2a 6d 79 2d 63 6c *toppath* *my-cl
27c0: 69 65 6e 74 2d 73 69 67 6e 61 74 75 72 65 2a 20 ient-signature*
27d0: 23 66 29 29 29 0a 3b 3b 20 0a 0a 28 65 78 69 74 #f))).;; ..(exit
27e0: 29 0a ).