You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tcl.apache.org by mx...@apache.org on 2020/09/27 21:59:34 UTC

[tcl-rivet] branch master updated (9b91803 -> 93e86eb)

This is an automated email from the ASF dual-hosted git repository.

mxmanghi pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tcl-rivet.git.


    from 9b91803  restructuring and testing new code of upload command
     new 8f9ec41  add add method form_exists to check for registration of a form
     new 93e86eb  add support for testing with different MPMs and bridges

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitignore                               |  1 +
 ChangeLog                                |  5 ++
 rivet/packages/formbroker/formbroker.tcl |  8 ++-
 tests/apachetest/apachetest.tcl          | 70 +++++++++++++++----------
 tests/apachetest/template.conf.2.tcl     |  1 -
 tests/runtests.tcl                       | 89 +++++++++++++++++++++++---------
 6 files changed, 122 insertions(+), 52 deletions(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tcl.apache.org
For additional commands, e-mail: commits-help@tcl.apache.org


[tcl-rivet] 02/02: add support for testing with different MPMs and bridges

Posted by mx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mxmanghi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tcl-rivet.git

commit 93e86eb5ecbd98123698c3007b7ffeb7d452a13d
Author: Massimo Manghi <mx...@apache.org>
AuthorDate: Sun Sep 27 23:52:14 2020 +0200

    add support for testing with different MPMs and bridges
---
 .gitignore                           |  1 +
 ChangeLog                            |  5 ++
 tests/apachetest/apachetest.tcl      | 70 +++++++++++++++++-----------
 tests/apachetest/template.conf.2.tcl |  1 -
 tests/runtests.tcl                   | 89 ++++++++++++++++++++++++++----------
 5 files changed, 115 insertions(+), 51 deletions(-)

diff --git a/.gitignore b/.gitignore
index d6f9347..0c86a44 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,3 +39,4 @@ tests/rivet/
 tests/server.conf
 tests/test.conf
 tests/uploadedjpeg.jpg
+Session.vim
diff --git a/ChangeLog b/ChangeLog
index 381c7c6..0cad9b7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2020-09-27 Massimo Manghi <mx...@apache.org>
+	* rivet/packages/formbroker/formbroker.tcl: add method form_exists to check for registration
+	of a form
+	* test/apachetest/apachetest.tcl,test/runtests.tcl: add support for testing with various MPMs and bridges 
+
 2020-02-03 Massimo Manghi <mx...@apache.org>
     * src/request/: Update obsolete copyright statements
     * src/mod_rivet_ng/rivetCore.c: update comments to upload command
diff --git a/tests/apachetest/apachetest.tcl b/tests/apachetest/apachetest.tcl
index 38206ec..d9658c8 100644
--- a/tests/apachetest/apachetest.tcl
+++ b/tests/apachetest/apachetest.tcl
@@ -1,6 +1,6 @@
 # apachetest.tcl -- Tcl-based Apache test suite
 
-# Copyright 2001-2005 The Apache Software Foundation
+# Copyright 2001-2020 The Apache Tcl Team / The Apache Software Foundation
 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,8 +14,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# $Id$
-
 # This test suite provides a means to create configuration files, and
 # start apache with user-specified options.  All it needs to run is
 # the name of the Apache executable, which must, however, be compiled
@@ -43,16 +41,16 @@ proc kill {signal pid} {
     after 100
     set i 100
     while {1} {
-	catch {exec ps -p $pid} out
-	if {[regexp $pid $out]} {
-	    incr i 250
-	    after 250
-	} else {
-	    break
-	}
+        catch {exec ps -p $pid} out
+        if {[regexp $pid $out]} {
+            incr i 250
+            after 250
+        } else {
+            break
+        }
     }
     if {$i > 100} {
-	puts "Waiting [expr {$i/1000.0}] seconds until process was killed"
+        puts "Waiting [expr {$i/1000.0}] seconds until process was killed"
     }
 }
 
@@ -71,8 +69,7 @@ namespace eval apachetest {
 	} 
 	variable httpd_version  $::httpd_version
     # this file should be in the same directory this script is.
-    variable templatefile [file join [file dirname [info script]] \
-			       template.conf.2.tcl]
+    variable templatefile [file join [file dirname [info script]] template.conf.2.tcl]
 }
 
 # apachetest::need_modules --
