Tests: Shouldn't be able to change global slowness.
This can help ensure that we don't leave slowness changes behind in case of resource exhaustion.
This commit is contained in:
parent
59e371f463
commit
0379235f47
@ -117,6 +117,7 @@ void tsd_slow_update(tsd_t *tsd);
|
||||
*/
|
||||
void tsd_global_slow_inc(tsdn_t *tsdn);
|
||||
void tsd_global_slow_dec(tsdn_t *tsdn);
|
||||
bool tsd_global_slow();
|
||||
|
||||
enum {
|
||||
/* Common case --> jnz. */
|
||||
|
@ -141,7 +141,7 @@ tsd_local_slow(tsd_t *tsd) {
|
||||
|| tsd_reentrancy_level_get(tsd) > 0;
|
||||
}
|
||||
|
||||
static bool
|
||||
bool
|
||||
tsd_global_slow() {
|
||||
return atomic_load_u32(&tsd_global_slow_count, ATOMIC_RELAXED) > 0;
|
||||
}
|
||||
|
@ -110,6 +110,20 @@ p_test_fini(void) {
|
||||
test_status_string(test_status));
|
||||
}
|
||||
|
||||
static void
|
||||
check_global_slow(test_status_t *status) {
|
||||
#ifdef JEMALLOC_UNIT_TEST
|
||||
/*
|
||||
* This check needs to peek into tsd internals, which is why it's only
|
||||
* exposed in unit tests.
|
||||
*/
|
||||
if (tsd_global_slow()) {
|
||||
malloc_printf("Testing increased global slow count\n");
|
||||
*status = test_status_fail;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static test_status_t
|
||||
p_test_impl(bool do_malloc_init, bool do_reentrant, test_t *t, va_list ap) {
|
||||
test_status_t ret;
|
||||
@ -136,6 +150,7 @@ p_test_impl(bool do_malloc_init, bool do_reentrant, test_t *t, va_list ap) {
|
||||
if (test_status > ret) {
|
||||
ret = test_status;
|
||||
}
|
||||
check_global_slow(&ret);
|
||||
/* Reentrant run. */
|
||||
if (do_reentrant) {
|
||||
reentrancy = libc_reentrant;
|
||||
@ -145,6 +160,7 @@ p_test_impl(bool do_malloc_init, bool do_reentrant, test_t *t, va_list ap) {
|
||||
if (test_status > ret) {
|
||||
ret = test_status;
|
||||
}
|
||||
check_global_slow(&ret);
|
||||
|
||||
reentrancy = arena_new_reentrant;
|
||||
test_hooks_libc_hook = NULL;
|
||||
@ -153,6 +169,7 @@ p_test_impl(bool do_malloc_init, bool do_reentrant, test_t *t, va_list ap) {
|
||||
if (test_status > ret) {
|
||||
ret = test_status;
|
||||
}
|
||||
check_global_slow(&ret);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user