commit
280e28a6d4
@ -732,7 +732,8 @@ int main(int argc, char** argv)
|
|||||||
exotic_add_test(&handle, &exotic_test_rbtree_size_4, "rbtree_size_4");
|
exotic_add_test(&handle, &exotic_test_rbtree_size_4, "rbtree_size_4");
|
||||||
exotic_add_test(&handle, &exotic_test_rbtree_check_10000, "rbtree_check_10000");
|
exotic_add_test(&handle, &exotic_test_rbtree_check_10000, "rbtree_check_10000");
|
||||||
exotic_add_test(&handle, &exotic_test_rbtree_iterate_10000, "rbtree_iterate_10000");
|
exotic_add_test(&handle, &exotic_test_rbtree_iterate_10000, "rbtree_iterate_10000");
|
||||||
exotic_add_test(&handle, &exotic_test_rbtree_remove_5000, "rbtree_remove_5000");
|
exotic_add_test(&handle, &exotic_test_rbtree_remove_10000, "rbtree_remove_10000");
|
||||||
|
exotic_add_test(&handle, &exotic_test_rbtree_destroy_1, "rbtree_destroy_1");
|
||||||
exotic_add_test(&handle, &exotic_test_sid_create_pool, "sid_create_pool");
|
exotic_add_test(&handle, &exotic_test_sid_create_pool, "sid_create_pool");
|
||||||
exotic_add_test(&handle, &exotic_test_sid_check_0a, "sid_check_0a");
|
exotic_add_test(&handle, &exotic_test_sid_check_0a, "sid_check_0a");
|
||||||
exotic_add_test(&handle, &exotic_test_sid_check_0b, "sid_check_0b");
|
exotic_add_test(&handle, &exotic_test_sid_check_0b, "sid_check_0b");
|
||||||
@ -770,6 +771,7 @@ int main(int argc, char** argv)
|
|||||||
exotic_add_test(&handle, &exotic_test_timer_add_5_events_1, "timer_add_5_events_1");
|
exotic_add_test(&handle, &exotic_test_timer_add_5_events_1, "timer_add_5_events_1");
|
||||||
exotic_add_test(&handle, &exotic_test_timer_check_5_events_1, "timer_check_5_events_1");
|
exotic_add_test(&handle, &exotic_test_timer_check_5_events_1, "timer_check_5_events_1");
|
||||||
exotic_add_test(&handle, &exotic_test_timer_process_5_events_1, "timer_process_5_events_1");
|
exotic_add_test(&handle, &exotic_test_timer_process_5_events_1, "timer_process_5_events_1");
|
||||||
|
exotic_add_test(&handle, &exotic_test_timer_shutdown, "timer_shutdown");
|
||||||
exotic_add_test(&handle, &exotic_test_tokenizer_basic_0, "tokenizer_basic_0");
|
exotic_add_test(&handle, &exotic_test_tokenizer_basic_0, "tokenizer_basic_0");
|
||||||
exotic_add_test(&handle, &exotic_test_tokenizer_basic_1, "tokenizer_basic_1");
|
exotic_add_test(&handle, &exotic_test_tokenizer_basic_1, "tokenizer_basic_1");
|
||||||
exotic_add_test(&handle, &exotic_test_tokenizer_basic_1a, "tokenizer_basic_1a");
|
exotic_add_test(&handle, &exotic_test_tokenizer_basic_1a, "tokenizer_basic_1a");
|
||||||
|
@ -86,7 +86,7 @@ EXO_TEST(rbtree_size_3, { return rb_tree_size(tree) == 0; });
|
|||||||
|
|
||||||
EXO_TEST(rbtree_insert_10000, {
|
EXO_TEST(rbtree_insert_10000, {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < MAX_NODES ; i++)
|
for (i = 0; i < MAX_NODES; i++)
|
||||||
{
|
{
|
||||||
const char* key = strdup(uhub_itoa(i));
|
const char* key = strdup(uhub_itoa(i));
|
||||||
const char* val = strdup(uhub_itoa(i + 16384));
|
const char* val = strdup(uhub_itoa(i + 16384));
|
||||||
@ -96,11 +96,11 @@ EXO_TEST(rbtree_insert_10000, {
|
|||||||
return 1;
|
return 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
EXO_TEST(rbtree_size_4, { return rb_tree_size(tree) == MAX_NODES ; });
|
EXO_TEST(rbtree_size_4, { return rb_tree_size(tree) == MAX_NODES; });
|
||||||
|
|
||||||
EXO_TEST(rbtree_check_10000, {
|
EXO_TEST(rbtree_check_10000, {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < MAX_NODES ; i++)
|
for (i = 0; i < MAX_NODES; i++)
|
||||||
{
|
{
|
||||||
char* key = strdup(uhub_itoa(i));
|
char* key = strdup(uhub_itoa(i));
|
||||||
const char* expect = uhub_itoa(i + 16384);
|
const char* expect = uhub_itoa(i + 16384);
|
||||||
@ -116,29 +116,35 @@ EXO_TEST(rbtree_iterate_10000, {
|
|||||||
struct rb_node* n = (struct rb_node*) rb_tree_first(tree);
|
struct rb_node* n = (struct rb_node*) rb_tree_first(tree);
|
||||||
while (n)
|
while (n)
|
||||||
{
|
{
|
||||||
struct rb_node* p = n;
|
|
||||||
n = (struct rb_node*) rb_tree_next(tree);
|
n = (struct rb_node*) rb_tree_next(tree);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return i == MAX_NODES ;
|
return i == MAX_NODES;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
static int freed_nodes = 0;
|
||||||
static void free_node(struct rb_node* n)
|
static void free_node(struct rb_node* n)
|
||||||
{
|
{
|
||||||
hub_free((void*) n->key);
|
hub_free((void*) n->key);
|
||||||
hub_free((void*) n->value);
|
hub_free((void*) n->value);
|
||||||
|
freed_nodes += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXO_TEST(rbtree_remove_5000, {
|
EXO_TEST(rbtree_remove_10000, {
|
||||||
int i = 0;
|
int i;
|
||||||
struct rb_node* n = (struct rb_node*) rb_tree_first(tree);
|
int j;
|
||||||
for (i = 0; i < MAX_NODES ; i += 2)
|
for (j = 0; j < 2; j++)
|
||||||
{
|
{
|
||||||
const char* key = uhub_itoa(i);
|
for (i = j; i < MAX_NODES; i += 2)
|
||||||
rb_tree_remove_node(tree, key, &free_node);
|
{
|
||||||
|
const char* key = uhub_itoa(i);
|
||||||
|
rb_tree_remove_node(tree, key, &free_node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return freed_nodes == MAX_NODES;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
EXO_TEST(rbtree_destroy_1, {
|
||||||
|
rb_tree_destroy(tree);
|
||||||
|
return 1;
|
||||||
|
});
|
||||||
|
@ -117,3 +117,9 @@ EXO_TEST(timer_process_5_events_1,{
|
|||||||
g_now = 4;
|
g_now = 4;
|
||||||
return timeout_queue_process(g_queue, g_now) == g_triggered;
|
return timeout_queue_process(g_queue, g_now) == g_triggered;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
EXO_TEST(timer_shutdown,{
|
||||||
|
timeout_queue_shutdown(g_queue);
|
||||||
|
hub_free(g_queue);
|
||||||
|
return 1;
|
||||||
|
});
|
||||||
|
@ -283,7 +283,6 @@ static int net_connect_job_process(struct net_connect_job* job)
|
|||||||
*/
|
*/
|
||||||
static void net_connect_job_internal_cb(struct net_connection* con, int event, void* ptr)
|
static void net_connect_job_internal_cb(struct net_connection* con, int event, void* ptr)
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
struct net_connect_job* job = net_con_get_ptr(con);
|
struct net_connect_job* job = net_con_get_ptr(con);
|
||||||
struct net_connect_job* next_job = job->next;
|
struct net_connect_job* next_job = job->next;
|
||||||
struct net_connect_handle* handle = job->handle;
|
struct net_connect_handle* handle = job->handle;
|
||||||
@ -441,7 +440,6 @@ static int net_con_connect_dns_callback(struct net_dns_job* job, const struct ne
|
|||||||
struct net_connect_handle* handle = (struct net_connect_handle*) net_dns_job_get_ptr(job);
|
struct net_connect_handle* handle = (struct net_connect_handle*) net_dns_job_get_ptr(job);
|
||||||
handle->dns = NULL;
|
handle->dns = NULL;
|
||||||
size_t usable = 0;
|
size_t usable = 0;
|
||||||
int ret;
|
|
||||||
|
|
||||||
LOG_TRACE("net_con_connect(): async - Got DNS results");
|
LOG_TRACE("net_con_connect(): async - Got DNS results");
|
||||||
if (!result)
|
if (!result)
|
||||||
|
@ -99,9 +99,6 @@ void net_dns_initialize()
|
|||||||
|
|
||||||
void net_dns_destroy()
|
void net_dns_destroy()
|
||||||
{
|
{
|
||||||
struct net_dns_job* job;
|
|
||||||
struct net_dns_result* result;
|
|
||||||
|
|
||||||
uhub_mutex_lock(&g_dns->mutex);
|
uhub_mutex_lock(&g_dns->mutex);
|
||||||
LOG_TRACE("net_dns_destroy(): jobs=%d", (int) list_size(g_dns->jobs));
|
LOG_TRACE("net_dns_destroy(): jobs=%d", (int) list_size(g_dns->jobs));
|
||||||
list_clear(g_dns->jobs, &shutdown_free_jobs);
|
list_clear(g_dns->jobs, &shutdown_free_jobs);
|
||||||
|
@ -62,8 +62,8 @@ struct rb_tree
|
|||||||
extern struct rb_tree* rb_tree_create(rb_tree_compare compare, rb_tree_alloc alloc, rb_tree_free dealloc);
|
extern struct rb_tree* rb_tree_create(rb_tree_compare compare, rb_tree_alloc alloc, rb_tree_free dealloc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes the tree and all the nodes.
|
* Delete the tree.
|
||||||
* But not the content inside the nodes.
|
* Assumes that the tree is empty.
|
||||||
*/
|
*/
|
||||||
extern void rb_tree_destroy(struct rb_tree*);
|
extern void rb_tree_destroy(struct rb_tree*);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user