source: trunk/abcl/tools/jar-size/build-metrics.lisp

Last change on this file was 13553, checked in by Mark Evenson, 13 years ago

Final metrics for initial run for every tenth commit

File size: 2.6 KB
Line 
1(defun write-data (&key (file "build-metrics.data"))
2  (let ((results (nreverse (parse))))
3    (format t "Writing gnuplot file to ~A.~%" file)
4    (with-open-file (s file :direction :output :if-exists :supersede)
5      (format s "# hg-changeset-number svn-revision date abcl.jar-size user-build-time~%")
6      (dolist (line results)
7        (format s "~A~%" line)))))
8
9(defun parse (&key (file "build-metrics.out"))
10  (let (result)
11    (format t "Reading raw build metrics from ~A.~%" file)
12    (with-open-file (s file)
13      (loop
14         (when (eq (peek-char nil s nil 'EOF) 'EOF)
15           (return result))
16         (let ((record (read-record s)))
17           (when (null record)
18             (return result))
19             (flet ((get-value (key)
20                      (cdr (assoc key record :test 'equal))))
21               (unless (string-equal (get-value "BUILD")
22                                     "FAILED")
23                 (let ((changeset (get-value "changeset"))
24                       (date (get-value "date"))
25                       (svn (get-value "svn")))
26                   ;;; Just include the part before the colon
27                   (setf changeset (subseq changeset 
28                                           0 (search ":" changeset)))
29                   ;;; Just include the day
30                   (setf date (subseq date 
31                                      0 (search " " date)))
32                   ;;; String the preceeding "r"
33                   (setf svn (subseq svn 1))
34                   (push (format nil "~A ~A ~A ~A ~A"
35                                 changeset
36                                 svn 
37                                 date 
38                                 (get-value  "abcl.jar-size")
39                                 (get-value "user"))
40                         result)))))))))
41       
42(defun read-record (s)
43  (let (result)
44    (handler-case
45        (let ((begin (read-line s)))
46          (unless (string-equal begin "-----")
47            (error "Stream ~a not at beginning of record: ~a" s begin))
48          (loop 
49             (when (equal (peek-char nil s) #\-) (return-from read-record result))
50             (let* ((line (read-line s))
51                    (space (search " " line)))
52               (when (numberp space)
53                 (let ((key (subseq line 0 space))
54                       (value (subseq line (1+ space))))
55                   (when (equal #\: (char key (1- (length key))))
56                     (setf key (subseq key 0 (1- (length key)))))
57                   (push (cons key value) result)))))
58          result)
59      (end-of-file () (return-from read-record result)))))
60
61
62
63
64
65
66   
Note: See TracBrowser for help on using the repository browser.