"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/lib/test-data-stack.c" between
dovecot-2.3.16.tar.gz and dovecot-2.3.17.tar.gz

About: Dovecot is an IMAP and POP3 server, written with security primarily in mind.

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

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)