@@ -94,7 +91,7 @@ namespace eval apachetest {
 proc apachetest::need_modules { modlist } {
     variable module_assoc
     foreach module_pair $modlist {
-	set module_assoc([lindex $module_pair 0]) [lindex $module_pair 1]
+        set module_assoc([lindex $module_pair 0]) [lindex $module_pair 1]
     }
 }
 
@@ -190,12 +187,12 @@ proc apachetest::startserver { args } {
 # getbinname - get the name of the apache binary, and check to make
 # sure it's ok.  The user should supply this parameter.
 
-proc apachetest::getbinname { argv } {
+proc apachetest::getbinname { bname } {
     variable binname
 
-    set binname [lindex $argv 0]
+    set binname $bname
     if { $binname == "" || ! [file executable $binname] } {
-	    error "Please supply the full name and path of the Apache executable on the command line."
+	    error "Invalid executable '$binname', please supply the full name and path of the Apache executable on the command line."
     }
     return $binname
 }
@@ -207,9 +204,15 @@ proc apachetest::getbinname { argv } {
 proc apachetest::getcompiledin { binname } {
     variable module_assoc
 
-    set bin [open [list | "$binname" -l] r]
-    set compiledin [read $bin]
-    close $bin
+    if {[catch {
+        set bin [open [list | "$binname" -l] r]
+        set compiledin [read $bin]
+        close $bin} e einfo]} {
+            puts "error: $e"
+            puts "error info: $einfo"
+
+            error "caught error in apachetest::getcompledin"
+    }
     set modlist [split $compiledin]
     set compiledin [list]
     set mod_so_present 0
@@ -234,16 +237,17 @@ proc apachetest::getcompiledin { binname } {
 proc apachetest::gethttpdconf { binname } {
     set bin [open [list | $binname -V] r]
     set options [read $bin]
-    close $bin
+    catch {close $bin}
     regexp {SERVER_CONFIG_FILE="(.*?)"} "$options" match filename
 
-    if { ! [file exists $filename] } {
+    if {![file exists $filename]} {
 
-# see if we can find something by combining HTTP_ROOT + SERVER_CONFIG_FILE
+        # see if we can find something by combining
+        # HTTP_ROOT + SERVER_CONFIG_FILE
 
         regexp {HTTPD_ROOT="(.*?)"} "$options" match httpdroot
         set completename [file join $httpdroot $filename]
-        if { ! [file exists $completename] } {
+        if {![file exists $completename]} {
             error "neither '$filename' or '$completename' exists"
         }
         return $completename
@@ -376,13 +380,15 @@ proc apachetest::determinemodules { binname } {
     }
     set needed [lsort $needed]
 
+    puts "needed: $needed"
+
     set needtoget [list]
     foreach mod $needed {
         if { [lsearch $compiledin $mod] == -1 } {
             lappend needtoget $mod
         }
     }
-    if { $needtoget == "" } {
+    if {$needtoget == ""} {
         return ""
     } else {
         return [getloadmodules $conffile $needtoget]
@@ -403,7 +409,7 @@ proc apachetest::determinemodules { binname } {
 # Results:
 #	None.
 
-proc apachetest::makeconf { outfile {extra ""} } {
+proc apachetest::makeconf { outfile bridge {extra ""} } {
     variable binname
     variable templatefile
     set CWD [pwd]
@@ -423,9 +429,19 @@ proc apachetest::makeconf { outfile {extra ""} } {
     puts "reading template from $templatefile"
     set fl [open [file join . $templatefile] r]
     set template [read $fl]
-    append template $extra
     close $fl
 
+# configure a specific bridge if -bridge passed as argument
+
+    if {$bridge == "default"} {
+        set bridge_conf "# Default bridge"
+    } else {
+        set bridge_conf "RivetServerConf MpmBridge $bridge"
+    }
+    set extra [string map [list BRIDGE $bridge_conf] $extra]
+
+    append template $extra
+
     puts $template
 
     set out [subst $template]
diff --git a/tests/apachetest/template.conf.2.tcl b/tests/apachetest/template.conf.2.tcl
index 96141ab..09679cf 100644
--- a/tests/apachetest/template.conf.2.tcl
+++ b/tests/apachetest/template.conf.2.tcl
@@ -1,4 +1,3 @@
-# \$Id: \$
 # Minimal config file for testing
 
 # Parsed by makeconf.tcl
diff --git a/tests/runtests.tcl b/tests/runtests.tcl
index 87ff358..da4e069 100755
--- a/tests/runtests.tcl
+++ b/tests/runtests.tcl
@@ -2,7 +2,7 @@
 # the next line restarts using tclsh \
 	exec tclsh "$0" "$@"
 
-# Copyright 2001-2005 The Apache Software Foundation
+# Copyright 2001-2020 The Apache Tcl Team / The Apache Software Foundation
 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,7 +17,8 @@
 # limitations under the License.
 
 set auto_path [linsert $auto_path 0 [file join [file dirname [info script]] apachetest]]
-
+set default_mpm prefork
+set httpd_args   {}
 puts stderr "runtests.tcl is running with auto_path: $auto_path"
 
 proc runtests_usage {} {
@@ -44,13 +45,53 @@ proc get_httpd_version {httpd {bd broken_down_version}} {
     return $m
 }
 
+# -- process_args
+#
+# basically this procedure strips from the argument list
+# the arguments not pertaining to the httpd server
+# Used to provide a way to control the test suite execution
+#
+
+proc process_args {arguments} {
+    global mpm
+    global bridge
+    global httpd_args
+
+    puts "n arguments: [llength $arguments]"
+    while {[llength $arguments]} {
+        set arguments [lassign $arguments a]
+        switch $a {
+            -mpm {
+                set arguments [lassign $arguments mpm]
+            }
+            -bridge {
+                set arguments [lassign $arguments bridge]
+            }
+            default {
+                lappend httpd_args $a
+            }
+        }
+    }
+}
+
 if { [llength $argv] < 1 } {
     runtests_usage
 } else {
-    set httpd_version [get_httpd_version [lindex $argv 0]]
+    set mpm $default_mpm
+    set bridge "default"
+
+    set httpd_bin     [lindex $argv 0]
+    set httpd_version [get_httpd_version $httpd_bin]
+    process_args      [lrange $argv 1 end]
+
+    puts "httpd_bin: $httpd_bin"
+    puts "httpd_args: $httpd_args"
+    puts "httpd_version: $httpd_version"
+    puts "mpm: $mpm, bridge: $bridge"
+
 }
 
-puts stderr "Tests will be run against apache ${httpd_version} version"
+puts stderr "Tests will be run against apache ${::httpd_version} version with the $mpm module and the $bridge bridge"
 
 package require apachetest
 
@@ -64,27 +105,28 @@ if { [encoding system] eq "utf-8" } {
 }
 
 if { [catch {
-    apachetest::getbinname $argv
+    apachetest::getbinname $httpd_bin
 } err ] } {
     puts stderr $err
     runtests_usage
 }
 
-apachetest::need_modules {
-    {mod_mime           mime_module}
-    {mod_negotiation    negotiation_module}
-    {mod_dir            dir_module}
-    {mod_log_config     log_config_module}
-    {mod_authz_core     authz_core_module}
-    {mod_authz_host     authz_host_module}
-    {mod_unixd          unixd_module}
-    {mod_mpm_prefork    mpm_prefork_module}
-}
+apachetest::need_modules [list \
+        {mod_mime                       mime_module} \
+        {mod_negotiation                negotiation_module} \
+        {mod_dir                        dir_module} \
+        {mod_log_config                 log_config_module} \
+        {mod_authz_core                 authz_core_module} \
+        {mod_authz_host                 authz_host_module} \
+        {mod_unixd                      unixd_module} \
+        [list mod_mpm_${mpm}            mpm_${mpm}_module]]
 
-apachetest::makeconf server.conf {
-    LoadModule rivet_module         [file join $CWD .. src/.libs mod_rivet[info sharedlibextension]]
-# User and Group directives removed to ease dependency of test suite from the output of command 'id' (from which
-# the values for these directives were inferred (Bug #53396)
+apachetest::makeconf server.conf $bridge {
+    LoadModule rivet_module [file join $CWD .. src/.libs mod_rivet[info sharedlibextension]]
+
+    # User and Group directives removed to ease dependency of test 
+    # suite from the output of command 'id' (from which
+    # the values for these directives were inferred (Bug #53396)
 
     <IfModule mod_mime.c>
         TypesConfig $CWD/mime.types
@@ -93,6 +135,7 @@ apachetest::makeconf server.conf {
         AddLanguage es .es
         AddType application/x-httpd-rivet .rvt
         AddType application/x-rivet-tcl   .tcl
+        BRIDGE
     </IfModule>
 
     <IfDefine SERVERCONFTEST>
@@ -122,14 +165,14 @@ set env(TCLLIBPATH) [file normalize [file join [file dirname [info script]] rive
 # If 'startserver' is specified on the command line, just start up the
 # server without running tests.
 
-puts "running test with arguments: $argv"
-switch -exact -- [lindex $argv 1] {
+puts "running test with arguments: $httpd_args"
+switch -exact -- [lindex $httpd_args 1] {
     startserver {
 	    apachetest::startserver
     }
     default {
-        set argv [lrange $argv 1 end]
-
+        #set argv [lrange $argv 1 end]
+        set argv $httpd_args
         source [file join . rivet.test]
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tcl.apache.org
For additional commands, e-mail: commits-help@tcl.apache.org


[tcl-rivet] 01/02: add add method form_exists to check for registration of a form

Posted by mx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mxmanghi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tcl-rivet.git

commit 8f9ec41a7601ffdaa831045cbaf392082f200595
Author: Massimo Manghi <mx...@apache.org>
AuthorDate: Sun Sep 27 23:41:18 2020 +0200

    add add method form_exists to check for registration of a form
---
 rivet/packages/formbroker/formbroker.tcl | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/rivet/packages/formbroker/formbroker.tcl b/rivet/packages/formbroker/formbroker.tcl
index 37ff92a..3edca9b 100644
--- a/rivet/packages/formbroker/formbroker.tcl
+++ b/rivet/packages/formbroker/formbroker.tcl
@@ -788,6 +788,12 @@ namespace eval FormBroker {
         return [namespace current]::$form_name 
     }
 
+    proc form_exists {form_cmd} {
+        variable form_definitions
+
+        return [dict exists $form_definitions [namespace tail $form_cmd]]
+    }
+
     proc creategc {varname args} {
         set formv [uplevel [list set $varname [::FormBroker::create {*}$args]]]
         uplevel [list trace add variable $varname unset \
@@ -800,4 +806,4 @@ namespace eval FormBroker {
     namespace ensemble create
 }
 
-package provide formbroker 1.0
+package provide formbroker 1.0.1


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tcl.apache.org
For additional commands, e-mail: commits-help@tcl.apache.org