Overview
Context
Changes
Modified db.scm
from [807a3e0dc9]
to [29e62d469f].
︙ | | |
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
|
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
|
+
-
+
-
+
-
+
+
|
(let loop ((lin (read-line)))
(if (not (eof-object? lin))
(begin
(debug:print 4 lin)
(db:csv->test-data db test-id lin)
(loop (read-line))))))
;; roll up the current results.
;; FIXME: Add the status to
(db:test-data-rollup db test-id)))
(db:test-data-rollup db test-id #f)))
;; WARNING: Do NOT call this for the parent test on an iterated test
;; Roll up test_data pass/fail results
;; look at the test_data status field,
;; if all are pass (any case) and the test status is PASS or NULL or '' then set test status to PASS.
;; if one or more are fail (any case) then set test status to PASS, non "pass" or "fail" are ignored
(define (db:test-data-rollup db test-id)
(define (db:test-data-rollup db test-id status)
(sqlite3:execute
db
"UPDATE tests
SET fail_count=(SELECT count(id) FROM test_data WHERE test_id=? AND status like 'fail'),
pass_count=(SELECT count(id) FROM test_data WHERE test_id=? AND status like 'pass')
WHERE id=?;"
test-id test-id test-id)
;; if the test is not FAIL then set status based on the fail and pass counts.
(thread-sleep! 1)
(sqlite3:execute
db
"UPDATE tests
SET status=CASE WHEN (SELECT fail_count FROM tests WHERE id=?) > 0
THEN 'FAIL'
WHEN (SELECT pass_count FROM tests WHERE id=?) > 0
WHEN (SELECT pass_count FROM tests WHERE id=?) > 0 AND
(SELECT status FROM tests WHERE id=?) NOT IN ('WARN','FAIL')
THEN 'PASS'
ELSE status
END WHERE id=?;"
test-id test-id test-id))
(define (db:get-prev-tol-for-test db test-id category variable)
;; Finish me?
|
︙ | | |
Modified launch.scm
from [d206050f69]
to [1748d73246].
︙ | | |
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
|
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
|
-
+
+
+
-
+
+
+
|
;; (eq? (vector-ref exit-info 2) 0)) ;; we can now use rollup-status instead
;; "PASS"
;; "FAIL")
;; "FAIL")
;; New logic based on rollup-status
(cond
((not (vector-ref exit-info 1)) "FAIL") ;; job failed to run
((eq? rollup-status 0) "PASS")
((eq? rollup-status 0)
;; if the current status is AUTO the defer to the calculated value (i.e. leave this AUTO)
(if (equal? (db:test-get-status testinfo) "AUTO") "AUTO" "PASS"))
((eq? rollup-status 1) "FAIL")
((eq? rollup-status 2) "WARN")
((eq? rollup-status 2)
;; if the current status is AUTO the defer to the calculated value but qualify (i.e. make this AUTO-WARN)
(if (equal? (db:test-get-status testinfo) "AUTO") "AUTO-WARN" "WARN"))
(else "FAIL"))
itemdat (args:get-arg "-m") #f)))
;; for automated creation of the rollup html file this is a good place...
(if (not (equal? item-path ""))
(tests:summarize-items db run-id test-name #f)) ;; don't force - just update if no
)
(mutex-unlock! m)
|
︙ | | |
Modified runs.scm
from [d434521016]
to [1e2d7c663b].
︙ | | |
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
-
-
+
+
|
;; update the primary record IF state AND status are defined
(if (and state status)
(sqlite3:execute db "UPDATE tests SET state=?,status=?,event_time=strftime('%s','now') WHERE run_id=? AND testname=? AND item_path=?;"
state real-status run-id test-name item-path))
;; if status is "AUTO" then call rollup
(if (and test-id state status (equal? status "AUTO"))
(db:test-data-rollup db test-id))
(if (and test-id state status (or (equal? status "AUTO")(equal? status "AUTO-WARN")))
(db:test-data-rollup db test-id status))
;; add metadata (need to do this way to avoid SQL injection issues)
;; :first_err
;; (let ((val (hash-table-ref/default otherdat ":first_err" #f)))
;; (if val
;; (sqlite3:execute db "UPDATE tests SET first_err=? WHERE run_id=? AND testname=? AND item_path=?;" val run-id test-name item-path)))
|
︙ | | |
Added tests/tests/ezlog_fail_then_pass/firststep.logpro version [1d9c0ef873].
|
1
2
3
4
5
6
7
8
9
10
|
+
+
+
+
+
+
+
+
+
+
|
;; (c) 2006,2007,2008,2009 Matthew Welland matt@kiatoa.com
;;
;; License GPL.
(expect:required in "LogFileBody" > 0 "Must be some files in the dir" #/.*/)
(expect:ignore in "LogFileBody" < 99 "Ignore the word error in comments" #/^\/\/.*error/)
(expect:warning in "LogFileBody" = 0 "Any warning" #/WARNING/)
(expect:error in "LogFileBody" = 0 "Any error" (list #/ERROR/ #/error/)) ;; but disallow any other errors
|
| | | | | | | | |
Added tests/tests/ezlog_fail_then_pass/main.sh version [fd6c1c1d59].
|
1
2
3
4
5
6
7
8
9
10
11
|
+
+
+
+
+
+
+
+
+
+
+
|
#!/bin/bash
megatest -step yepstep :state start :status n/a
ls /tmp
megatest -step yepstep :state end :status $?
megatest -load-test-data << EOF
OPER,du, 1.2, 1.2, < , GBytes ,System didn't use too much space
EOF
megatest -test-status :state COMPLETED :status AUTO
|
| | | | | | | | | |
Added tests/tests/ezlog_fail_then_pass/testconfig version [be9f816262].
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
+
+
+
+
+
+
+
+
+
+
+
+
+
|
[setup]
[ezsteps]
firststep main.sh
[test_meta]
author matt
owner bob
description This test runs a single ezstep which is logpro clean
but fails based on -test-data loaded.
tags first,single
reviewed 09/10/2011, by Matt
|
| | | | | | | | | | | |