You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ko...@apache.org on 2017/07/14 11:03:46 UTC

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

Author: kotkov
Date: Fri Jul 14 11:03:46 2017
New Revision: 1801936

URL: http://svn.apache.org/viewvc?rev=1801936&view=rev
Log:
Allow testing different fsfs compression levels in the test suite:

    win-tests.py --fsfs-compression=N
    make check FSFS_COMPRESSION=N

* Makefile.in
  (check): Handle FSFS_COMPRESSION and pass it to the test suite.

* win-tests.py
  (): Handle the new --fsfs-compression option.
  (_usage_exit): Adjust usage text.

* build/run_tests.py
  (): Update usage comment.
  (_init_py_tests): Propagate the new fsfs_compression_level option.
  (create_parser): Parse --fsfs-compression.

* subversion/tests/cmdline/svntest/main.py
  (parse_options): Check new option value for sanity.
  (_create_parser): Update to handle --fsfs-compression.
  (run_one): Propagate --fsfs-compression option.
  (_post_create_repos): Tweak this function to rewrite the compression
   level in the fsfs.conf file.  Merge this with the the already existing
   logic that configures [memcached-servers].  Adjust the slightly outdated
   docstring for this function.

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

Modified: subversion/trunk/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/trunk/Makefile.in?rev=1801936&r1=1801935&r2=1801936&view=diff
==============================================================================
--- subversion/trunk/Makefile.in (original)
+++ subversion/trunk/Makefile.in Fri Jul 14 11:03:46 2017
@@ -585,6 +585,9 @@ check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $
 	  if test "$(MEMCACHED_SERVER)" != ""; then                          \
 	    flags="--memcached-server $(MEMCACHED_SERVER) $$flags";          \
 	  fi;                                                                \
+	  if test "$(FSFS_COMPRESSION)" != ""; then                          \
+	    flags="--fsfs-compression $(FSFS_COMPRESSION) $$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=1801936&r1=1801935&r2=1801936&view=diff
==============================================================================
--- subversion/trunk/build/run_tests.py (original)
+++ subversion/trunk/build/run_tests.py Fri Jul 14 11:03:46 2017
@@ -33,6 +33,7 @@
             [--httpd-version=<version>] [--httpd-whitelist=<version>]
             [--config-file=<file>] [--ssl-cert=<file>]
             [--exclusive-wc-locks] [--memcached-server=<url:port>]
+            [--fsfs-compression=<n>]
             <abs_srcdir> <abs_builddir>
             <prog ...>
 
@@ -275,6 +276,8 @@ class TestHarness:
       cmdline.append('--exclusive-wc-locks')
     if self.opts.memcached_server is not None:
       cmdline.append('--memcached-server=%s' % self.opts.memcached_server)
+    if self.opts.fsfs_compression_level is not None:
+      cmdline.append('--fsfs-compression=%d' % self.opts.fsfs_compression_level)
 
     self.py_test_cmdline = cmdline
 
@@ -1023,6 +1026,9 @@ def create_parser():
                     help='Use sqlite exclusive locking for working copies')
   parser.add_option('--memcached-server', action='store',
                     help='Use memcached server at specified URL (FSFS only)')
+  parser.add_option('--fsfs-compression', action='store', type='int',
+                    dest="fsfs_compression_level",
+                    help='Set compression level (for fsfs)')
 
   parser.set_defaults(set_log_level=None)
   return parser

