You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2011/02/02 14:04:59 UTC
svn commit: r1066452 [11/11] - in /subversion/branches/performance: ./
build/ build/ac-macros/ build/generator/ contrib/hook-scripts/ notes/
notes/api-errata/1.7/
subversion/bindings/javahl/tests/org/apache/subversion/javahl/
subversion/include/ subver...
Modified: subversion/branches/performance/subversion/tests/svn_test_main.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/svn_test_main.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/svn_test_main.c (original)
+++ subversion/branches/performance/subversion/tests/svn_test_main.c Wed Feb 2 13:04:51 2011
@@ -68,6 +68,10 @@ static svn_boolean_t cleanup_mode = FALS
/* Test option: Allow segfaults */
static svn_boolean_t allow_segfaults = FALSE;
+/* Test option: Limit testing to a given mode (i.e. XFail, Skip,
+ Pass, All). */
+enum svn_test_mode_t mode_filter = svn_test_all;
+
/* Option parsing enums and structures */
enum {
cleanup_opt = SVN_OPT_FIRST_LONGOPT_ID,
@@ -78,7 +82,9 @@ enum {
quiet_opt,
config_opt,
server_minor_version_opt,
- allow_segfault_opt
+ allow_segfault_opt,
+ srcdir_opt,
+ mode_filter_opt
};
static const apr_getopt_option_t cl_options[] =
@@ -91,6 +97,9 @@ static const apr_getopt_option_t cl_opti
N_("specify a filesystem backend type ARG")},
{"list", list_opt, 0,
N_("lists all the tests with their short description")},
+ {"mode-filter", mode_filter_opt, 1,
+ N_("only run/list tests with expected mode ARG = PASS, "
+ "XFAIL, SKIP, or ALL (default)\n")},
{"verbose", verbose_opt, 0,
N_("print extra information")},
{"server-minor-version", server_minor_version_opt, 1,
@@ -102,6 +111,8 @@ static const apr_getopt_option_t cl_opti
N_("print only unexpected results")},
{"allow-segfaults", allow_segfault_opt, 0,
N_("don't trap seg faults (useful for debugging)")},
+ {"srcdir", srcdir_opt, 1,
+ N_("source directory")},
{0, 0, 0, 0}
};
@@ -196,12 +207,15 @@ crash_handler(int signum)
/* Execute a test number TEST_NUM. Pretty-print test name and dots
- according to our test-suite spec, and return the result code. */
+ according to our test-suite spec, and return the result code.
+ If HEADER_MSG and *HEADER_MSG are not NULL, print *HEADER_MSG prior
+ to pretty-printing the test information, then set *HEADER_MSG to NULL. */
static svn_boolean_t
do_test_num(const char *progname,
int test_num,
svn_boolean_t msg_only,
svn_test_opts_t *opts,
+ const char **header_msg,
apr_pool_t *pool)
{
svn_boolean_t skip, xfail, wimp;
@@ -210,12 +224,15 @@ do_test_num(const char *progname,
const char *msg = NULL; /* the message this individual test prints out */
const struct svn_test_descriptor_t *desc;
const int array_size = get_array_size();
+ svn_boolean_t run_this_test; /* This test's mode matches DESC->MODE. */
/* Check our array bounds! */
if (test_num < 0)
test_num += array_size + 1;
if ((test_num > array_size) || (test_num <= 0))
{
+ if (header_msg && *header_msg)
+ printf("%s", *header_msg);
printf("FAIL: %s: THERE IS NO TEST NUMBER %2d\n", progname, test_num);
skip_cleanup = TRUE;
return TRUE; /* BAIL, this test number doesn't exist. */
@@ -226,6 +243,13 @@ do_test_num(const char *progname,
xfail = desc->mode == svn_test_xfail;
wimp = xfail && desc->wip;
msg = desc->msg;
+ run_this_test = mode_filter == svn_test_all || mode_filter == desc->mode;
+
+ if (run_this_test && header_msg && *header_msg)
+ {
+ printf("%s", *header_msg);
+ *header_msg = NULL;
+ }
if (!allow_segfaults)
{
@@ -242,7 +266,7 @@ do_test_num(const char *progname,
if (setjmp(jump_buffer) == 0)
{
/* Do test */
- if (msg_only || skip)
+ if (msg_only || skip || !run_this_test)
; /* pass */
else if (desc->func2)
err = (*desc->func2)(pool);
@@ -279,15 +303,16 @@ do_test_num(const char *progname,
if (msg_only)
{
- printf(" %2d %-5s %s%s%s%s\n",
- test_num,
- (xfail ? "XFAIL" : (skip ? "SKIP" : "")),
- msg ? msg : "(test did not provide name)",
- (wimp && verbose_mode) ? " [[" : "",
- (wimp && verbose_mode) ? desc->wip : "",
- (wimp && verbose_mode) ? "]]" : "");
+ if (run_this_test)
+ printf(" %3d %-5s %s%s%s%s\n",
+ test_num,
+ (xfail ? "XFAIL" : (skip ? "SKIP" : "")),
+ msg ? msg : "(test did not provide name)",
+ (wimp && verbose_mode) ? " [[" : "",
+ (wimp && verbose_mode) ? desc->wip : "",
+ (wimp && verbose_mode) ? "]]" : "");
}
- else if ((! quiet_mode) || test_failed)
+ else if (run_this_test && ((! quiet_mode) || test_failed))
{
printf("%s %s %d: %s%s%s%s\n",
(err
@@ -404,6 +429,22 @@ main(int argc, const char *argv[])
case list_opt:
list_mode = TRUE;
break;
+ case mode_filter_opt:
+ if (svn_cstring_casecmp(opt_arg, "PASS") == 0)
+ mode_filter = svn_test_pass;
+ else if (svn_cstring_casecmp(opt_arg, "XFAIL") == 0)
+ mode_filter = svn_test_xfail;
+ else if (svn_cstring_casecmp(opt_arg, "SKIP") == 0)
+ mode_filter = svn_test_skip;
+ else if (svn_cstring_casecmp(opt_arg, "ALL") == 0)
+ mode_filter = svn_test_all;
+ else
+ {
+ fprintf(stderr, "FAIL: Invalid --mode-filter option. Try ");
+ fprintf(stderr, " PASS, XFAIL, SKIP or ALL.\n");
+ exit(1);
+ }
+ break;
case verbose_opt:
verbose_mode = TRUE;
break;
@@ -453,15 +494,16 @@ main(int argc, const char *argv[])
{
if (! strcmp(argv[1], "list") || list_mode)
{
+ const char *header_msg;
ran_a_test = TRUE;
/* run all tests with MSG_ONLY set to TRUE */
-
- printf("Test # Mode Test Description\n"
- "------ ----- ----------------\n");
+ header_msg = "Test # Mode Test Description\n"
+ "------ ----- ----------------\n";
for (i = 1; i <= array_size; i++)
{
- if (do_test_num(prog_name, i, TRUE, &opts, test_pool))
+ if (do_test_num(prog_name, i, TRUE, &opts, &header_msg,
+ test_pool))
got_error = TRUE;
/* Clear the per-function pool */
@@ -481,7 +523,8 @@ main(int argc, const char *argv[])
continue;
ran_a_test = TRUE;
- if (do_test_num(prog_name, test_num, FALSE, &opts, test_pool))
+ if (do_test_num(prog_name, test_num, FALSE, &opts, NULL,
+ test_pool))
got_error = TRUE;
/* Clear the per-function pool */
@@ -497,7 +540,7 @@ main(int argc, const char *argv[])
/* just run all tests */
for (i = 1; i <= array_size; i++)
{
- if (do_test_num(prog_name, i, FALSE, &opts, test_pool))
+ if (do_test_num(prog_name, i, FALSE, &opts, NULL, test_pool))
got_error = TRUE;
/* Clear the per-function pool */
Modified: subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svnbuild.sh?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svnbuild.sh (original)
+++ subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svnbuild.sh Wed Feb 2 13:04:51 2011
@@ -19,6 +19,7 @@
#
#
+set -e
set -x
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
Modified: subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svncheck-bindings.sh
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svncheck-bindings.sh?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svncheck-bindings.sh (original)
+++ subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svncheck-bindings.sh Wed Feb 2 13:04:51 2011
@@ -19,6 +19,7 @@
#
#
+set -e
set -x
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
Modified: subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svncheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svncheck.sh?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svncheck.sh (original)
+++ subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svncheck.sh Wed Feb 2 13:04:51 2011
@@ -19,6 +19,7 @@
#
#
+set -e
set -x
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
Modified: subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svnclean.sh
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svnclean.sh?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svnclean.sh (original)
+++ subversion/branches/performance/tools/buildbot/slaves/svn-openbsd-i386/svnclean.sh Wed Feb 2 13:04:51 2011
@@ -19,6 +19,7 @@
#
#
+set -e
set -x
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
@@ -26,5 +27,6 @@ branch="$(basename $(svn info . | grep ^
for i in 3 4 5 6 7; do
(test -h ../svn-1.${i}.x || ln -s build ../svn-1.${i}.x)
done
+svn update ../../unix-build
(test -h ../GNUmakefile || ln -s ../unix-build/Makefile.svn ../GNUmakefile)
(cd .. && gmake BRANCH="$branch" reset clean)
Modified: subversion/branches/performance/tools/client-side/bash_completion
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/client-side/bash_completion?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/tools/client-side/bash_completion (original)
+++ subversion/branches/performance/tools/client-side/bash_completion Wed Feb 2 13:04:51 2011
@@ -166,8 +166,8 @@ _svn()
cmds="$cmds commit ci copy cp delete remove rm diff export help import"
cmds="$cmds info list ls lock log merge mergeinfo mkdir move mv rename"
cmds="$cmds patch propdel pdel propedit pedit propget pget proplist"
- cmds="$cmds plist propset pset resolve resolved revert status switch"
- cmds="$cmds unlock update"
+ cmds="$cmds plist propset pset relocate resolve resolved revert status"
+ cmds="$cmds switch unlock update"
# help options have a strange command status...
local helpOpts='--help -h'
@@ -910,6 +910,9 @@ _svn()
cmdOpts="$cmdOpts --revprop $rOpts"
[[ $val ]] || cmdOpts="$cmdOpts -F --file"
;;
+ relocate)
+ cmdOpts="--ignore-externals"
+ ;;
resolve)
cmdOpts="--targets -R --recursive $qOpts $pOpts --accept \
--depth"
Modified: subversion/branches/performance/tools/client-side/svnmucc/svnmucc.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/client-side/svnmucc/svnmucc.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/tools/client-side/svnmucc/svnmucc.c (original)
+++ subversion/branches/performance/tools/client-side/svnmucc/svnmucc.c Wed Feb 2 13:04:51 2011
@@ -365,7 +365,7 @@ subtract_anchor(const char *anchor, cons
if (! strcmp(url, anchor))
return "";
else
- return svn_path_uri_decode(svn_path_is_child(anchor, url, pool), pool);
+ return svn_uri_is_child(anchor, url, pool);
}
/* Add PATH to the operations tree rooted at OPERATION, creating any
Modified: subversion/branches/performance/tools/dev/unix-build/Makefile.svn
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/dev/unix-build/Makefile.svn?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/branches/performance/tools/dev/unix-build/Makefile.svn Wed Feb 2 13:04:51 2011
@@ -2,6 +2,11 @@
#
# WARNING: This may or may not work on your system. This Makefile is
# an example, rather than a ready-made universal solution.
+#
+# Note to Subversion committers:
+# This Makefile is used by the svn-openbsd-i386 buildbot
+# (http://ci.apache.org/builders/svn-openbsd-i386).
+# Please check the bot's health after making changes to this file.
ENABLE_PYTHON_BINDINGS ?= yes
ENABLE_RUBY_BINDINGS ?= yes
@@ -1050,7 +1055,8 @@ SVNSERVE_START_CMD = $(SVN_PREFIX)/bin/s
--listen-host 127.0.0.1 \
--pid-file $(PWD)/svnserve-$(WC).pid \
-d -r $(svn_builddir)/subversion/tests/cmdline
-SVNSERVE_STOP_CMD = kill `cat $(PWD)/svnserve-$(WC).pid`
+SVNSERVE_STOP_CMD = kill `cat $(PWD)/svnserve-$(WC).pid`; sleep 3; \
+ rm -f $(PWD)/svnserve-$(WC).pid
start-httpd: httpd-conf
$(HTTPD_START_CMD)
@@ -1063,6 +1069,10 @@ stop-httpd:
$(HTTPD_STOP_CMD)
start-svnserve: $(SVN_OBJDIR)/.compiled
+ -ls $(PWD)/svnserve-*.pid | while read pidfile; do \
+ kill `cat "$$pidfile"`; sleep 3; \
+ rm -f $$pidfile; \
+ done
$(SVNSERVE_START_CMD)
stop-svnserve:
Modified: subversion/branches/performance/tools/po/l10n-report.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/po/l10n-report.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/tools/po/l10n-report.py (original)
+++ subversion/branches/performance/tools/po/l10n-report.py Wed Feb 2 13:04:51 2011
@@ -40,7 +40,9 @@ import os
import re
import subprocess
+FROM_ADDRESS = "Subversion Translation Status <no...@subversion.apache.org>"
LIST_ADDRESS = "dev@subversion.apache.org"
+SUBJECT_TEMPLATE = "[l10n] Translation status report for %s r%s"
def _rev():
dollar = "$Revision$"
@@ -78,6 +80,8 @@ class l10nReport:
return stdout, stderr
def match(self, pattern, string):
+ if isinstance(pattern, basestring):
+ pattern = re.compile(pattern)
match = re.compile(pattern).search(string)
if match and match.groups():
return match.group(1)
@@ -162,20 +166,21 @@ def main():
sys.stderr.flush()
sys.exit(0)
- wc_version = re.sub('[MS]', '', info_out)
+ wc_version = re.sub('[MS]', '', info_out.strip())
title = "Translation status report for %s@r%s" % \
(branch_name, wc_version)
os.chdir(po_dir)
files = sorted(os.listdir('.'))
- format_head = "%6s %7s %7s %7s %7s" % ("lang", "trans", "untrans",
+ format_head = "\n%6s %7s %7s %7s %7s" % ("lang", "trans", "untrans",
"fuzzy", "obs")
format_line = "--------------------------------------"
print("\n%s\n%s\n%s" % (title, format_head, format_line))
body = ""
+ po_pattern = re.compile('(.*).po$')
for file in files:
- lang = l10n.match('(.*).po$', file)
+ lang = l10n.match(po_pattern, file)
if not lang:
continue
[trans, untrans, fuzzy, obsolete] = l10n.get_msgattribs(file)
@@ -186,24 +191,28 @@ def main():
if to_email_id:
import smtplib
+ # Ensure compatibility of the email module all the way to Python 2.3
+ try:
+ from email.message import Message
+ except ImportError:
+ from email.Message import Message
+
+ msg = Message()
+ msg["From"] = FROM_ADDRESS
+ msg["To"] = to_email_id
+ msg["Subject"] = SUBJECT_TEMPLATE % (branch_name, wc_version)
+ msg["X-Mailer"] = "l10n-report.py r%s" % _rev()
+ msg["Reply-To"] = LIST_ADDRESS
+ msg["Mail-Followup-To"] = LIST_ADDRESS
+ # http://www.iana.org/assignments/auto-submitted-keywords/auto-submitted-keywords.xhtml
+ msg["Auto-Submitted"] = 'auto-generated'
+ msg.set_type("text/plain")
+ msg.set_payload("\n".join((title, format_head, format_line, body)))
server = smtplib.SMTP('localhost')
- email_from = "From: SVN DEV <no...@subversion.apache.org>"
- email_to = "To: %s" % to_email_id
- email_sub = "Subject: [l10n] Translation status report for %s r%s" \
- % (branch_name, wc_version)
- x_headers = "\n".join([
- "X-Mailer: l10n-report.py r%ld" % _rev(),
- "Reply-To: %s" % LIST_ADDRESS,
- "Mail-Followup-To: %s" % LIST_ADDRESS,
- # http://www.iana.org/assignments/auto-submitted-keywords/auto-submitted-keywords.xhtml
- "Auto-Submitted: auto-generated",
- ]);
-
- msg = "\n".join((email_from, email_to, email_sub, x_headers,
- title, format_head, format_line, body))
-
- server.sendmail(email_from, email_to, msg)
+ server.sendmail("From: " + FROM_ADDRESS,
+ "To: " + to_email_id,
+ msg.as_string())
print("The report is sent to '%s' email id." % to_email_id)
else:
print("\nYou have not passed '-m' option, so email is not sent.")
Modified: subversion/branches/performance/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/win-tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/win-tests.py (original)
+++ subversion/branches/performance/win-tests.py Wed Feb 2 13:04:51 2011
@@ -79,6 +79,8 @@ def _usage_exit():
print(" --http-library : dav library to use, neon (default) or serf")
print(" --javahl : Run the javahl tests instead of the normal tests")
print(" --list : print test doc strings only")
+ print(" --mode-filter=TYPE : limit tests to expected TYPE = XFAIL, SKIP, PASS,")
+ print(" or 'ALL' (default)")
print(" --enable-sasl : enable Cyrus SASL authentication for")
print(" svnserve")
print(" -p, --parallel : run multiple tests in parallel")
@@ -87,6 +89,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(" --log-to-stdout : Write log results to stdout")
sys.exit(0)
@@ -119,7 +122,8 @@ opts, args = my_getopt(sys.argv[1:], 'hr
'httpd-server', 'http-library=', 'help',
'fsfs-packing', 'fsfs-sharding=', 'javahl',
'list', 'enable-sasl', 'bin=', 'parallel',
- 'config-file=', 'server-minor-version='])
+ 'config-file=', 'server-minor-version=',
+ 'log-to-stdout', 'mode-filter='])
if len(args) > 1:
print('Warning: non-option arguments after the first one will be ignored')
@@ -144,6 +148,8 @@ fsfs_sharding = None
fsfs_packing = None
server_minor_version = None
config_file = None
+log_to_stdout = None
+mode_filter=None
tests_to_run = []
for opt, val in opts:
@@ -189,6 +195,8 @@ for opt, val in opts:
test_javahl = 1
elif opt == '--list':
list_tests = 1
+ elif opt == '--mode-filter':
+ mode_filter = val
elif opt == '--enable-sasl':
enable_sasl = 1
base_url = "svn://localhost/"
@@ -200,6 +208,8 @@ for opt, val in opts:
parallel = 1
elif opt in ('--config-file'):
config_file = val
+ elif opt == '--log-to-stdout':
+ log_to_stdout = 1
# Calculate the source and test directory names
abs_srcdir = os.path.abspath("")
@@ -616,16 +626,19 @@ abs_builddir = fix_case(abs_builddir)
daemon = None
# Run the tests
-if run_svnserve:
- daemon = Svnserve(svnserve_args, objdir, abs_objdir, abs_builddir)
-if run_httpd:
- daemon = Httpd(abs_httpd_dir, abs_objdir, abs_builddir, httpd_port,
- httpd_service)
-
-# Start service daemon, if any
-if daemon:
- daemon.start()
+# No need to start any servers if we are only listing the tests.
+if not list_tests:
+ if run_svnserve:
+ daemon = Svnserve(svnserve_args, objdir, abs_objdir, abs_builddir)
+
+ if run_httpd:
+ daemon = Httpd(abs_httpd_dir, abs_objdir, abs_builddir, httpd_port,
+ httpd_service)
+
+ # Start service daemon, if any
+ if daemon:
+ daemon.start()
# Find the full path and filename of any test that is specified just by
# its base name.
@@ -653,19 +666,29 @@ else:
tests_to_run = all_tests
-print('Testing %s configuration on %s' % (objdir, repo_loc))
+if list_tests:
+ print('Listing %s configuration on %s' % (objdir, repo_loc))
+else:
+ print('Testing %s configuration on %s' % (objdir, repo_loc))
sys.path.insert(0, os.path.join(abs_srcdir, 'build'))
if not test_javahl:
import run_tests
+ if log_to_stdout:
+ log_file = None
+ fail_log_file = None
+ else:
+ log_file = os.path.join(abs_builddir, log)
+ fail_log_file = os.path.join(abs_builddir, faillog)
+
th = run_tests.TestHarness(abs_srcdir, abs_builddir,
- os.path.join(abs_builddir, log),
- os.path.join(abs_builddir, faillog),
+ log_file,
+ fail_log_file,
base_url, fs_type, http_library,
server_minor_version, not quiet,
cleanup, enable_sasl, parallel, config_file,
fsfs_sharding, fsfs_packing,
- list_tests, svn_bin)
+ list_tests, svn_bin, mode_filter)
old_cwd = os.getcwd()
try:
os.chdir(abs_builddir)