@@ -0,0 +1,51 @@
1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #!/usr/bin/tclsh
2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Run this script from within any open Fossil checkout. Example:
4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # tclsh many-www.tcl | tee out.txt
6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # About 10,000 different web page requests will be made. Each is timed
8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # and the time shown on output. Use this script to search for segfault problems
9 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # or to look for pages that need optimization.
10 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
11 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc run_query {url} {
12 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set fd [open q.txt w]
13 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts $fd "GET $url HTTP/1.0\r\n\r"
14 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ close $fd
15 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [exec fossil test-http <q.txt]
16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set todo {}
18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach url {
19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /home
20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /timeline
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /brlist
22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /taglist
23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /reportlist
24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } {
25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set seen($url) 1
26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ limit 10000
27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set npending [llength [array names pending]]
28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc get_pending {} {
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ global pending npending
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set res [lindex [array names pending] [expr {int(rand()*$npending)}]]
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unset pending($res)
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ incr npending -1
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $res
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for {set i 0} {$npending>0 && turn $res
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for {set i 0} {$i<$limit} {incr i} {
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set url [get_pe puts -nonewline "($round/[expr {$i+1}]) $url "
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flush stdout
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set tm [time {set x [run_query $url]}]
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set ms [lindex $tm 0]
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts [format {%.3fs} [expr {$ms/1000000.0}]]
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flush stdout
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[string length $x]>1000000} {
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set x [string0 1000000]
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set k 0
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while {[regexp {<[aA] .*?href="(/[a-z].*?)".*?>(.*)$} $x all url taset u2 [string map {< < > > " \" & &} $url]
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {![info exists seen($u2)]} {
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set next($u2) 1
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set seen(pending incr npending