Modified: subversion/trunk/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/main.py?rev=1801936&r1=1801935&r2=1801936&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/main.py Fri Jul 14 11:03:46 2017
@@ -1010,10 +1010,11 @@ def file_substitute(path, contents, new_
   fcontent = open(path, 'r').read().replace(contents, new_contents)
   open(path, 'w').write(fcontent)
 
-# For setting up authz and hooks in existing repos
+# For setting up authz, hooks and making other tweaks to created repos
 def _post_create_repos(path, minor_version = None):
-  """Set default access right configurations for svnserve and mod_dav
-  as well as hooks etc. in the SVN repository at PATH."""
+  """Set default access right configurations for svnserve and mod_dav,
+  install hooks and perform other various tweaks according to the test
+  options in the SVN repository at PATH."""
 
   # Require authentication to write to the repos, for ra_svn testing.
   file_write(get_svnserve_conf_file_path(path),
@@ -1036,16 +1037,26 @@ def _post_create_repos(path, minor_versi
 
   if options.fs_type is None or options.fs_type == 'fsfs':
     # fsfs.conf file
-    if options.config_file is not None and \
-       (not minor_version or minor_version >= 6):
-      config_file = open(options.config_file, 'r')
-      fsfsconf = open(get_fsfs_conf_file_path(path), 'w')
-      for line in config_file.readlines():
-        fsfsconf.write(line)
-        if options.memcached_server and line == '[memcached-servers]\n':
-            fsfsconf.write('key = %s\n' % options.memcached_server)
-      config_file.close()
-      fsfsconf.close()
+    if (minor_version is None or minor_version >= 6):
+      confpath = get_fsfs_conf_file_path(path)
+      if options.config_file is not None:
+        shutil.copy(options.config_file, confpath)
+
+      if options.memcached_server is not None or \
+         options.fsfs_compression_level is not None and \
+         os.path.exists(confpath):
+        with open(confpath, 'r') as conffile:
+          newlines = []
+          for line in conffile.readlines():
+            if line.startswith('# compression-level ') and \
+               options.fsfs_compression_level is not None:
+              line = 'compression-level = %d\n' % options.fsfs_compression_level
+            newlines += line
+            if options.memcached_server is not None and \
+               line == '[memcached-servers]\n':
+              newlines += ('key = %s\n' % options.memcached_server)
+        with open(confpath, 'w') as conffile:
+          conffile.writelines(newlines)
 
     # format file
     if options.fsfs_sharding is not None:
@@ -1726,6 +1737,8 @@ class TestSpawningThread(threading.Threa
       args.append('--fsfs-version=' + str(options.fsfs_version))
     if options.dump_load_cross_check:
       args.append('--dump-load-cross-check')
+    if options.fsfs_compression_level:
+      args.append('--fsfs-compression=' + str(options.fsfs_compression_level))
 
     result, stdout_lines, stderr_lines = spawn_process(command, 0, False, None,
                                                        *args)
@@ -2138,6 +2151,9 @@ def _create_parser(usage=None):
                     help='Use sqlite exclusive locking for working copies')
   parser.add_option('--memcached-server', action='store',
                     help='Use memcached server at specified URL (FSFS only)')
+  parser.add_option('--fsfs-compression', action='store', type='int',
+                    dest="fsfs_compression_level",
+                    help='Set compression level (for fsfs)')
 
   # most of the defaults are None, but some are other values, set them here
   parser.set_defaults(
@@ -2187,6 +2203,10 @@ def parse_options(arglist=sys.argv[1:],
   if options.fsfs_packing and not options.fsfs_sharding:
     parser.error("--fsfs-packing requires --fsfs-sharding")
 
+  if options.fsfs_compression_level is not None and\
+     options.fsfs_compression_level not in range(0, 10):
+    parser.error("--fsfs-compression must be between 0 and 9")
+
   if options.server_minor_version not in range(3, SVN_VER_MINOR+1):
     parser.error("test harness only supports server minor versions 3-%d"
                  % SVN_VER_MINOR)

Modified: subversion/trunk/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/win-tests.py?rev=1801936&r1=1801935&r2=1801936&view=diff
==============================================================================
--- subversion/trunk/win-tests.py (original)
+++ subversion/trunk/win-tests.py Fri Jul 14 11:03:46 2017
@@ -113,6 +113,7 @@ def _usage_exit():
   print("  --config-file          : Configuration file for tests")
   print("  --fsfs-sharding        : Specify shard size (for fsfs)")
   print("  --fsfs-packing         : Run 'svnadmin pack' automatically")
+  print("  --fsfs-compression=VAL : Set compression level to VAL (for fsfs)")
   print("  -q, --quiet            : Deprecated; this is the default.")
   print("                           Use --set-log-level instead.")
 
@@ -144,6 +145,7 @@ opts, args = my_getopt(sys.argv[1:], 'hr
                         'log-to-stdout', 'mode-filter=', 'milestone-filter=',
                         'ssl-cert=', 'exclusive-wc-locks', 'memcached-server=',
                         'skip-c-tests', 'dump-load-cross-check', 'memcached-dir=',
+                        'fsfs-compression=',
                         ])
 if len(args) > 1:
   print('Warning: non-option arguments after the first one will be ignored')
@@ -189,6 +191,7 @@ memcached_server = None
 memcached_dir = None
 skip_c_tests = None
 dump_load_cross_check = None
+fsfs_compression_level = None
 
 for opt, val in opts:
   if opt in ('-h', '--help'):
@@ -283,6 +286,8 @@ for opt, val in opts:
   elif opt == '--memcached-dir':
     memcached_dir = val
     run_memcached = 1
+  elif opt == '--fsfs-compression':
+    fsfs_compression_level = int(val)
 
 # Calculate the source and test directory names
 abs_srcdir = os.path.abspath("")
@@ -1107,6 +1112,7 @@ if not test_javahl and not test_swig:
   opts.memcached_server = memcached_server
   opts.skip_c_tests = skip_c_tests
   opts.dump_load_cross_check = dump_load_cross_check
+  opts.fsfs_compression_level = fsfs_compression_level
   th = run_tests.TestHarness(abs_srcdir, abs_builddir,
                              log_file, fail_log_file, opts)
   old_cwd = os.getcwd()