Index: openacs-4/packages/acs-developer-support/acs-developer-support.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/acs-developer-support.info,v diff -u -N -r1.17 -r1.18 --- openacs-4/packages/acs-developer-support/acs-developer-support.info 13 Jan 2005 13:55:19 -0000 1.17 +++ openacs-4/packages/acs-developer-support/acs-developer-support.info 4 Feb 2005 13:34:39 -0000 1.18 @@ -8,30 +8,31 @@ t ds - + Lars Pind Profiling for requests including database timing information. - 2003-11-10 + 2005-02-04 OpenACS Developer support stores timing and other logged information for requests to support debugging and tuning and supports user switching and a Tcl Shell to invoke arbitrary tcl code on the server. 0 - - + + - + + Index: openacs-4/packages/acs-developer-support/lib/footer.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/lib/footer.adp,v diff -u -N -r1.11 -r1.12 --- openacs-4/packages/acs-developer-support/lib/footer.adp 3 Feb 2005 23:22:20 -0000 1.11 +++ openacs-4/packages/acs-developer-support/lib/footer.adp 4 Feb 2005 13:34:39 -0000 1.12 @@ -29,20 +29,33 @@

Profiling Information

+ + - + + +
Ops Tag # Iterations Total time Avg. time per iterationSize
@profiling.file_links;noquote@ @profiling.tag@@profiling.file_links;noquote@@profiling.tag@ @profiling.num_iterations@ @profiling.total_ms@ ms @profiling.ms_per_iteration@ ms@profiling.size@
+ +

+

+ + + +
+

