[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[RFC] Stop sleeping for timestamps when running tests

From: Erik Huelsmann <ehuels_at_gmail.com>
Date: 2007-03-11 14:12:25 CET

In the last few days, I committed an extra criterion to help determine
'changedness' of a file: libsvn_wc also considers the size of the file
at hand. So, now we do not only depend on the timestamp any more. If a
file changes in size (but not in time), svn will detect it's possibly

In our test-suite all but 2 tests change the sizes of the files
involved in the test. That means that all (except these 2) tests don't
have to depend on the timestamp to complete successfully.

I added (locally) a test to svn_sleep_for_timestamps() to check an
environment variable whether or not to sleep for stamps. When running
the test suite with that variable set to the right value,
basic_tests.py took 24seconds.

Recently lgo added parellel (?) execution of tests. Tests run in
parellel also take 24seconds.

I'd like to change our test suite to not sleep for timestamps except
for a specified number of tests. Currently the specified tests would
be the ones which fail without sleeping. That way, we won't need the
parellelized feature (lgo prefers to rip that).

Additional benefit of not-sleeping versus parellelizing is that the
on-disk space-requirements stay the same as they currently are. This
could be important for execution on RAM disks.




The patch to libsvn_subr:svn_sleep_for_timestamps():

Index: subversion/libsvn_subr/time.c
--- subversion/libsvn_subr/time.c (revision 23768)
+++ subversion/libsvn_subr/time.c (working copy)
@@ -2,7 +2,7 @@
  * time.c: time/date utilities
  * ====================================================================
- * Copyright (c) 2000-2004 CollabNet. All rights reserved.
+ * Copyright (c) 2000-2007 CollabNet. All rights reserved.
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -289,9 +289,13 @@
   apr_time_t now, then;
+ const char *env_val = getenv("SVN_SLEEP_FOR_TIMESTAMPS");

   /* Sleep until the next second tick, plus a tenth of a second for margin. */
- now = apr_time_now();
- then = apr_time_make(apr_time_sec(now) + 1, APR_USEC_PER_SEC / 10);
- apr_sleep(then - now);
+ if (apr_strnatcasecmp(env_val, "no") != 0)
+ {
+ now = apr_time_now();
+ then = apr_time_make(apr_time_sec(now) + 1, APR_USEC_PER_SEC / 10);
+ apr_sleep(then - now);
+ }

To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun Mar 11 14:12:40 2007

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.