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 2012/10/31 14:16:08 UTC
svn commit: r1404125 -
/subversion/trunk/subversion/tests/libsvn_subr/named_atomic-test.c
Author: stefan2
Date: Wed Oct 31 13:16:07 2012
New Revision: 1404125
URL: http://svn.apache.org/viewvc?rev=1404125&view=rev
Log:
Fix file access conflict in tests under Windows: cleanup temp files
only after the named atomics have been closed.
* subversion/tests/libsvn_subr/named_atomic-test.c
(cleanup_test_shm): turn into an APR pool cleanup function
(init_test_shm): register the cleanup
(test_basics,
test_bignums,
test_multiple_atomics,
test_namespaces,
test_multithreaded,
test_multiprocess): remove explicit cleanup function calls
Modified:
subversion/trunk/subversion/tests/libsvn_subr/named_atomic-test.c
Modified: subversion/trunk/subversion/tests/libsvn_subr/named_atomic-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/named_atomic-test.c?rev=1404125&r1=1404124&r2=1404125&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/named_atomic-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/named_atomic-test.c Wed Oct 31 13:16:07 2012
@@ -112,6 +112,20 @@ proc_found(const char *proc, apr_pool_t
return result == svn_tristate_true;
}
+/* Remove temporary files from disk.
+ */
+static apr_status_t
+cleanup_test_shm(void *arg)
+{
+ apr_pool_t *pool = arg;
+
+ svn_error_clear(svn_atomic_namespace__cleanup(name_namespace, pool));
+ svn_error_clear(svn_atomic_namespace__cleanup(name_namespace1, pool));
+ svn_error_clear(svn_atomic_namespace__cleanup(name_namespace2, pool));
+
+ return 0;
+}
+
/* Bring shared memory to a defined state. This is very useful in case of
* lingering problems from previous tests or test runs.
*/
@@ -150,6 +164,11 @@ init_test_shm(apr_pool_t *pool)
return svn_error_wrap_apr(SVN_ERR_TEST_SKIPPED,
"user has insufficient privileges");
+ /* destroy temp files after usage */
+
+ apr_pool_cleanup_register(pool, pool,
+ cleanup_test_shm, apr_pool_cleanup_null);
+
/* get the two I/O atomics for this thread */
SVN_ERR(svn_atomic_namespace__create(&ns, name_namespace, scratch));
SVN_ERR(svn_named_atomic__get(&atomic, ns, ATOMIC_NAME, TRUE));
@@ -176,20 +195,6 @@ init_test_shm(apr_pool_t *pool)
return SVN_NO_ERROR;
}
-/* Remove temporary files from disk.
- */
-static svn_error_t *
-cleanup_test_shm(apr_pool_t *pool)
-{
- SVN_ERR(svn_atomic_namespace__cleanup(name_namespace, pool));
- SVN_ERR(svn_atomic_namespace__cleanup(name_namespace1, pool));
- SVN_ERR(svn_atomic_namespace__cleanup(name_namespace2, pool));
-
- /* done */
-
- return SVN_NO_ERROR;
-}
-
/* Prepare the shared memory for a run with COUNT workers.
*/
static svn_error_t *
@@ -533,8 +538,6 @@ test_basics(apr_pool_t *pool)
SVN_ERR(svn_named_atomic__read(&value, atomic));
SVN_TEST_ASSERT(value == 42);
- SVN_ERR(cleanup_test_shm(pool));
-
return SVN_NO_ERROR;
}
@@ -583,8 +586,6 @@ test_bignums(apr_pool_t *pool)
SVN_ERR(svn_named_atomic__read(&value, atomic));
SVN_TEST_ASSERT(value == 98 * HUGE_VALUE);
- SVN_ERR(cleanup_test_shm(pool));
-
return SVN_NO_ERROR;
}
@@ -647,8 +648,6 @@ test_multiple_atomics(apr_pool_t *pool)
SVN_TEST_ASSERT(value1 == 4 * HUGE_VALUE);
SVN_TEST_ASSERT(value2 == 98 * HUGE_VALUE);
- SVN_ERR(cleanup_test_shm(pool));
-
return SVN_NO_ERROR;
}
@@ -698,8 +697,6 @@ test_namespaces(apr_pool_t *pool)
SVN_ERR(svn_named_atomic__read(&value, atomic2_alias));
SVN_TEST_ASSERT(value == 42 * HUGE_VALUE);
- SVN_ERR(cleanup_test_shm(pool));
-
return SVN_NO_ERROR;
}
@@ -714,8 +711,6 @@ test_multithreaded(apr_pool_t *pool)
SVN_ERR(init_concurrency_test_shm(pool, hw_thread_count));
SVN_ERR(run_threads(pool, hw_thread_count, suggested_iterations, test_pipeline));
- SVN_ERR(cleanup_test_shm(pool));
-
return SVN_NO_ERROR;
#else
return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL, NULL);
@@ -736,7 +731,6 @@ test_multiprocess(apr_pool_t *pool)
SVN_ERR(init_concurrency_test_shm(pool, hw_thread_count));
SVN_ERR(run_procs(pool, TEST_PROC, hw_thread_count, suggested_iterations));
- SVN_ERR(cleanup_test_shm(pool));
return SVN_NO_ERROR;
}