From b959ac44a7c2c7ee4d60ea0db2cefbd9b2887fde Mon Sep 17 00:00:00 2001 From: Aram Sargsyan Date: Wed, 16 Apr 2025 12:56:18 +0000 Subject: [PATCH] Fix the isc_rwlock_tryupgrade() function's unit test The pthread-based implementation of the isc_rwlock_tryupgrade() function always returns ISC_R_LOCKBUSY. Fix the test by adding conditional checks. (cherry picked from commit c27659bc623f2d58bccc9e0d99ca1ad180e8180b) --- tests/isc/rwlock_test.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/isc/rwlock_test.c b/tests/isc/rwlock_test.c index dee4e382f3..2fae39256d 100644 --- a/tests/isc/rwlock_test.c +++ b/tests/isc/rwlock_test.c @@ -137,8 +137,17 @@ ISC_RUN_TEST_IMPL(isc_rwlock_tryupgrade) { isc_result_t result; isc_rwlock_lock(&rwlock, isc_rwlocktype_read); result = isc_rwlock_tryupgrade(&rwlock); +#if USE_PTHREAD_RWLOCK + /* + * Our pthread-based rwlock implementation does not support tryupgrade, + * and always returns ISC_R_LOCKBUSY. + */ + assert_int_equal(result, ISC_R_LOCKBUSY); + isc_rwlock_unlock(&rwlock, isc_rwlocktype_read); +#else assert_int_equal(result, ISC_R_SUCCESS); isc_rwlock_unlock(&rwlock, isc_rwlocktype_write); +#endif /* USE_PTHREAD_RWLOCK */ } static void *