︙ | | |
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
-
+
|
(declare (uses mtver))
(declare (uses debugprint))
(declare (uses stml2))
(declare (uses pkts))
(declare (uses processmod))
(declare (uses mtargs))
(declare (uses configfmod))
(declare (uses hostinfo))
;; (declare (uses hostinfo))
(declare (uses keysmod))
;; odd but it works?
;; (declare (uses itemsmod))
(module commonmod
(
|
︙ | | |
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
|
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
|
+
-
|
*task-db*
*db-access-allowed*
*db-access-mutex*
*db-transaction-mutex*
*db-cache-path*
*db-with-db-mutex*
*db-api-call-time*
*didsomething*
*no-sync-db*
*my-signature*
*transport-type*
*logged-in-clients*
*server-info*
*server-run*
*run-id*
*server-kind-run*
*home-host*
*heartbeat-mutex*
*api-process-request-count*
*max-api-process-requests*
|
︙ | | |
529
530
531
532
533
534
535
536
537
538
539
540
541
542
|
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
|
+
+
|
chicken.io
chicken.string
chicken.sort
chicken.time.posix
(prefix base64 base64:)
(prefix sqlite3 sqlite3:)
address-info
directory-utils
matchable
md5
message-digest
regex
regex-case
sparse-vectors
|
︙ | | |
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
|
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
|
-
+
|
stml2
pkts
processmod
(prefix mtargs args:)
configfmod
keysmod
;; itemsmod
hostinfo
;; hostinfo
)
;;======================================================================
;; CONTENTS
;;
;; config file utils
;; misc conversion, data manipulation functions
|
︙ | | |
923
924
925
926
927
928
929
930
931
932
933
934
935
936
|
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
|
+
|
;; (define *watchdog* #f)
;; A hash table that can be accessed by #{scheme ...} calls in
;; config files. Allows communicating between confgs
;;
(define *user-hash-data* (make-hash-table))
(define *db-keys* #f)
(define *didsomething* #f)
(define *pkts-info* (make-hash-table)) ;; store stuff like the last parent here
(define *configinfo* #f) ;; raw results from setup, includes toppath and table from megatest.config
(define *runconfigdat* #f) ;; run configs data
(define *configdat* #f) ;; megatest.config data ==> moved to configfmod
(define *configstatus* #f) ;; status of data; 'fulldata : all processing done, #f : no data yet, 'partialdata : partial read done
(define *toppath* #f)
|
︙ | | |
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
|
975
976
977
978
979
980
981
982
983
984
985
986
987
988
|
-
-
|
(define *my-signature* #f)
(define *transport-type* 'http) ;; override with [server] transport http|rpc|nmsg
;; replaced by *rmt:remote*
;; (define *runremote* #f) ;; if set up for server communication this will hold <host port>
;; (define *max-cache-size* 0)
(define *logged-in-clients* (make-hash-table))
;; (define *server-id* #f)
(define *server-info* #f) ;; good candidate for easily convert to non-global
;; (define *time-to-exit* #f)
(define *server-run* #t)
(define *run-id* #f)
(define *server-kind-run* (make-hash-table))
(define *home-host* #f)
;; (define *total-non-write-delay* 0)
(define *heartbeat-mutex* (make-mutex))
(define *api-process-request-count* 0)
|
︙ | | |
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
|
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
|
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
d
(begin
;; (if (common:low-noise-print 60 "tests:get-tests-search-path" d)
;; (debug:print 0 *default-log-port* "WARNING: problem with directory " d ", dropping it from tests path"))
#f)))
(append paths (list (conc *toppath* "/tests"))))))
;;======================================================================
;; network utilities
;;======================================================================
(define (server:get-best-guess-address hostname)
#;(define (server:get-best-guess-address hostname)
(let ((res #f))
(for-each
(lambda (adr)
(if (not (eq? (u8vector-ref adr 0) 127))
(set! res adr)))
;; NOTE: This can fail when there is no mention of the host in /etc/hosts. FIXME
(vector->list (hostinfo-addresses (hostname->hostinfo hostname))))
(string-intersperse
(map number->string
(u8vector->list
(if res res (hostname->ip hostname)))) ".")))
;; NOTE: Look at address-info egg as alternative to some of this
(define (rate-ip ipaddr)
(regex-case ipaddr
( "^127\\..*" _ 0 )
( "^(10\\.0|192\\.168)\\..*" _ 1 )
( else 2 ) ))
;; Change this to bias for addresses with a reasonable broadcast value?
;;
(define (ip-pref-less? a b)
(> (rate-ip a) (rate-ip b)))
(define (server:get-best-guess-address hostname)
(let ((all-addresses (get-all-ips hostname)))
(cond
((null? all-addresses)
hostname #;(get-host-name)) ;; no interfaces?
((eq? (length all-addresses) 1)
(car all-addresses)) ;; only one to choose from, just go with it
(else
(car (sort all-addresses ip-pref-less?))))))
(define (get-all-ips-sorted)
(sort (get-all-ips) ip-pref-less?))
(define (get-all-ips hostname)
(map address-info-host
(filter (lambda (x)
(equal? (address-info-type x) 'tcp))
(address-infos hostname))))
(define (tests:readlines filename)
(call-with-input-file filename
(lambda (p)
(let loop ((line (read-line p))
(result '()))
(if (eof-object? line)
|
︙ | | |