Index: openacs-4/packages/acs-developer-support/tcl/test/acs-developer-support-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/tcl/test/Attic/acs-developer-support-procs.tcl,v diff -u -N -r1.1.2.3 -r1.1.2.4 --- openacs-4/packages/acs-developer-support/tcl/test/acs-developer-support-procs.tcl 31 May 2021 17:51:52 -0000 1.1.2.3 +++ openacs-4/packages/acs-developer-support/tcl/test/acs-developer-support-procs.tcl 1 Jun 2021 13:53:55 -0000 1.1.2.4 @@ -47,11 +47,26 @@ ds_page_fragment_cache_enabled_p ds_profiling_enabled_p ds_show_p + ds_init } \ ds_features_enabled_test { Check that the api to check for enabled features works as expected. } { + aa_log "Init variables" + ds_init + aa_true "Init worked correctly" { + ![ds_enabled_p] || + ( + (![ds_collection_enabled_p] || + ([info exists ::ds_collection_enabled_p] && $::ds_collection_enabled_p == 1)) && + (![ds_profiling_enabled_p] || + ([info exists ::ds_profiling_enabled_p] && $::ds_profiling_enabled_p == 1)) && + (![ds_show_p] || + ([info exists ::ds_show_p] && $::ds_show_p == 1)) + ) + } + set old_enabled_state [ds_enabled_p] set old_db_state [ds_database_enabled_p] set old_pr_state [ds_profiling_enabled_p] @@ -110,20 +125,27 @@ -procs { ds_add ds_comment + ds_collect_db_call + ds_profile } \ ds_add_test { Check that the api to add content to the report works as expected. } { set old_enabled_state [ds_enabled_p] + set old_db_state [ds_database_enabled_p] try { set collection_enabled_p [ds_collection_enabled_p] + set enabled_p 0 nsv_set ds_properties enabled_p $enabled_p set ::ds_enabled_p $enabled_p - set key $::ad_conn(request).comment + set key $::ad_conn(request).comment + set db_key $::ad_conn(request).db + set pr_key $::ad_conn(request).prof + nsv_set ds_request $key "" set current_size 0 @@ -132,6 +154,9 @@ aa_true "DS is disabled, adding should not have effect" {$current_size == $size_new} + aa_true "DS is disabled, profiling fails" [catch {ds_profile start __test}] + aa_true "Profiling fails on invalid command" [catch {ds_profile __test __test}] + nsv_set ds_request $key [list] set current_size 0 @@ -140,20 +165,114 @@ nsv_set ds_properties enabled_p $enabled_p set ::ds_enabled_p $enabled_p + aa_log "start profiling" + ds_profile start __test + aa_true "Profiling fails on invalid command" [catch {ds_profile __test __test}] + + aa_true "DS is enabled, profiling started correcly" { + [info exists ::ds_profile__start_clock(__test)] && + $::ds_profile__start_clock(__test) ne "" + } + + aa_log "stopping profiling" + ds_profile stop __test + aa_true "DS is enabled, profiling stopped correcly" {[llength [nsv_get ds_request $pr_key]] == 2} + aa_log "Adding stuff to the report" ds_add comment __test ds_comment __test + set db_current_size [expr {[nsv_exists ds_request $db_key] ? + [llength [nsv_get ds_request $db_key]] : 0}] + aa_log "disable database stats collection" + ds_set_database_enabled 0 + aa_log "issuing a query" + db_string query {select 1 from dual} + set db_size_new [expr {[nsv_exists ds_request $db_key] ? + [llength [nsv_get ds_request $db_key]] : 0}] + aa_log $db_size_new + + aa_true "DB stat collection is disabled, db stat collection should not have effect" \ + {$db_current_size == $db_size_new} + + aa_log "enabled database stats collection" + ds_set_database_enabled 1 + set db_current_size [expr {[nsv_exists ds_request $db_key] ? + [llength [nsv_get ds_request $db_key]] : 0}] + aa_log "issuing a query" + db_string query {select 1 from dual} + + set db_size_new [llength [nsv_get ds_request $db_key]] + + if {$collection_enabled_p} { + aa_true "Collection is enabled, db stat collection should work" \ + {$db_current_size < $db_size_new} + } else { + aa_true "Collection is disabled, db stat collection should not have effect" \ + {$db_current_size == $db_size_new} + } + set size_new [llength [nsv_get ds_request $key]] if {$collection_enabled_p} { - aa_true "Collection is enabled, adding should work" {$current_size + 2 == $size_new} + aa_true "Collection is enabled, adding should work" \ + {$current_size + 2 == $size_new} } else { - aa_true "Collection is disabled, adding should not have effect" {$current_size == $size_new} + aa_true "Collection is disabled, adding should not have effect" \ + {$current_size == $size_new} } } finally { nsv_set ds_properties enabled_p $old_enabled_state set ::ds_enabled_p $old_enabled_state + + ds_set_database_enabled $old_db_state } } + +aa_register_case \ + -cats {api smoke} \ + -procs { + ds_link + } \ + ds_link_test { + Check that ds_link works as expected + } { + set old_enabled_state [ds_enabled_p] + set old_user_switching [ds_user_switching_enabled_p] + + set permission_p [ds_permission_p] + set collection_enabled_p [ds_collection_enabled_p] + + try { + ds_set_user_switching_enabled 0 + set enabled_p 0 + nsv_set ds_properties enabled_p $enabled_p + set ::ds_enabled_p $enabled_p + + aa_equals "No DS and no user switch, link is empty" [ds_link] "" + + ds_set_user_switching_enabled 1 + aa_true "No DS and user switch, link is empty if no permissions" \ + {!$permission_p || [ad_looks_like_html_p [ds_link]]} + + set enabled_p 1 + nsv_set ds_properties enabled_p $enabled_p + set ::ds_enabled_p $enabled_p + + aa_true \ + "DS enabled, link will contain the DS URL and look as HTML if collection is enabled" \ + { + !$collection_enabled_p || + ([ad_looks_like_html_p [ds_link]] && + [string first [ds_support_url] [ds_link]] >= 0) + } + + } finally { + nsv_set ds_properties enabled_p $old_enabled_state + set ::ds_enabled_p $old_enabled_state + + ds_set_user_switching_enabled $old_user_switching + } + + }