Hi All,
This patch adds a test to svnsync_tests.py, to showcase issue #3870:
(http://subversion.tigris.org/issues/show_bug.cgi?id=3870)
"File descriptor leaks during svnsync"
Regards,
Arwin Arni
Index: subversion/tests/cmdline/svnsync_tests.py
===================================================================
--- subversion/tests/cmdline/svnsync_tests.py (revision 1099373)
+++ subversion/tests/cmdline/svnsync_tests.py (working copy)
@@ -155,7 +155,8 @@
def setup_and_sync(sbox, dump_file_contents, subdir=None,
- bypass_prop_validation=False, source_prop_encoding=None):
+ bypass_prop_validation=False, source_prop_encoding=None,
+ is_src_ra_local=None, is_dest_ra_local=None):
"""Create a repository for SBOX, load it with DUMP_FILE_CONTENTS, then
create a mirror repository and sync it with SBOX. Return the mirror sandbox."""
# Create the empty master repository.
@@ -179,13 +180,20 @@
svntest.actions.enable_revprop_changes(dest_sbox.repo_dir)
repo_url = sbox.repo_url
+ cwd = os.getcwd()
+ if is_src_ra_local:
+ repo_url = "file://" + os.path.join(cwd, sbox.repo_dir)
+
if subdir:
repo_url = repo_url + subdir
- run_init(dest_sbox.repo_url, repo_url, source_prop_encoding)
- run_sync(dest_sbox.repo_url, repo_url,
+ dest_repo_url = dest_sbox.repo_url
+ if is_dest_ra_local:
+ dest_repo_url = "file://" + os.path.join(cwd, dest_sbox.repo_dir)
+ run_init(dest_repo_url, repo_url, source_prop_encoding)
+ run_sync(dest_repo_url, repo_url,
source_prop_encoding=source_prop_encoding)
- run_copy_revprops(dest_sbox.repo_url, repo_url,
+ run_copy_revprops(dest_repo_url, repo_url,
source_prop_encoding=source_prop_encoding)
return dest_sbox
@@ -208,7 +216,9 @@
"Dump files", "DUMP", exp_dump_file_contents, dest_dump)
def run_test(sbox, dump_file_name, subdir=None, exp_dump_file_name=None,
- bypass_prop_validation=False, source_prop_encoding=None):
+ bypass_prop_validation=False, source_prop_encoding=None,
+ is_src_ra_local=None, is_dest_ra_local=None):
+
"""Load a dump file, sync repositories, and compare contents with the
original
or another dump file."""
@@ -222,7 +232,8 @@
'rb').readlines()
dest_sbox = setup_and_sync(sbox, master_dumpfile_contents, subdir,
- bypass_prop_validation, source_prop_encoding)
+ bypass_prop_validation, source_prop_encoding,
+ is_src_ra_local, is_dest_ra_local)
# Compare the dump produced by the mirror repository with either the original
# dump file (used to create the master repository) or another specified dump
@@ -932,6 +943,14 @@
# Does the result look as we expected?
verify_mirror(dest_sbox, expected_contents)
+@Issue(3870)
+@SkipUnless(svntest.main.is_posix_os)
+@XFail()
+def fd_leak_sync_from_serf_to_local(sbox):
+ "FD leak during sync over serf to local"
+ import resource
+ resource.setrlimit(resource.RLIMIT_NOFILE, (128, 128))
+ run_test(sbox, "largemods.dump", is_src_ra_local=None, is_dest_ra_local=True)
########################################################################
# Run the tests
@@ -971,6 +990,7 @@
commit_a_copy_of_root,
descend_into_replace,
delete_revprops,
+ fd_leak_sync_from_serf_to_local,
]
serial_only = True
* subversion/tests/cmdline/svnsync_tests.py
(setup_and_sync): Modified to accept two bools is_src_ra_local and
is_dest_ra_local. If True, the init, sync and
copy_revprops will use the ra_local URLs.
(run_test): Percolate is_src_ra_local and is_dest_ra_local.
Fix call of setup_and_sync.
(fd_leak_sync_from_serf_to_local): New test for Issue 3870.
Patch by: Arwin Arni <arwin{_AT_}collab.net>