You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by iv...@apache.org on 2019/05/28 07:44:30 UTC
svn commit: r1860190 - /apr/apr/trunk/test/testlock.c
Author: ivan
Date: Tue May 28 07:44:30 2019
New Revision: 1860190
URL: http://svn.apache.org/viewvc?rev=1860190&view=rev
Log:
Add simple tests for nested and unnested thread mutexes.
Modified:
apr/apr/trunk/test/testlock.c
Modified: apr/apr/trunk/test/testlock.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/test/testlock.c?rev=1860190&r1=1860189&r2=1860190&view=diff
==============================================================================
--- apr/apr/trunk/test/testlock.c (original)
+++ apr/apr/trunk/test/testlock.c Tue May 28 07:44:30 2019
@@ -377,6 +377,54 @@ static void test_timeoutmutex(abts_case
apr_thread_mutex_destroy(timeout_mutex));
}
+static void test_thread_nestedmutex(abts_case *tc, void *data)
+{
+ apr_thread_mutex_t *m;
+ apr_status_t rv;
+
+ rv = apr_thread_mutex_create(&m, APR_THREAD_MUTEX_NESTED, p);
+ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+ ABTS_PTR_NOTNULL(tc, m);
+
+ rv = apr_thread_mutex_lock(m);
+ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+ rv = apr_thread_mutex_trylock(m);
+ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+ if (rv == APR_SUCCESS)
+ {
+ rv = apr_thread_mutex_unlock(m);
+ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+ }
+
+ rv = apr_thread_mutex_unlock(m);
+ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+static void test_thread_unnestedmutex(abts_case *tc, void *data)
+{
+ apr_thread_mutex_t *m;
+ apr_status_t rv;
+
+ rv = apr_thread_mutex_create(&m, APR_THREAD_MUTEX_UNNESTED, p);
+ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+ ABTS_PTR_NOTNULL(tc, m);
+
+ rv = apr_thread_mutex_lock(m);
+ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+ rv = apr_thread_mutex_trylock(m);
+ ABTS_INT_EQUAL(tc, APR_EBUSY, rv);
+ if (rv == APR_SUCCESS)
+ {
+ rv = apr_thread_mutex_unlock(m);
+ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+ }
+
+ rv = apr_thread_mutex_unlock(m);
+ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
#endif /* !APR_HAS_THREADS */
#if !APR_HAS_THREADS
@@ -396,6 +444,8 @@ abts_suite *testlock(abts_suite *suite)
#else
abts_run_test(suite, test_thread_mutex, NULL);
abts_run_test(suite, test_thread_timedmutex, NULL);
+ abts_run_test(suite, test_thread_nestedmutex, NULL);
+ abts_run_test(suite, test_thread_unnestedmutex, NULL);
abts_run_test(suite, test_thread_rwlock, NULL);
abts_run_test(suite, test_cond, NULL);
abts_run_test(suite, test_timeoutcond, NULL);