test-data-stack.c (dovecot-2.3.16) | : | test-data-stack.c (dovecot-2.3.17) | ||
---|---|---|---|---|
skipping to change at line 71 | skipping to change at line 71 | |||
(void)t_malloc0(1024*5); | (void)t_malloc0(1024*5); | |||
test_assert(ds_grow_event_count == 0); | test_assert(ds_grow_event_count == 0); | |||
(void)t_malloc0(1024*100); | (void)t_malloc0(1024*100); | |||
test_assert(ds_grow_event_count == 1); | test_assert(ds_grow_event_count == 1); | |||
} T_END; | } T_END; | |||
event_unset_global_debug_log_filter(); | event_unset_global_debug_log_filter(); | |||
event_unregister_callback(test_ds_grow_event_callback); | event_unregister_callback(test_ds_grow_event_callback); | |||
test_end(); | test_end(); | |||
} | } | |||
static void test_ds_get_used_size(void) | ||||
{ | ||||
test_begin("data-stack data_stack_get_used_size()"); | ||||
size_t size1 = data_stack_get_used_size(); | ||||
(void)t_malloc0(500); | ||||
size_t size2 = data_stack_get_used_size(); | ||||
test_assert(size1 + 500 <= size2); | ||||
T_BEGIN { | ||||
(void)t_malloc0(300); | ||||
size_t sub_size1 = data_stack_get_used_size(); | ||||
T_BEGIN { | ||||
(void)t_malloc0(300); | ||||
} T_END; | ||||
test_assert_cmp(sub_size1, ==, data_stack_get_used_size()); | ||||
} T_END; | ||||
test_assert_cmp(size2, ==, data_stack_get_used_size()); | ||||
test_end(); | ||||
} | ||||
static void test_ds_get_bytes_available(void) | static void test_ds_get_bytes_available(void) | |||
{ | { | |||
test_begin("data-stack t_get_bytes_available()"); | test_begin("data-stack t_get_bytes_available()"); | |||
for (unsigned int i = 0; i < 32; i++) { | for (unsigned int i = 0; i < 32; i++) { | |||
size_t orig_avail = t_get_bytes_available(); | size_t orig_avail = t_get_bytes_available(); | |||
size_t avail1; | size_t avail1; | |||
T_BEGIN { | T_BEGIN { | |||
if (i > 0) | if (i > 0) | |||
t_malloc_no0(i); | t_malloc_no0(i); | |||
avail1 = t_get_bytes_available(); | avail1 = t_get_bytes_available(); | |||
skipping to change at line 123 | skipping to change at line 143 | |||
test_begin("data-stack grow in event"); | test_begin("data-stack grow in event"); | |||
struct event_filter *filter = event_filter_create(); | struct event_filter *filter = event_filter_create(); | |||
event_set_global_debug_log_filter(filter); | event_set_global_debug_log_filter(filter); | |||
test_assert(event_filter_parse("event=data_stack_grow", filter, &error) = = 0); | test_assert(event_filter_parse("event=data_stack_grow", filter, &error) = = 0); | |||
event_filter_unref(&filter); | event_filter_unref(&filter); | |||
i_set_debug_handler(test_ds_growing_debug); | i_set_debug_handler(test_ds_growing_debug); | |||
buf = t_buffer_get(alloc1); | buf = t_buffer_get(alloc1); | |||
for (i = 0; i < alloc1; i++) | for (i = 0; i < alloc1; i++) | |||
buf[i] = i; | buf[i] = i & 0xff; | |||
test_assert(ds_grow_event_count == 0); | test_assert(ds_grow_event_count == 0); | |||
buf = t_buffer_reget(buf, 65536); | buf = t_buffer_reget(buf, 65536); | |||
test_assert(ds_grow_event_count == 1); | test_assert(ds_grow_event_count == 1); | |||
for (i = 0; i < alloc1; i++) { | for (i = 0; i < alloc1; i++) { | |||
if (buf[i] != (unsigned char)i) | if (buf[i] != (unsigned char)i) | |||
break; | break; | |||
} | } | |||
test_assert(i == alloc1); | test_assert(i == alloc1); | |||
skipping to change at line 270 | skipping to change at line 290 | |||
} | } | |||
test_assert_idx(t_pop(&t_id), depth); | test_assert_idx(t_pop(&t_id), depth); | |||
} | } | |||
static void test_ds_recursive(void) | static void test_ds_recursive(void) | |||
{ | { | |||
int count = 20, depth = 80; | int count = 20, depth = 80; | |||
int i; | int i; | |||
test_begin("data-stack recursive"); | test_begin("data-stack recursive"); | |||
size_t init_size = data_stack_get_used_size(); | ||||
for(i = 0; i < count; i++) T_BEGIN { | for(i = 0; i < count; i++) T_BEGIN { | |||
int number=i_rand_limit(100)+50; | int number=i_rand_limit(100)+50; | |||
int size=i_rand_limit(100)+50; | int size=i_rand_limit(100)+50; | |||
test_ds_recurse(depth, number, size); | test_ds_recurse(depth, number, size); | |||
} T_END; | } T_END; | |||
test_assert_cmp(init_size, ==, data_stack_get_used_size()); | ||||
test_end(); | test_end(); | |||
} | } | |||
static void test_ds_pass_str(void) | static void test_ds_pass_str(void) | |||
{ | { | |||
data_stack_frame_t frames[32*2 + 1]; /* BLOCK_FRAME_COUNT*2 + 1 */ | data_stack_frame_t frames[32*2 + 1]; /* BLOCK_FRAME_COUNT*2 + 1 */ | |||
const char *strings[N_ELEMENTS(frames)]; | const char *strings[N_ELEMENTS(frames)]; | |||
test_begin("data-stack pass string"); | test_begin("data-stack pass string"); | |||
for (unsigned int frame = 0; frame < N_ELEMENTS(frames); frame++) { | for (unsigned int frame = 0; frame < N_ELEMENTS(frames); frame++) { | |||
skipping to change at line 328 | skipping to change at line 350 | |||
/* the passed error is still valid though */ | /* the passed error is still valid though */ | |||
test_assert_strcmp(error, "123456"); | test_assert_strcmp(error, "123456"); | |||
test_end(); | test_end(); | |||
} | } | |||
void test_data_stack(void) | void test_data_stack(void) | |||
{ | { | |||
void (*tests[])(void) = { | void (*tests[])(void) = { | |||
test_ds_grow_event, | test_ds_grow_event, | |||
test_ds_get_used_size, | ||||
test_ds_get_bytes_available, | test_ds_get_bytes_available, | |||
test_ds_grow_in_event, | test_ds_grow_in_event, | |||
test_ds_buffers, | test_ds_buffers, | |||
test_ds_realloc, | test_ds_realloc, | |||
test_ds_recursive, | test_ds_recursive, | |||
test_ds_pass_str, | test_ds_pass_str, | |||
}; | }; | |||
for (unsigned int i = 0; i < N_ELEMENTS(tests); i++) { | for (unsigned int i = 0; i < N_ELEMENTS(tests); i++) { | |||
ds_grow_event_count = 0; | ds_grow_event_count = 0; | |||
data_stack_free_unused(); | data_stack_free_unused(); | |||
End of changes. 5 change blocks. | ||||
1 lines changed or deleted | 24 lines changed or added |