Megatest

Diff
Login

Differences From Artifact [9a8148641c]:

To Artifact [467961a959]:


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
;;     result)))

;; given a path to a server log return: host port startseconds
;; any changes to number of elements returned by this fuction will dirctly affect server:record->url,server:record->id,server:kill,server:get-num-alive which uses match let 
;;
(define (server:logf-get-start-info logf)
  (let ((rx (regexp "^SERVER STARTED: (\\S+):(\\d+) AT ([\\d\\.]+) server-id: (\\S+)"))) ;; SERVER STARTED: host:port AT timesecs server id
    (handle-exceptions
     exn
     (begin
       (debug:print-info 0 *default-log-port* "Unable to get server info from " logf ", exn=" exn)
       (list #f #f #f #f)) ;; no idea what went wrong, call it a bad server


     (with-input-from-file
	 logf
       (lambda ()
	 (let loop ((inl  (read-line))
		    (lnum 0))
	   (if (not (eof-object? inl))
	       (let ((mlst (string-match rx inl)))
		 (if (not mlst)
		     (if (< lnum 500) ;; give up if more than 500 lines of server log read
			 (loop (read-line)(+ lnum 1))
			 (begin 
                           (debug:print-info 0 *default-log-port* "Unable to get server info from first 500 lines of " logf )
                           (list #f #f #f #f)))
		     (let ((dat  (cdr mlst)))
		       (list (car dat) ;; host
			     (string->number (cadr dat)) ;; port
			     (string->number (caddr dat))
			     (cadr (cddr dat))))))
	       (begin 
		 (debug:print-info 0 *default-log-port* "Unable to get server info from " logf " at " (current-seconds))
		 (list #f #f #f #f)))))))))




;; get a list of servers with all relevant data
;; ( mod-time host port start-time pid )
;;
(define (server:get-list areapath #!key (limit #f))
  (let ((fname-rx    (regexp "^(|.*/)server-(\\d+)-(\\S+).log$"))
	(day-seconds (* 24 60 60)))







|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>







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
;;     result)))

;; given a path to a server log return: host port startseconds
;; any changes to number of elements returned by this fuction will dirctly affect server:record->url,server:record->id,server:kill,server:get-num-alive which uses match let 
;;
(define (server:logf-get-start-info logf)
  (let ((rx (regexp "^SERVER STARTED: (\\S+):(\\d+) AT ([\\d\\.]+) server-id: (\\S+)"))) ;; SERVER STARTED: host:port AT timesecs server id
    ;;(handle-exceptions
    ;; exn
    ;; (begin
    ;;   (debug:print-info 0 *default-log-port* "Unable to get server info from " logf ", exn=" exn)
    ;;   (list #f #f #f #f)) ;; no idea what went wrong, call it a bad server
    (if (and (file-exists? logf)
	     (file-read-access? logf))
	(with-input-from-file
	    logf
	  (lambda ()
	    (let loop ((inl  (read-line))
		       (lnum 0))
	      (if (not (eof-object? inl))
		  (let ((mlst (string-match rx inl)))
		    (if (not mlst)
			(if (< lnum 500) ;; give up if more than 500 lines of server log read
			    (loop (read-line)(+ lnum 1))
			    (begin 
			      (debug:print-info 0 *default-log-port* "Unable to get server info from first 500 lines of " logf )
			      (list #f #f #f #f)))
			(let ((dat  (cdr mlst)))
			  (list (car dat) ;; host
				(string->number (cadr dat)) ;; port
				(string->number (caddr dat))
				(cadr (cddr dat))))))
		  (begin 
		    (debug:print-info 0 *default-log-port* "Unable to get server info from " logf " at " (current-seconds))
		    (list #f #f #f #f))))))
	(begin
	  (debug:print-info 0 *default-log-port* "Unable to get server info from " logf ", file not found or not readable.")
	  (list #f #f #f #f)))))

;; get a list of servers with all relevant data
;; ( mod-time host port start-time pid )
;;
(define (server:get-list areapath #!key (limit #f))
  (let ((fname-rx    (regexp "^(|.*/)server-(\\d+)-(\\S+).log$"))
	(day-seconds (* 24 60 60)))