On 2018/01/15 23:58:56 Philip Martin wrote:
> Julian Foad <ju...@apache.org> writes:
>
> > Julian Foad wrote:
> >> Another possible approach is to look for compatibility breakage by
> >> running the 1.9 client and test suite against the 1.10 libraries,
> >> and indeed different client/server version combinations.
>
> I did this recently.
>
> 1.9 against a 1.10 server
> =========================
>
> First I ran the 1.9 testsuite against 1.10 servers
> over http:// and svn://.  For http:// there were two FAILs:
>
>   FAIL:  lock_tests.py 34: unlock file locked by other user
>   FAIL:  lock_tests.py 53: unlock a lock with timeout
>
> In both cases the problem is the testsuite getting different error from
> that expected:
>
>   W: Unexpected output
>   W: EXPECTED STDERR (regexp):
>   W: | svn: warning: W160039: .*[Uu]nlock of .*403 Forbidden.*
>   W: ACTUAL STDERR:
>   W: | svn: warning: apr_err=SVN_ERR_FS_PATH_ALREADY_LOCKED
>   W: | svn: warning: W160035: Path 'pi' already locked (423 Locked)
>   W: | ../src-1.9/subversion/svn/unlock-cmd.c:100:
(apr_err=SVN_ERR_ILLEGAL_TARGET)
>   W: | svn: E200009: One or more locks could not be released
>
> It turns out that both 1.9 and 1.10 servers return the same underlying
> FS error: the W160039 expected by the testsuite.  The difference is that
> the 1.9 server wraps it in a 403 while the 1.10 server wraps it in a
> 423.  The 1.9 client does not have r1716450 and that causes the 1.9
> client to convert the underlying FS error to W160035.
>
> For svn:// there were three FAILs:
>
>   FAIL:  ra-test 1: test svn_ra_get_location_segments
>   FAIL:  ra-test 4: lock multiple paths
>   FAIL:  ra-test 5: test ra_get_dir2
>
> In all cases these are caused by the server returning
> SVN_ERR_FS_INCORRECT_EDITOR_COMPLETION due to a commit editor drive
> failing to close directories, a testsuite bug fixed in 1.10 by r1665532.
>
> 1.10 against a 1.9 server
> =========================
>
> I also ran the 1.10 testsuite against 1.9 servers over http:// and
> svn://.  In order to run the svn:// tests I had to disable part of
> ra-test 10 as the 1.9 server doesn't have r1723865 and the 1.10
> testsuite would block.
>
> There were more failures than running 1.9 against 1.10 but a number were
> functionaltity missing from 1.9 which is to be expected.  Both http://
> and svn:// failed these tests:
>
>   FAIL:  ra-test 8: delete revision newer than youngest
>   FAIL:  ra-test 9: check how ra functions handle bad revisions
>   FAIL:  basic_tests.py 67: null 'update' updates last changed rev
>   FAIL:  basic_tests.py 68: null 'property update' updates last changed
rev
>   FAIL:  svnadmin_tests.py 48: upgrade --compatible-version=1.3
>   FAIL:  svnadmin_tests.py 56: svnadmin dump with no-op property change
>
> The first ra-test FAIL is a faulty commit that is only detected by 1.10.
> The second ra-test FAIL is test for r1665308, a revision range check
> that is not in 1.9.
>
> The basic_tests FAILs are issue 4700 which is not fixed in 1.9.
>
> The first svnadmin_tests FAIL is due to the test using a 1.10 format
> repository.  The second svnadmin_tests FAIL is due to issue 4623 which
> is not fixed in 1.9.
>
> The http:// tests also failed:
>
>   FAIL:  lock_tests.py 34: unlock file locked by other user
>   FAIL:  mod_dav_svn_tests.py 1: verify 'Cache-Control' headers on
responses
>
> The lock FAIL is the same lock change that affects 1.9 but in
> reverse, the 1.9 server sends 403 and the 1.10 testsuite expects 423.
> The mod_dav_svn_tests FAIL is a new 1.10 feature not provided by the
> 1.9 server.
>
> Summary
> =======
>
> Assuming the 1.10 behaviour of sending the 423 lock error is correct
> then we cannot avoid the behaviour change for the 1.9 client and the
> 1.10 release notes should document it.  In the longer term I suppose we
> could backport a client side fix to 1.9.
>
> 1.9 with 1.10 libraries
> =======================
>
> I built 1.9 and 1.10 with --disable-full-version-match and then I copied
> the 1.10 shared libraries, i.e. libsvn_*-1.so.0.0.0, into the 1.9 build
> overwriting the 1.9 libraries.  Running the 1.9 regression tests allows
> testing of some of the ompatibility wrappers since the 1.9 binaries will
> still call the top level 1.9 functions.  This does not test all the
> wrappers, only those invoked directly by the binaries.
>
> There are 42 FAILs running the tests over ra_local, and fs-fs-pack-test
> appears to hang and needs to be killed.  I have not yet investigated any
> of these failures:
>
> FAIL:  cache-test 4: basic membuffer svn_cache test
> FAIL:  cache-test: Unknown test failure; see tests.log.
> FAIL:  fs-fs-pack-test 18: file with 0 expanded-length, issue #4554
> FAIL:  fs-fs-pack-test: Unknown test failure; see tests.log.
> FAIL:  fs-fs-private-test 3: load the P2L index
> FAIL:  fs-fs-private-test 1: get statistics on a FSFS filesystem
> FAIL:  fs-test 42: test svn_fs__compatible_version
> FAIL:  fs-test 66: test rep-sharing on content rather than SHA1
> FAIL:  op-depth-test 69: move/delete file externals (issue 4293)
> FAIL:  parse-diff-test 9: test parsing unidiffs lacking trailing eol
> FAIL:  ra-test: Unknown test failure; see tests.log.
> FAIL:  repos-test 7: test authz access control
> FAIL:  repos-test 10: test authz with global groups
> FAIL:  repos-test: Unknown test failure; see tests.log.
> FAIL:  utf-test 7: test svn_utf__fuzzy_escape
> FAIL:  copy_tests.py 4: svn cp URL URL cannot overwrite destination
> FAIL:  diff_tests.py 51: create a diff in git unidiff format for wc-wc
> FAIL:  diff_tests.py 52: create a diff in git unidiff format for url-wc
> FAIL:  diff_tests.py 53: create a diff in git unidiff format for url-url
> FAIL:  diff_tests.py 56: create a diff in git format for empty files
> FAIL:  diff_tests.py 57: create a diff in git format showing prop changes
> FAIL:  diff_tests.py 68: create a diff in git unidff format for wc dir mv
> FAIL:  externals_tests.py 44: move with file externals
> FAIL:  externals_tests.py 48: file externals unversioned obstruction
> FAIL:  patch_tests.py 13: patch target with no svn:eol-style
> FAIL:  patch_tests.py 15: patch target with uncommitted svn:eol-style
> FAIL:  patch_tests.py 20: apply the same patch twice
> FAIL:  patch_tests.py 21: patch with dir properties
> FAIL:  patch_tests.py 27: revert a patch by reverse patching
> FAIL:  patch_tests.py 32: patch file lacking trailing eol
> FAIL:  patch_tests.py 44: apply a patch to an empty file
> FAIL:  patch_tests.py 45: svn diff created patch should apply without fuz
> FAIL:  patch_tests.py 53: patch delete modified
> FAIL:  patch_tests.py 54: find closest hunk
> FAIL:  stat_tests.py 27: run 'status -u' with locally deleted directories
> FAIL:  svnadmin_tests.py 24: svnadmin verify with non-UTF-8 paths
> FAIL:  svnauthz_tests.py 8: test 'svnauthz accessof --is' on files
> FAIL:  svnauthz_tests.py 9: test 'svnauthz accessof --is' on files and
urls
> FAIL:  svnfsfs_tests.py 1: load-index in a packed repo
> FAIL:  svnfsfs_tests.py 2: stats on empty repo shall not crash
> FAIL:  upgrade_tests.py 15: upgrade tree conflict data (f20->f21)
> FAIL:  upgrade_tests.py 21: upgrade from format 28: rename pristines
>
> --
> Philip
>

Reply via email to