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
|
z3)
(import stml2
)
(module commonmod
(
common:get-toppath
common:generic-ssh
common:file-exists?
common:with-env-vars
common:nice-path
common:get-fields
;; globals
*configdat*
*db-access-allowed*
*db-cache-path*
*toppath*
keys:target-set-args
getenv
setenv
safe-setenv
get-area-path-signature
common:simple-file-lock
common:low-noise-print
common:get-create-writeable-dir
common:real-path
val->alist
)
(import scheme)
(cond-expand
(chicken-4
(import chicken
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
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
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
|
z3)
(import stml2
)
(module commonmod
(
keys->valslots
item-list->path
common:human-time
number-of-processes-running
get-normalized-cpu-load
common:find-local-megatest
common:get-intercept
common:get-num-cpus
common:get-cpu-load
common:hms-string->seconds
seconds->time-string
common:get-megatest-exe
megatest-version
common:get-toppath
common:generic-ssh
common:file-exists?
common:with-env-vars
common:nice-path
common:get-fields
common:get-normalized-cpu-load
common:unix-ping
common:get-normalized-cpu-load
;; globals
*common:badly-ended-states*
*common:dont-roll-up-states*
*common:ended-states*
*common:not-started-ok-statuses*
*common:running-states*
*common:std-states*
*common:std-statuses*
*common:well-ended-states*
*configdat*
*configinfo*
*db-access-allowed*
*db-api-call-time*
*db-cache-path*
*db-keys*
*default-area-tag*
*host-loads*
*keyvals*
*logged-in-clients*
*my-client-signature*
*on-exit-procs*
*pkts-info*
*pre-reqs-met-cache*
*runremote*
*server-id*
*server-info*
*target*
*task-db*
*testconfigs*
*time-to-exit*
*toppath*
*transport-type*
any->number-if-possible
common:special-sort
keys:target-set-args
getenv
setenv
safe-setenv
commonmod:get-cpu-load
get-area-path-signature
common:simple-file-lock
common:low-noise-print
common:get-create-writeable-dir
common:real-path
val->alist
client:get-signature
common:get-color-from-status
seconds->year-work-week/day-time
common:simple-file-release-lock
common:simple-file-lock-and-wait
tests:lookup-itemmap
tests:match->sqlqry
runs:get-std-run-fields
common:min-max
common:max
common:sum
keys:target->keyval
db:patt->like
rmt:transport-mode
common:version-signature
keys->keystr
keys:config-get-fields
common:make-tmpdir-name
db:test-get-status
db:test-get-state
db:test-get-event_time
db:test-get-item-path
db:test-get-testname
db:test-get-id
db:test-get-comment
db:test-get-run_duration
db:test-get-rundir
tests:match
patt-list-match
common:pkts-spec
sdb:qry
seconds->work-week/day-time
tdb:step-get-comment
seconds->hr-min-sec
any->number
tdb:step-get-logfile
tdb:step-get-event_time
tdb:step-get-status
tdb:step-get-state
tdb:step-get-id
tdb:step-get-stepname
db:test-make-full-name
common:htree->html
common:list->htree
tdb:steps-table-get-log-file
tdb:steps-table-get-runtime
tdb:steps-table-get-status
tdb:steps-table-get-end
tdb:steps-table-get-start
tdb:steps-table-get-stepname
tdb:step-get-last_update
tdb:step-get-test_id
db:test-get-run_id
db:test-get-final_logf
tests:testqueue-get-item_path
tests:testqueue-get-itemdat
tests:testqueue-get-testname
tests:testqueue-get-priority
tests:testqueue-set-priority!
tests:testqueue-get-testconfig
tests:testqueue-get-waitons
tasks:wait-on-journal
common:get-area-path-signature
db:test-get-last_update
db:test-get-archived
db:test-get-uname
db:test-get-diskfree
db:test-get-cpuload
db:test-get-process_id
db:test-get-host
db:test-data-get-last_update
db:test-data-get-type
db:test-data-get-status
db:test-data-get-comment
db:test-data-get-units
db:test-data-get-tol
db:test-data-get-expected
db:test-data-get-value
db:test-data-get-variable
db:test-data-get-category
db:test-data-get-test_id
db:test-data-get-id
host-last-cpuload
host-last-update
host-last-cpuload-set!
host-last-update-set!
host-reachable-set!
make-host
host-last-used-set!
host-reachable
host-last-used
common:alist-ref/default
common:val->alist
common:in-running-test?
common:without-vars
common:get-megatest-exe-path
common:get-megatest-exe-dir
common:get-param-mapping
common:get-mtexe
db:test-get-is-toplevel
seconds->quarter
*globalexitstatus*
tests:testqueue-set-items!
tests:testqueue-get-items
*runconfigdat*
*passnum*
*already-seen-runconfig-info*
common:directory-writable?
common:dir-clean-up
common:fail-safe
common:list-or-null
*toptest-paths*
common:directory-exists?
*configstatus*
*last-launch*
*launch-setup-mutex*
commonmod:is-test-alive
alist->env-vars
*env-vars-by-run-id*
common:get-signature
common:join-backgrounded-threads
tests:glob-like-match
common:send-thunk-to-background-thread
db:test-get-fullname
common:clear-caches
db:mintest-get-event_time
*test-meta-updated*
tests:testqueue-set-item_path!
tests:testqueue-set-itemdat!
make-tests:testqueue
)
(import scheme)
(cond-expand
(chicken-4
(import chicken
|
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
srfi-1
srfi-18
srfi-69
typed-records
system-information
debugprint
)))
;;======================================================================
;; CONTENTS
;;
;; config file utils
;; misc conversion, data manipulation functions
|
>
>
|
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
|
srfi-1
srfi-18
srfi-69
typed-records
system-information
debugprint
megatest-fossil-hash
)))
;;======================================================================
;; CONTENTS
;;
;; config file utils
;; misc conversion, data manipulation functions
|
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
|
(define (common:get-fields cfgdat)
(let ((fields (hash-table-ref/default cfgdat "fields" '())))
(map car fields)))
(define keys:config-get-fields common:get-fields)
)
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
|
(define (common:get-fields cfgdat)
(let ((fields (hash-table-ref/default cfgdat "fields" '())))
(map car fields)))
(define keys:config-get-fields common:get-fields)
;;======================================================================
;; db_records.scm
;;======================================================================
;;======================================================================
;; dbstruct
;;======================================================================
(define (make-db:test)(make-vector 20))
(define (db:test-get-id vec) (vector-ref vec 0))
(define (db:test-get-run_id vec) (vector-ref vec 1))
(define (db:test-get-testname vec) (vector-ref vec 2))
(define (db:test-get-state vec) (vector-ref vec 3))
(define (db:test-get-status vec) (vector-ref vec 4))
(define (db:test-get-event_time vec) (vector-ref vec 5))
(define (db:test-get-host vec) (vector-ref vec 6))
(define (db:test-get-cpuload vec) (vector-ref vec 7))
(define (db:test-get-diskfree vec) (vector-ref vec 8))
(define (db:test-get-uname vec) (vector-ref vec 9))
;; (define (db:test-get-rundir vec) (sdb:qry 'getstr (vector-ref vec 10)))
(define (db:test-get-rundir vec) (vector-ref vec 10))
(define (db:test-get-item-path vec) (vector-ref vec 11))
(define (db:test-get-run_duration vec) (vector-ref vec 12))
(define (db:test-get-final_logf vec) (vector-ref vec 13))
(define (db:test-get-comment vec) (vector-ref vec 14))
(define (db:test-get-process_id vec) (vector-ref vec 16))
(define (db:test-get-archived vec) (vector-ref vec 17))
(define (db:test-get-last_update vec) (vector-ref vec 18))
;; (define (db:test-get-pass_count vec) (vector-ref vec 15))
;; (define (db:test-get-fail_count vec) (vector-ref vec 16))
(define (db:test-get-fullname vec)
(conc (db:test-get-testname vec) "/" (db:test-get-item-path vec)))
;; replace runs:make-full-test-name with this routine
(define (db:test-make-full-name testname itempath)
(if (equal? itempath "") testname (conc testname "/" itempath)))
;; (define (db:test-get-first_err vec) (printable (vector-ref vec 15)))
;; (define (db:test-get-first_warn vec) (printable (vector-ref vec 16))) ;; RADT => reference 16 is repeated
(define (db:test-set-cpuload! vec val)(vector-set! vec 7 val))
(define (db:test-set-diskfree! vec val)(vector-set! vec 8 val))
(define (db:test-set-testname! vec val)(vector-set! vec 2 val))
(define (db:test-set-state! vec val)(vector-set! vec 3 val))
(define (db:test-set-status! vec val)(vector-set! vec 4 val))
(define (db:test-set-run_duration! vec val)(vector-set! vec 12 val))
(define (db:test-set-final_logf! vec val)(vector-set! vec 13 val))
;; Test record utility functions
;; Is a test a toplevel?
;;
(define (db:test-get-is-toplevel vec)
(and (equal? (db:test-get-item-path vec) "") ;; test is not an item
(equal? (db:test-get-uname vec) "n/a"))) ;; test has never been run
;; make-vector-record "" db mintest id run_id testname state status event_time item_path
;; RADT => purpose of mintest??
;;
(define (make-db:mintest)(make-vector 7))
(define (db:mintest-get-id vec) (vector-ref vec 0))
(define (db:mintest-get-run_id vec) (vector-ref vec 1))
(define (db:mintest-get-testname vec) (vector-ref vec 2))
(define (db:mintest-get-state vec) (vector-ref vec 3))
(define (db:mintest-get-status vec) (vector-ref vec 4))
(define (db:mintest-get-event_time vec) (vector-ref vec 5))
(define (db:mintest-get-item_path vec) (vector-ref vec 6))
;; make-vector-record db testmeta id testname author owner description reviewed iterated avg_runtime avg_disk
(define (make-db:testmeta)(make-vector 10 ""))
(define (db:testmeta-get-id vec) (vector-ref vec 0))
(define (db:testmeta-get-testname vec) (vector-ref vec 1))
(define (db:testmeta-get-author vec) (vector-ref vec 2))
(define (db:testmeta-get-owner vec) (vector-ref vec 3))
(define (db:testmeta-get-description vec) (vector-ref vec 4))
(define (db:testmeta-get-reviewed vec) (vector-ref vec 5))
(define (db:testmeta-get-iterated vec) (vector-ref vec 6))
(define (db:testmeta-get-avg_runtime vec) (vector-ref vec 7))
(define (db:testmeta-get-avg_disk vec) (vector-ref vec 8))
(define (db:testmeta-get-tags vec) (vector-ref vec 9))
(define (db:testmeta-set-id! vec val)(vector-set! vec 0 val))
(define (db:testmeta-set-testname! vec val)(vector-set! vec 1 val))
(define (db:testmeta-set-author! vec val)(vector-set! vec 2 val))
(define (db:testmeta-set-owner! vec val)(vector-set! vec 3 val))
(define (db:testmeta-set-description! vec val)(vector-set! vec 4 val))
(define (db:testmeta-set-reviewed! vec val)(vector-set! vec 5 val))
(define (db:testmeta-set-iterated! vec val)(vector-set! vec 6 val))
(define (db:testmeta-set-avg_runtime! vec val)(vector-set! vec 7 val))
(define (db:testmeta-set-avg_disk! vec val)(vector-set! vec 8 val))
;;======================================================================
;; S I M P L E R U N
;;======================================================================
;; (defstruct id "runname" "state" "status" "owner" "event_time"
;;======================================================================
;; T E S T D A T A
;;======================================================================
(define (make-db:test-data)(make-vector 10))
(define (db:test-data-get-id vec) (vector-ref vec 0))
(define (db:test-data-get-test_id vec) (vector-ref vec 1))
(define (db:test-data-get-category vec) (vector-ref vec 2))
(define (db:test-data-get-variable vec) (vector-ref vec 3))
(define (db:test-data-get-value vec) (vector-ref vec 4))
(define (db:test-data-get-expected vec) (vector-ref vec 5))
(define (db:test-data-get-tol vec) (vector-ref vec 6))
(define (db:test-data-get-units vec) (vector-ref vec 7))
(define (db:test-data-get-comment vec) (vector-ref vec 8))
(define (db:test-data-get-status vec) (vector-ref vec 9))
(define (db:test-data-get-type vec) (vector-ref vec 10))
(define (db:test-data-get-last_update vec) (vector-ref vec 11))
(define (db:test-data-set-id! vec val)(vector-set! vec 0 val))
(define (db:test-data-set-test_id! vec val)(vector-set! vec 1 val))
(define (db:test-data-set-category! vec val)(vector-set! vec 2 val))
(define (db:test-data-set-variable! vec val)(vector-set! vec 3 val))
(define (db:test-data-set-value! vec val)(vector-set! vec 4 val))
(define (db:test-data-set-expected! vec val)(vector-set! vec 5 val))
(define (db:test-data-set-tol! vec val)(vector-set! vec 6 val))
(define (db:test-data-set-units! vec val)(vector-set! vec 7 val))
(define (db:test-data-set-comment! vec val)(vector-set! vec 8 val))
(define (db:test-data-set-status! vec val)(vector-set! vec 9 val))
(define (db:test-data-set-type! vec val)(vector-set! vec 10 val))
;;======================================================================
;; S T E P S
;;======================================================================
;; Run steps
;; make-vector-record "Run steps" db step id test_id stepname step_complete step_pass event_time
(define (make-db:step)(make-vector 9))
(define (tdb:step-get-id vec) (vector-ref vec 0))
(define (tdb:step-get-test_id vec) (vector-ref vec 1))
(define (tdb:step-get-stepname vec) (vector-ref vec 2))
(define (tdb:step-get-state vec) (vector-ref vec 3))
(define (tdb:step-get-status vec) (vector-ref vec 4))
(define (tdb:step-get-event_time vec) (vector-ref vec 5))
(define (tdb:step-get-logfile vec) (vector-ref vec 6))
(define (tdb:step-get-comment vec) (vector-ref vec 7))
(define (tdb:step-get-last_update vec) (vector-ref vec 8))
(define (tdb:step-set-id! vec val)(vector-set! vec 0 val))
(define (tdb:step-set-test_id! vec val)(vector-set! vec 1 val))
(define (tdb:step-set-stepname! vec val)(vector-set! vec 2 val))
(define (tdb:step-set-state! vec val)(vector-set! vec 3 val))
(define (tdb:step-set-status! vec val)(vector-set! vec 4 val))
(define (tdb:step-set-event_time! vec val)(vector-set! vec 5 val))
(define (tdb:step-set-logfile! vec val)(vector-set! vec 6 val))
(define (tdb:step-set-comment! vec val)(vector-set! vec 7 val))
;; The steps table
(define (make-db:steps-table)(make-vector 5))
(define (tdb:steps-table-get-stepname vec) (vector-ref vec 0))
(define (tdb:steps-table-get-start vec) (vector-ref vec 1))
(define (tdb:steps-table-get-end vec) (vector-ref vec 2))
(define (tdb:steps-table-get-status vec) (vector-ref vec 3))
(define (tdb:steps-table-get-runtime vec) (vector-ref vec 4))
(define (tdb:steps-table-get-log-file vec) (vector-ref vec 5))
(define (tdb:step-stable-set-stepname! vec val)(vector-set! vec 0 val))
(define (tdb:step-stable-set-start! vec val)(vector-set! vec 1 val))
(define (tdb:step-stable-set-end! vec val)(vector-set! vec 2 val))
(define (tdb:step-stable-set-status! vec val)(vector-set! vec 3 val))
(define (tdb:step-stable-set-runtime! vec val)(vector-set! vec 4 val))
;; ;; The data structure for handing off requests via wire
;; (define (make-cdb:packet)(make-vector 6))
;; (define (cdb:packet-get-client-sig vec) (vector-ref vec 0))
;; (define (cdb:packet-get-qtype vec) (vector-ref vec 1))
;; (define (cdb:packet-get-immediate vec) (vector-ref vec 2))
;; (define (cdb:packet-get-query-sig vec) (vector-ref vec 3))
;; (define (cdb:packet-get-params vec) (vector-ref vec 4))
;; (define (cdb:packet-get-qtime vec) (vector-ref vec 5))
;; (define (cdb:packet-set-client-sig! vec val)(vector-set! vec 0 val))
;; (define (cdb:packet-set-qtype! vec val)(vector-set! vec 1 val))
;; (define (cdb:packet-set-immediate! vec val)(vector-set! vec 2 val))
;; (define (cdb:packet-set-query-sig! vec val)(vector-set! vec 3 val))
;; (define (cdb:packet-set-params! vec val)(vector-set! vec 4 val))
;; (define (cdb:packet-set-qtime! vec val)(vector-set! vec 5 val))
;;======================================================================
;; key_records
;;======================================================================
(define (keys->valslots keys) ;; => ?,?,? ....
(string-intersperse (map (lambda (x) "?") keys) ","))
;; (define (keys->key/field keys . additional)
;; (string-join (map (lambda (k)(conc k " TEXT"))
;; (append keys additional)) ","))
(define (item-list->path itemdat)
(if (list? itemdat)
(string-intersperse (map cadr itemdat) "/")
""))
;;======================================================================
;; test_records
;;======================================================================
;; make-vector-record tests testqueue testname testconfig waitons priority items
(define (make-tests:testqueue)(make-vector 7 #f))
(define (tests:testqueue-get-testname vec) (vector-ref vec 0))
(define (tests:testqueue-get-testconfig vec) (vector-ref vec 1))
(define (tests:testqueue-get-waitons vec) (vector-ref vec 2))
(define (tests:testqueue-get-priority vec) (vector-ref vec 3))
;; items: #f=no items, list=list of items remaining, proc=need to call to get items
(define (tests:testqueue-get-items vec) (vector-ref vec 4))
(define (tests:testqueue-get-itemdat vec) (vector-ref vec 5))
(define (tests:testqueue-get-item_path vec) (vector-ref vec 6))
(define (tests:testqueue-set-testname! vec val)(vector-set! vec 0 val))
(define (tests:testqueue-set-testconfig! vec val)(vector-set! vec 1 val))
(define (tests:testqueue-set-waitons! vec val)(vector-set! vec 2 val))
(define (tests:testqueue-set-priority! vec val)(vector-set! vec 3 val))
(define (tests:testqueue-set-items! vec val)(vector-set! vec 4 val))
(define (tests:testqueue-set-itemdat! vec val)(vector-set! vec 5 val))
(define (tests:testqueue-set-item_path! vec val)(vector-set! vec 6 val))
)
|