From f247a845e36286fce15955d99e03753ab58710458172e4adae93a6b21c37cc20 Mon Sep 17 00:00:00 2001 From: Andreas Stieger Date: Sun, 9 Dec 2012 11:43:50 +0000 Subject: [PATCH] Accepting request 144822 from home:AndreasStieger:branches:devel:tools:scm:svn - 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 OBS-URL: https://build.opensuse.org/request/show/144822 OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm:svn/subversion?expand=0&rev=106 --- subversion-tests-httpd-users | 2 + subversion-tests-httpd.conf.tmpl | 33 +++++++++++++ subversion.changes | 7 +++ subversion.spec | 85 ++++++++++++++++++++++++++------ 4 files changed, 113 insertions(+), 14 deletions(-) create mode 100644 subversion-tests-httpd-users create mode 100644 subversion-tests-httpd.conf.tmpl 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