You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2012/11/16 05:25:04 UTC

svn commit: r1410195 - in /subversion/trunk: Makefile.in build/run_tests.py subversion/tests/cmdline/svntest/main.py

Author: breser
Date: Fri Nov 16 04:25:04 2012
New Revision: 1410195

URL: http://svn.apache.org/viewvc?rev=1410195&view=rev
Log:
Make it easy to run the test suite through an http proxy.

* Makefile.in
  (check): Convert HTTP_PROXY to --http-proxy arg on run_tests.py

* build/run_tests.py
  (usage): Add --http-proxy as a possible option.
  (TestHarness.__init__): Add http_proxy arg / attribute on class.
  (TestHarness._run_py_test): Pass in http_proxy attribute.
  (main): Support parsing --http-proxy, pass value to TextHarness constructor.

* subversion/tests/cmdline/svntest/main.py
  (create_config_dir): Accept a http_proxy arg, use urlparse to split it as
    though it was netloc of a URL.  This allows ipv6 addresses via the 
    [ipv6]:port syntax.  Add the split argument as http-proxy-host and
    http-proxy-port in the servers config file.
  (TestSpawningThread.run_one): Pass the --http-proxy arg.
  (execute_tests): Pass http_proxy to create_config_dir.
  

Modified:
    subversion/trunk/Makefile.in
    subversion/trunk/build/run_tests.py
    subversion/trunk/subversion/tests/cmdline/svntest/main.py

Modified: subversion/trunk/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/trunk/Makefile.in?rev=1410195&r1=1410194&r2=1410195&view=diff
==============================================================================
--- subversion/trunk/Makefile.in (original)
+++ subversion/trunk/Makefile.in Fri Nov 16 04:25:04 2012
@@ -517,6 +517,9 @@ check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $
 	  if test "$(SSL_CERT)" != ""; then                                  \
 	    flags="--ssl-cert $(SSL_CERT) $$flags";                          \
 	  fi;                                                                \
+	  if test "$(HTTP_PROXY)" != ""; then                                \
+	    flags="--http-proxy $(HTTP_PROXY) $$flags";                      \
+	  fi;                                                                \
 	  LD_LIBRARY_PATH='$(auth_plugin_dirs):$(LD_LIBRARY_PATH)'           \
 	  $(PYTHON) $(top_srcdir)/build/run_tests.py                         \
 	            --config-file $(top_srcdir)/subversion/tests/tests.conf  \

Modified: subversion/trunk/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/build/run_tests.py?rev=1410195&r1=1410194&r2=1410195&view=diff
==============================================================================
--- subversion/trunk/build/run_tests.py (original)
+++ subversion/trunk/build/run_tests.py Fri Nov 16 04:25:04 2012
@@ -28,7 +28,7 @@
             [--url=<base-url>] [--http-library=<http-library>] [--enable-sasl]
             [--fs-type=<fs-type>] [--fsfs-packing] [--fsfs-sharding=<n>]
             [--list] [--milestone-filter=<regex>] [--mode-filter=<type>]
-            [--server-minor-version=<version>]
+            [--server-minor-version=<version>] [--http-proxy=<host>:<port>]
             [--config-file=<file>] [--ssl-cert=<file>]
             <abs_srcdir> <abs_builddir>
             <prog ...>
@@ -124,7 +124,8 @@ class TestHarness:
                cleanup=None, enable_sasl=None, parallel=None, config_file=None,
                fsfs_sharding=None, fsfs_packing=None,
                list_tests=None, svn_bin=None, mode_filter=None,