+ Index: openacs-4/packages/acs-developer-support/lib/footer.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/lib/footer.tcl,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/acs-developer-support/lib/footer.tcl 13 Jan 2005 13:55:19 -0000 1.7 +++ openacs-4/packages/acs-developer-support/lib/footer.tcl 4 Feb 2005 13:34:39 -0000 1.8 @@ -3,9 +3,12 @@ # TODO: Go through request-processor to see what other information should be exposed to developer-support # TODO: Always show comments inline by default? +set request [ad_conn request] if { $show_p } { + set page_fragment_cache_p [ds_page_fragment_cache_enabled_p] + set ds_url [ds_support_url] #set comments_p [ds_comments_p] @@ -86,23 +89,48 @@ } # Profiling information - global ds_profile__total_ms ds_profile__iterations + global ds_profile__total_ms ds_profile__iterations - multirow create profiling tag num_iterations total_ms ms_per_iteration file_links + multirow create profiling tag num_iterations total_ms ms_per_iteration file_links size if { [info exists ds_profile__total_ms] } { - foreach tag [lsort [array names ds_profile__total_ms]] { - if {[file exists $tag]} { - set file_links "e c" - } else { + foreach tag [lsort [array names ds_profile__iterations]] { + if {[file exists $tag]} { + set file_links "e" + append file_links " c" + } else { set file_links {} } - multirow append profiling $tag [set ds_profile__iterations($tag)] [lc_numeric [set ds_profile__total_ms($tag)]] \ - [ad_decode [set ds_profile__iterations($tag)] 0 {} \ - [lc_numeric [expr [set ds_profile__total_ms($tag)]/[set ds_profile__iterations($tag)]]]] \ - $file_links + if { $page_fragment_cache_p } { + if { [string match *.adp $tag]} { + append file_links " o" + if {[ns_cache get ds_page_bits "$request:$tag" dummy]} { + set size [string length $dummy] + } else { + set size {?} + } + } else { + append file_links " x" + set size - + } + } else { + set size {} + } + + if {[info exists ds_profile__total_ms($tag)]} { + set total_ms [lc_numeric [set ds_profile__total_ms($tag)]] + if {[info exists ds_profile__iterations($tag)] + && $ds_profile__iterations($tag) > 0} { + set ms_per_iteration [lc_numeric [expr {1.0*$ds_profile__total_ms($tag)/$ds_profile__iterations($tag)}]] + } else { + set ms_per_iteration - + } + } else { + set total_ms - + set ms_per_iteration - + } + multirow append profiling $tag [set ds_profile__iterations($tag)] $total_ms $ms_per_iteration $file_links $size } } - } Index: openacs-4/packages/acs-developer-support/tcl/acs-developer-support-init.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/tcl/acs-developer-support-init.tcl,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/acs-developer-support/tcl/acs-developer-support-init.tcl 4 May 2004 20:51:38 -0000 1.5 +++ openacs-4/packages/acs-developer-support/tcl/acs-developer-support-init.tcl 4 Feb 2005 13:34:40 -0000 1.6 @@ -14,21 +14,28 @@ # Take the IP list (space or comma seperated) and turn it into a tcl list. set IPs [list] - foreach ip [split [ad_parameter -package_id [ds_instance_id] EnabledIPs acs-developer-support *] { ,}] { - if {[string equal $ip "*"]} { + foreach ip [lsort -unique [split [ad_parameter -package_id [ds_instance_id] EnabledIPs acs-developer-support *] { ,}]] { + if {[string equal $ip "*"]} { # a star means anything will match so just use the * instead set IPs "*" break - } elseif {![empty_string_p $ip]} { + } elseif {![empty_string_p $ip]} { lappend IPs $ip } } nsv_set ds_properties enabled_ips $IPs nsv_set ds_properties database_enabled_p [ad_parameter -package_id [ds_instance_id] DatabaseEnabledP developer-support 0] + nsv_set ds_properties adp_reveal_enabled_p [ad_parameter -package_id [ds_instance_id] AdpRevealEnabledP developer-support 0] + + nsv_set ds_properties page_fragment_cache_p [ad_parameter -package_id [ds_instance_id] PageFragmentCacheP developer-support 0] + ds_set_user_switching_enabled [ad_parameter -package_id [ds_instance_id] UserSwitchingEnabledP acs-developer-support 0] + + # JCD: used to cache rendered page bits. cap at 10mb for now. + ns_cache create ds_page_bits -size 10000000 } ds_watch_packages Index: openacs-4/packages/acs-developer-support/tcl/acs-developer-support-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/tcl/acs-developer-support-procs.tcl,v diff -u -N -r1.38 -r1.39 --- openacs-4/packages/acs-developer-support/tcl/acs-developer-support-procs.tcl 3 Feb 2005 11:42:29 -0000 1.38 +++ openacs-4/packages/acs-developer-support/tcl/acs-developer-support-procs.tcl 4 Feb 2005 13:34:40 -0000 1.39 @@ -90,6 +90,12 @@ return [nsv_get ds_properties database_enabled_p] } +ad_proc -public ds_page_fragment_cache_enabled_p {} { o + Are we populating the page fragment cache? +} { + return [nsv_get ds_properties page_fragment_cache_p] +} + ad_proc -public ds_adp_reveal_enabled_p {} { Returns true if developer-support adp revealing facilities are enabled. } { @@ -629,19 +635,19 @@ error "Tag parameter is required" } set ds_profile__start_clock($tag) [clock clicks -milliseconds] + set ds_profile__iterations($tag) 0 } stop { if { ![empty_string_p $ds_profile__start_clock($tag)] } { set num_ms [expr [clock clicks -milliseconds] - $ds_profile__start_clock($tag)] - set ds_profile__start_clock($tag) {} + unset ds_profile__start_clock($tag) if { ![info exists ds_profile__total_ms($tag)] } { set ds_profile__total_ms($tag) 0 - set ds_profile__iterations($tag) 0 } set ds_profile__total_ms($tag) [expr [set ds_profile__total_ms($tag)] + $num_ms] - set ds_profile__iterations($tag) [expr [set ds_profile__iterations($tag)] + 1] + incr ds_profile__iterations($tag) } else { ns_log Error "ds_profile stop called without a corresponding call to ds_profile start, with tag $tag" } Index: openacs-4/packages/acs-developer-support/www/request-info.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/www/request-info.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-developer-support/www/request-info.adp 29 Jan 2004 12:02:46 -0000 1.3 +++ openacs-4/packages/acs-developer-support/www/request-info.adp 4 Feb 2005 13:34:40 -0000 1.4 @@ -2,6 +2,15 @@ @page_title;noquote@ @context;noquote@ + +

