In testrunner.tcl: Better estimates for ETC (Estimated Time to Completion).
Show the ETC even for the single-line status reports. FossilOrigin-Name: 2a2f5f4e378338951cc2030ffbacd678e6a6eab142e39ee632c61be42345b092
This commit is contained in:
parent
e6c2759acb
commit
0d7ede8d1c
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
||||
C Add\ssqlite3rebaser_...\sto\sthe\sAPI\ssymbols\saccepted\sby\sthe\s'checksymbols'\smakefile\starget.
|
||||
D 2024-10-21T21:53:08.916
|
||||
C In\stestrunner.tcl:\s\sBetter\sestimates\sfor\sETC\s(Estimated\sTime\sto\sCompletion).\nShow\sthe\sETC\seven\sfor\sthe\ssingle-line\sstatus\sreports.
|
||||
D 2024-10-21T22:45:59.158
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@ -1721,7 +1721,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163
|
||||
F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
|
||||
F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
|
||||
F test/tester.tcl 7b44f1a9b9a2de8112695b908afc21dd9a68cd2d44e84b73f1b27b53492c0d59
|
||||
F test/testrunner.tcl 6215e11be403a16947bbb3b31cf4905b417155df242e4c5229f85bcda1c28f50 x
|
||||
F test/testrunner.tcl 1472b8c57c124c7eed934a2cbc955b0c0e0a948a4608546598195267bbd4b2fd x
|
||||
F test/testrunner_data.tcl c7b3b911e44f7e8c01cc6bc7571e16115cdc2e4db46630bd2acd7a931a46380e
|
||||
F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899
|
||||
F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502
|
||||
@ -2219,8 +2219,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P 03a9703e27c44437c39363d0baf82db4ebc94538a0f28411c85dda156f82636e
|
||||
R 6ee4864245abc117fdbf4575b6f7f982
|
||||
U stephan
|
||||
Z 125137dcf74d7a719c01e300208c0b76
|
||||
P 0284590f212b2d6ac6516e60350e924a1c29602e8ac8b997d0a5fa488a2dc9c1
|
||||
R 2ac47cb3cae83d7727a58a5f1336d6ea
|
||||
U drh
|
||||
Z e2b1dfbad8a2776fb071a8b0b9eafb7e
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
@ -1 +1 @@
|
||||
0284590f212b2d6ac6516e60350e924a1c29602e8ac8b997d0a5fa488a2dc9c1
|
||||
2a2f5f4e378338951cc2030ffbacd678e6a6eab142e39ee632c61be42345b092
|
||||
|
@ -324,6 +324,8 @@ set TRG(schema) {
|
||||
/* Fields updated as jobs run */
|
||||
starttime INTEGER, -- Start time (milliseconds since 1970)
|
||||
endtime INTEGER, -- End time
|
||||
span INTEGER, -- Total run-time in milliseconds
|
||||
estwork INTEGER, -- Estimated amount of work
|
||||
state TEXT CHECK( state IN ('','ready','running','done','failed','omit') ),
|
||||
ntest INT, -- Number of test cases run
|
||||
nerr INT, -- Number of errors reported
|
||||
@ -342,6 +344,13 @@ set TRG(schema) {
|
||||
}
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
# Estimated amount of work required by displaytype, relative to 'tcl'
|
||||
#
|
||||
set estwork(tcl) 1
|
||||
set estwork(fuzz) 11
|
||||
set estwork(bld) 56
|
||||
set estwork(make) 97
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# Check if this script is being invoked to run a single file. If so,
|
||||
# run it.
|
||||
@ -495,19 +504,21 @@ proc show_status {db cls} {
|
||||
}]
|
||||
|
||||
set total 0
|
||||
foreach s {"" ready running done failed} { set S($s) 0 }
|
||||
foreach s {"" ready running done failed omit} { set S($s) 0; set W($s) 0; }
|
||||
set workpending 0
|
||||
$db eval {
|
||||
SELECT state, count(*) AS cnt FROM jobs GROUP BY 1
|
||||
SELECT state, count(*) AS cnt, sum(estwork) AS ew FROM jobs GROUP BY 1
|
||||
} {
|
||||
incr S($state) $cnt
|
||||
incr total $cnt
|
||||
incr W($state) $ew
|
||||
incr totalw $ew
|
||||
}
|
||||
set nt 0
|
||||
set ne 0
|
||||
$db eval {
|
||||
SELECT sum(ntest) AS nt, sum(nerr) AS ne FROM jobs HAVING nt>0
|
||||
} break
|
||||
set fin [expr $S(done)+$S(failed)]
|
||||
set fin [expr $W(done)+$W(failed)+$W(omit)]
|
||||
if {$cmdline!=""} {set cmdline " $cmdline"}
|
||||
|
||||
if {$cls} {
|
||||
@ -522,15 +533,12 @@ proc show_status {db cls} {
|
||||
|
||||
set srcdir [file dirname [file dirname $TRG(info_script)]]
|
||||
set line "Running: $S(running) (max: $nJob)"
|
||||
if {$S(running)>0 && $fin>100 && $fin>0.05*$total} {
|
||||
# Only estimate the time remaining after completing at least 100
|
||||
# jobs amounting to 10% of the total. Never estimate less than
|
||||
# 2% of the total time used so far.
|
||||
set tmleft [expr {($tm/$fin)*($total-$fin)}]
|
||||
if {$S(running)>0 && $fin>10} {
|
||||
set tmleft [expr {($tm/$fin)*($totalw-$fin)}]
|
||||
if {$tmleft<0.02*$tm} {
|
||||
set tmleft [expr {$tm*0.02}]
|
||||
}
|
||||
append line " est time left [elapsetime $tmleft]"
|
||||
append line " ETC [elapsetime $tmleft]"
|
||||
}
|
||||
puts [format %-79.79s $line]
|
||||
if {$S(running)>0} {
|
||||
@ -914,6 +922,7 @@ proc r_get_next_job {iJob} {
|
||||
# Returns the jobid value for the new job.
|
||||
#
|
||||
proc add_job {args} {
|
||||
global estwork
|
||||
|
||||
set options {
|
||||
-displaytype -displayname -build -dirname
|
||||
@ -938,25 +947,29 @@ proc add_job {args} {
|
||||
|
||||
set state ""
|
||||
if {$A(-depid)==""} { set state ready }
|
||||
set type $A(-displaytype)
|
||||
set ew $estwork($type)
|
||||
|
||||
trdb eval {
|
||||
INSERT INTO jobs(
|
||||
displaytype, displayname, build, dirname, cmd, depid, priority,
|
||||
displaytype, displayname, build, dirname, cmd, depid, priority, estwork,
|
||||
state
|
||||
) VALUES (
|
||||
$A(-displaytype),
|
||||
$type,
|
||||
$A(-displayname),
|
||||
$A(-build),
|
||||
$A(-dirname),
|
||||
$A(-cmd),
|
||||
$A(-depid),
|
||||
$A(-priority),
|
||||
$ew,
|
||||
$state
|
||||
)
|
||||
}
|
||||
|
||||
trdb last_insert_rowid
|
||||
}
|
||||
|
||||
|
||||
# Argument $build is either an empty string, or else a list of length 3
|
||||
# describing the job to build testfixture. In the usual form:
|
||||
@ -1283,8 +1296,8 @@ proc make_new_testset {} {
|
||||
trdb eval { REPLACE INTO config VALUES('start', $tm ); }
|
||||
|
||||
add_jobs_from_cmdline $TRG(patternlist)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
proc mark_job_as_finished {jobid output state endtm} {
|
||||
@ -1309,10 +1322,12 @@ proc mark_job_as_finished {jobid output state endtm} {
|
||||
if {[info exists pltfm]} {set pltfm [string trim $pltfm]}
|
||||
trdb eval {
|
||||
UPDATE jobs
|
||||
SET output=$output, state=$state, endtime=$endtm,
|
||||
SET output=$output, state=$state, endtime=$endtm, span=$endtm-starttime,
|
||||
ntest=$ntest, nerr=$nerr, svers=$svers, pltfm=$pltfm
|
||||
WHERE jobid=$jobid;
|
||||
UPDATE jobs SET state=$childstate WHERE depid=$jobid;
|
||||
UPDATE config SET value=value+$nerr WHERE name='nfail';
|
||||
UPDATE config SET value=value+$ntest WHERE name='ntest';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1460,17 +1475,23 @@ proc progress_report {} {
|
||||
show_status trdb 1
|
||||
}
|
||||
} else {
|
||||
set tm [expr [clock_milliseconds] - $TRG(starttime)]
|
||||
set tm [format "%d" [expr int($tm/1000.0 + 0.5)]]
|
||||
set tmms [expr [clock_milliseconds] - $TRG(starttime)]
|
||||
set tm [format "%d" [expr int($tmms/1000.0 + 0.5)]]
|
||||
|
||||
set wtotal 0
|
||||
set wdone 0
|
||||
r_write_db {
|
||||
trdb eval {
|
||||
SELECT displaytype, state, count(*) AS cnt
|
||||
SELECT displaytype, state, count(*) AS cnt, sum(estwork) AS ew
|
||||
FROM jobs
|
||||
GROUP BY 1, 2
|
||||
} {
|
||||
set v($state,$displaytype) $cnt
|
||||
incr t($displaytype) $cnt
|
||||
incr wtotal $ew
|
||||
if {$state=="done" || $state=="failed" || $state=="omit"} {
|
||||
incr wdone $ew
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1486,11 +1507,15 @@ proc progress_report {} {
|
||||
lappend text "r$v(running,$j)"
|
||||
}
|
||||
}
|
||||
if {$wdone>0} {
|
||||
set tmleft [expr {($tmms/$wdone)*($wtotal-$wdone)}]
|
||||
append text " ETC [elapsetime $tmleft]"
|
||||
}
|
||||
|
||||
if {[info exists TRG(reportlength)]} {
|
||||
puts -nonewline "[string repeat " " $TRG(reportlength)]\r"
|
||||
}
|
||||
set report "${tm} [join $text { }]"
|
||||
set report "[elapsetime $tmms] [join $text { }]"
|
||||
set TRG(reportlength) [string length $report]
|
||||
if {[string length $report]<100} {
|
||||
puts -nonewline "$report\r"
|
||||
|
Loading…
Reference in New Issue
Block a user