-               milestone_filter=None, set_log_level=None, ssl_cert=None):
+               milestone_filter=None, set_log_level=None, ssl_cert=None,
+               http_proxy=None):
     '''Construct a TestHarness instance.
 
     ABS_SRCDIR and ABS_BUILDDIR are the source and build directories.
@@ -176,6 +177,7 @@ class TestHarness:
     self.mode_filter = mode_filter
     self.log = None
     self.ssl_cert = ssl_cert
+    self.http_proxy = http_proxy
     if not sys.stdout.isatty() or sys.platform == 'win32':
       TextColors.disable()
 
@@ -477,6 +479,8 @@ class TestHarness:
       svntest.main.options.mode_filter = self.mode_filter
     if self.ssl_cert is not None:
       svntest.main.options.ssl_cert = self.ssl_cert
+    if self.http_proxy is not None:
+      svntest.main.options.http_proxy = self.http_proxy
 
     svntest.main.options.srcdir = self.srcdir
 
@@ -640,7 +644,8 @@ def main():
                             'fsfs-packing', 'fsfs-sharding=',
                             'enable-sasl', 'parallel', 'config-file=',
                             'log-to-stdout', 'list', 'milestone-filter=',
-                            'mode-filter=', 'set-log-level=', 'ssl-cert='])
+                            'mode-filter=', 'set-log-level=', 'ssl-cert=',
+                            'http-proxy='])
   except getopt.GetoptError:
     args = []
 
@@ -651,9 +656,9 @@ def main():
   base_url, fs_type, verbose, cleanup, enable_sasl, http_library, \
     server_minor_version, fsfs_sharding, fsfs_packing, parallel, \
     config_file, log_to_stdout, list_tests, mode_filter, milestone_filter, \
-    set_log_level, ssl_cert = \
+    set_log_level, ssl_cert, http_proxy = \
             None, None, None, None, None, None, None, None, None, None, None, \
-            None, None, None, None, None, None
+            None, None, None, None, None, None, None
   for opt, val in opts:
     if opt in ['-u', '--url']:
       base_url = val
@@ -689,6 +694,8 @@ def main():
       set_log_level = val
     elif opt in ['--ssl-cert']:
       ssl_cert = val
+    elif opt in ['--http-proxy']:
+      http_proxy = val
     else:
       raise getopt.GetoptError
 
@@ -704,7 +711,8 @@ def main():
                    verbose, cleanup, enable_sasl, parallel, config_file,
                    fsfs_sharding, fsfs_packing, list_tests,
                    mode_filter=mode_filter, milestone_filter=milestone_filter,
-                   set_log_level=set_log_level, ssl_cert=ssl_cert)
+                   set_log_level=set_log_level, ssl_cert=ssl_cert,
+                   http_proxy=http_proxy)
 
   failed = th.run(args[2:])
   if failed:

Modified: subversion/trunk/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/main.py?rev=1410195&r1=1410194&r2=1410195&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/main.py Fri Nov 16 04:25:04 2012
@@ -542,7 +542,7 @@ def run_command_stdin(command, error_exp
          stderr_lines
 
 def create_config_dir(cfgdir, config_contents=None, server_contents=None,
-                      ssl_cert=None, ssl_url=None):
+                      ssl_cert=None, ssl_url=None, http_proxy=None):
   "Create config directories and files"
 
   # config file names
@@ -569,13 +569,19 @@ interactive-conflicts = false
     http_library_str = ""
     if options.http_library:
       http_library_str = "http-library=%s" % (options.http_library)
+    http_proxy_str = ""
+    if options.http_proxy:
+      http_proxy_parsed = urlparse("//" + options.http_proxy)
+      http_proxy_str = "http-proxy-host=%s\n" % (http_proxy_parsed.hostname) + \
+                       "http-proxy-port=%d" % (http_proxy_parsed.port or 80)
     server_contents = """
 #
 [global]
 %s
+%s
 store-plaintext-passwords=yes
 store-passwords=yes
-""" % (http_library_str)
+""" % (http_library_str, http_proxy_str)
 
   file_write(cfgfile_cfg, config_contents)
   file_write(cfgfile_srv, server_contents)
@@ -1283,6 +1289,8 @@ class TestSpawningThread(threading.Threa
       args.append('--milestone-filter=' + options.milestone_filter)
     if options.ssl_cert:
       args.append('--ssl-cert=' + options.ssl_cert)
+    if options.http_proxy:
+      args.append('--http-proxy=' + options.http_proxy)
 
     result, stdout_lines, stderr_lines = spawn_process(command, 0, 0, None,
                                                        *args)
@@ -1949,7 +1957,8 @@ def execute_tests(test_list, serial_only
     # Build out the default configuration directory
     create_config_dir(default_config_dir,
                       ssl_cert=options.ssl_cert,
-                      ssl_url=options.test_area_url)
+                      ssl_url=options.test_area_url,
+                      http_proxy=options.http_proxy)
 
     # Setup the pristine repository
     svntest.actions.setup_pristine_greek_repository()