diff --git a/subversion-tests-httpd-users b/subversion-tests-httpd-users
new file mode 100644
index 0000000..040f91f
--- /dev/null
+++ b/subversion-tests-httpd-users
@@ -0,0 +1,2 @@
+jrandom:xCGl35kV9oWCY
+jconstant:xCGl35kV9oWCY
diff --git a/subversion-tests-httpd.conf.tmpl b/subversion-tests-httpd.conf.tmpl
new file mode 100644
index 0000000..804baaf
--- /dev/null
+++ b/subversion-tests-httpd.conf.tmpl
@@ -0,0 +1,33 @@
+Listen 127.0.0.1:REPLACE_PORT
+ServerName tests.example.com
+ErrorLog ./error_log
+PidFile ./httpd.pid
+LoadModule auth_basic_module REPLACE_APACHE_LIBEXECDIR/mod_auth_basic.so
+LoadModule authn_file_module REPLACE_APACHE_LIBEXECDIR/mod_authn_file.so
+LoadModule alias_module REPLACE_APACHE_LIBEXECDIR/mod_alias.so
+LoadModule dav_module REPLACE_APACHE_LIBEXECDIR/mod_dav.so
+LoadModule dav_svn_module REPLACE_BUILDROOTREPLACE_APACHE_LIBEXECDIR/mod_dav_svn.so
+LoadModule authz_svn_module REPLACE_BUILDROOTREPLACE_APACHE_LIBEXECDIR/mod_authz_svn.so
+
+
+ DAV svn
+ SVNParentPath REPLACE_BUILDDIR/subversion/tests/cmdline/svn-test-work/repositories
+ AuthzSVNAccessFile REPLACE_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz
+ AuthType Basic
+ AuthName "Subversion Repository"
+ AuthUserFile REPLACE_BUILDDIR/users
+ Require valid-user
+
+
+
+ DAV svn
+ SVNPath REPLACE_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp/repos
+ AuthzSVNAccessFile REPLACE_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz
+ AuthType Basic
+ AuthName "Subversion Repository"
+ AuthUserFile REPLACE_BUILDDIR/users
+ Require valid-user
+
+
+RedirectMatch permanent ^/svn-test-work/repositories/REDIRECT-PERM-(.*)$ /svn-test-work/repositories/$1
+RedirectMatch ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)$ /svn-test-work/repositories/$1
diff --git a/subversion.changes b/subversion.changes
index 26516a9..5853106 100644
--- a/subversion.changes
+++ b/subversion.changes
@@ -1,3 +1,10 @@
+-------------------------------------------------------------------
+Sat Dec 8 12:11:19 UTC 2012 - andreas.stieger@gmx.de
+
+- for package maintainers, add support to run regression tests
+ over ra_neon and ra_serf (http://) via Apache / mod_dav_svn
+ when built --with=regression_tests
+
-------------------------------------------------------------------
Sat Oct 6 10:44:48 UTC 2012 - andreas.stieger@gmx.de
diff --git a/subversion.spec b/subversion.spec
index 220072d..31b1ea4 100644
--- a/subversion.spec
+++ b/subversion.spec
@@ -154,6 +154,8 @@ BuildRequires: sqlite3-devel >= %{sqlite_version}
%requires_ge libsqlite3-0
%endif # with_intree_sqlite
Source92: %{name}.rpmlintrc
+Source93: subversion-tests-httpd.conf.tmpl
+Source94: subversion-tests-httpd-users
#
Patch11: subversion.libtool-verbose.patch
# build fixes
@@ -626,38 +628,93 @@ ulimit -a
# During "make check", auth-test loads DSOs at runtime and can't find
# them if we don't set up LD_LIBRARY_PATH as below.
export LD_LIBRARY_PATH="$PWD/subversion/libsvn_auth_kwallet/.libs:$PWD/subversion/libsvn_auth_gnome_keyring/.libs:$LD_LIBRARY_PATH"
-# run test over ra_local (file://)
CHECK_FS_TYPE=fsfs
+
+# run tests over ra_local (file://)
%__make check LOG_TO_STDOUT=true CLEANUP=true FS_TYPE="$CHECK_FS_TYPE"
SVNSERVE_PIDFILE="$PWD/svnserve.pid"
+HTTPD_PIDFILE="$PWD/httpd.pid"
# hook up cleanup routine
function on_exit {
if [ -e "$SVNSERVE_PIDFILE" ]; then
pid=`cat "$SVNSERVE_PIDFILE" 2>/dev/null || :`
test -n "$pid" && kill -9 "$pid" || :
fi
+ if [ -e "$HTTPD_PIDFILE" ]; then
+ pid=`cat "$HTTPD_PIDFILE" 2>/dev/null || :`
+ test -n "$pid" && kill -9 "$pid" || :
+ fi
}
trap on_exit EXIT
-# find free port
-free_port=""
-for p in `/usr/sbin/ss -nat|tail +2|awk '{ split($4, a, ":"); if (a[2] > 1024) { print a[2]; }}'`; do used_port[$p]="$p"; done
-for p in `seq 1025 65535`; do
- if [ -z "${used_port[$p]}" ]; then
- free_port="$p"
- break
+
+# find next free port
+function find_next_free_port {
+ if [ -z "$free_port" ]; then # on first invocation
+ local start_port=1025 # start with user port range
+ else # on subsequent invocations
+ local start_port=$free_port; # look for ports above the last
+ let start_port++; # as the daemon might still use it
fi
-done
-if [ -z "$free_port" ]; then
- echo "ERROR: failed to find a free port" >&2
- echo "Used TCP ports: ${used_port[*]}" >&2
- exit 1
-fi
+ free_port=""
+ # in the OBS build VMs, the call to ss actually fails, resulting in all port to be returned as unused,
+ # subsequent calls to the function will use a sequence from 1025, which are always available in VM.
+ # For local builds this takes into account locally used ports. Either way works to get a usable port.
+ for p in `/usr/sbin/ss -nat|tail +2|awk '{ split($4, a, ":"); if (a[2] > 1024) { print a[2]; }}'`; do used_port[$p]="$p"; done
+ for p in `seq $start_port 65535`; do
+ if [ -z "${used_port[$p]}" ]; then
+ free_port="$p"
+ break
+ fi
+ done
+ if [ -z "$free_port" ]; then
+ echo "ERROR: failed to find a free port" >&2
+ echo "Used TCP ports: ${used_port[*]}" >&2
+ exit 1
+ fi
+}
+find_next_free_port
+
# run tests over ra_svn (svn://)
"$PWD/subversion/svnserve/svnserve" --listen-host 127.0.0.1 --listen-port "$free_port" --pid-file "$SVNSERVE_PIDFILE" -d -r "$PWD/subversion/tests/cmdline"
%__make check LOG_TO_STDOUT=true CLEANUP=true FS_TYPE="$CHECK_FS_TYPE" BASE_URL="svn://127.0.0.1:$free_port" || cat $RPM_SOURCE_DIR/%name*/tests.log
kill -9 `cat "$SVNSERVE_PIDFILE" 2>/dev/null`
%__rm "$SVNSERVE_PIDFILE"
+
+# run tests over ra_neon (http://)
+%if %{with neon}
+find_next_free_port
+# create apache configuration
+%__cp "%{SOURCE94}" users
+APACHE_LIBEXECDIR="%{apache_libexecdir}"
+< "%{SOURCE93}" \
+ sed "s/REPLACE_PORT/$free_port/g" | \
+ sed "s/REPLACE_BUILDROOT/${RPM_BUILD_ROOT//\//\\/}/g" | \
+ sed "s/REPLACE_BUILDDIR/${PWD//\//\\/}/g" | \
+ sed "s/REPLACE_APACHE_LIBEXECDIR/${APACHE_LIBEXECDIR//\//\\/}/g" > httpd.conf
+LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" /usr/sbin/httpd2 -d "$PWD" -f httpd.conf
+%__make check LOG_TO_STDOUT=true CLEANUP=true FS_TYPE="$CHECK_FS_TYPE" BASE_URL=http://127.0.0.1:$free_port HTTP_LIBRARY=neon || cat $RPM_SOURCE_DIR/%name*/tests.log
+kill -9 `cat "$HTTPD_PIDFILE" 2>/dev/null`
+%__rm "$HTTPD_PIDFILE"
+%endif # neon
+
+# run tests over ra_serf (http://)
+%if %{with serf}
+find_next_free_port
+# create apache configuration
+%__cp "%{SOURCE94}" users
+APACHE_LIBEXECDIR="%{apache_libexecdir}"
+< "%{SOURCE93}" \
+ sed "s/REPLACE_PORT/$free_port/g" | \
+ sed "s/REPLACE_BUILDROOT/${RPM_BUILD_ROOT//\//\\/}/g" | \
+ sed "s/REPLACE_BUILDDIR/${PWD//\//\\/}/g" | \
+ sed "s/REPLACE_APACHE_LIBEXECDIR/${APACHE_LIBEXECDIR//\//\\/}/g" > httpd.conf
+LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" /usr/sbin/httpd2 -d "$PWD" -f httpd.conf
+%__make check LOG_TO_STDOUT=true CLEANUP=true FS_TYPE="$CHECK_FS_TYPE" BASE_URL=http://127.0.0.1:$free_port HTTP_LIBRARY=serf || cat $RPM_SOURCE_DIR/%name*/tests.log
+kill -9 `cat "$HTTPD_PIDFILE" 2>/dev/null`
+%__rm "$HTTPD_PIDFILE"
+%endif # serf
+
%if %with_java
%__make check-javahl
%endif # with_java