+

+ + + +
+

+ @body;noquote@ Index: openacs-4/packages/acs-developer-support/www/request-info.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/www/request-info.tcl,v diff -u -N -r1.11 -r1.12 --- openacs-4/packages/acs-developer-support/www/request-info.tcl 3 Feb 2005 11:42:29 -0000 1.11 +++ openacs-4/packages/acs-developer-support/www/request-info.tcl 4 Feb 2005 13:34:40 -0000 1.12 @@ -23,6 +23,8 @@ } } +set page_fragment_cache_p [ds_page_fragment_cache_enabled_p] + if { [info exists property(start)] } { append body "

Parameters

Index: openacs-4/packages/acs-developer-support/www/search.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/www/search.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-developer-support/www/search.adp 4 Feb 2005 13:34:40 -0000 1.1 @@ -0,0 +1,20 @@ + + Search + @context;noquote@ + +

+ + + + +

@matches.file_links;noquote@ @matches.page@ @matches.size@ bytes

@matches.excerpt@
+
+
+ +

No match

+
+
+ +

That request is invalid or has expired from the cache.

+
+ \ No newline at end of file Index: openacs-4/packages/acs-developer-support/www/search.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/www/search.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-developer-support/www/search.tcl 4 Feb 2005 13:34:40 -0000 1.1 @@ -0,0 +1,35 @@ +ad_page_contract { + return x-editlocal or the code for the compiled function + + @author Jeff Davis + @creation-date 2005-02-02 + @cvs-id $Id: search.tcl,v 1.1 2005/02/04 13:34:40 jeffd Exp $ +} { + request:integer,notnull + expression:notnull +} + +set context [list [list request-info?request=$request "request $request"] search] + +if {![ns_cache get ds_page_bits $request pages]} { + set gone_p 1 +} else { + set gone_p 0 + + multirow create matches page excerpt file_links size + + foreach page $pages { + if {![info exists matched($page)] + && [ns_cache get ds_page_bits $request:$page content]} { + if {[regexp -indices $expression $content offset]} { + set file_links "e" + append file_links " c" + append file_links " o" + set size [string length $content] + + multirow append matches $page "...[string trim [string range $content [expr [lindex $offset 0] - 50] [expr [lindex $offset 1] + 50]]]..." $file_links $size + } + set matched($page) 1 + } + } +} Index: openacs-4/packages/acs-developer-support/www/send.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/www/send.tcl,v diff -u -N -r1.1 -r1.2 --- openacs-4/packages/acs-developer-support/www/send.tcl 1 Apr 2004 15:04:38 -0000 1.1 +++ openacs-4/packages/acs-developer-support/www/send.tcl 4 Feb 2005 13:34:40 -0000 1.2 @@ -3,6 +3,7 @@ } { {fname:trim {}} {code:trim {}} + {output:trim {}} } if {![empty_string_p $code]} { @@ -11,6 +12,13 @@ } else { ns_returnfile 200 text/plain $code } -} else { +} elseif {![empty_string_p $fname]} { ns_return 200 application/x-editlocal [ns_set get [ns_conn form] fname] +} elseif {![empty_string_p $output]} { + if {[ns_cache get ds_page_bits $output content]} { + ns_return 200 text/plain "Size: [string length $content]\n\n------------------------------------------------------------\n$content" + } else { + ns_return 200 text/plain "Output for $output has expired" + } } +