Build a general purpose thread event handler
This commit is contained in:
57
test/unit/thread_event.c
Normal file
57
test/unit/thread_event.c
Normal file
@@ -0,0 +1,57 @@
|
||||
#include "test/jemalloc_test.h"
|
||||
|
||||
TEST_BEGIN(test_next_event_fast_roll_back) {
|
||||
tsd_t *tsd = tsd_fetch();
|
||||
thread_allocated_last_event_set(tsd, 0);
|
||||
thread_allocated_set(tsd,
|
||||
THREAD_ALLOCATED_NEXT_EVENT_FAST_MAX - 8U);
|
||||
thread_allocated_next_event_set(tsd,
|
||||
THREAD_ALLOCATED_NEXT_EVENT_FAST_MAX);
|
||||
thread_allocated_next_event_fast_set(tsd,
|
||||
THREAD_ALLOCATED_NEXT_EVENT_FAST_MAX);
|
||||
prof_sample_event_wait_set(tsd,
|
||||
THREAD_ALLOCATED_NEXT_EVENT_FAST_MAX);
|
||||
void *p = malloc(16U);
|
||||
assert_ptr_not_null(p, "malloc() failed");
|
||||
free(p);
|
||||
}
|
||||
TEST_END
|
||||
|
||||
TEST_BEGIN(test_next_event_fast_resume) {
|
||||
tsd_t *tsd = tsd_fetch();
|
||||
thread_allocated_last_event_set(tsd, 0);
|
||||
thread_allocated_set(tsd,
|
||||
THREAD_ALLOCATED_NEXT_EVENT_FAST_MAX + 8U);
|
||||
thread_allocated_next_event_set(tsd,
|
||||
THREAD_ALLOCATED_NEXT_EVENT_FAST_MAX + 16U);
|
||||
thread_allocated_next_event_fast_set(tsd, 0);
|
||||
prof_sample_event_wait_set(tsd,
|
||||
THREAD_ALLOCATED_NEXT_EVENT_FAST_MAX + 16U);
|
||||
void *p = malloc(SC_LOOKUP_MAXCLASS);
|
||||
assert_ptr_not_null(p, "malloc() failed");
|
||||
free(p);
|
||||
}
|
||||
TEST_END
|
||||
|
||||
TEST_BEGIN(test_event_rollback) {
|
||||
tsd_t *tsd = tsd_fetch();
|
||||
const uint64_t diff = THREAD_EVENT_MAX_INTERVAL >> 2;
|
||||
size_t count = 10;
|
||||
uint64_t thread_allocated = thread_allocated_get(tsd);
|
||||
while (count-- != 0) {
|
||||
thread_event_rollback(tsd, diff);
|
||||
uint64_t thread_allocated_after = thread_allocated_get(tsd);
|
||||
assert_u64_eq(thread_allocated - thread_allocated_after, diff,
|
||||
"thread event counters are not properly rolled back");
|
||||
thread_allocated = thread_allocated_after;
|
||||
}
|
||||
}
|
||||
TEST_END
|
||||
|
||||
int
|
||||
main(void) {
|
||||
return test(
|
||||
test_next_event_fast_roll_back,
|
||||
test_next_event_fast_resume,
|
||||
test_event_rollback);
|
||||
}
|
5
test/unit/thread_event.sh
Normal file
5
test/unit/thread_event.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ "x${enable_prof}" = "x1" ] ; then
|
||||
export MALLOC_CONF="prof:true,lg_prof_sample:0"
|
||||
fi
|
Reference in New Issue
Block a user