Heap data structure test module.
More...
Go to the source code of this file.
|
static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Heap test module" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, .support_level = AST_MODULE_SUPPORT_CORE, } |
|
static const struct ast_module_info * | ast_module_info = &__mod_info |
|
Heap data structure test module.
- Author
- Russell Bryant russe.nosp@m.ll@d.nosp@m.igium.nosp@m..com
Definition in file test_heap.c.
◆ __reg_module()
static void __reg_module |
( |
void |
| ) |
|
|
static |
◆ __unreg_module()
static void __unreg_module |
( |
void |
| ) |
|
|
static |
◆ AST_MODULE_SELF_SYM()
◆ AST_TEST_DEFINE() [1/3]
AST_TEST_DEFINE |
( |
heap_test_1 |
| ) |
|
Definition at line 57 of file test_heap.c.
References ast_heap_create, ast_heap_destroy(), ast_heap_pop(), ast_heap_push, AST_TEST_FAIL, AST_TEST_NOT_RUN, AST_TEST_PASS, ast_test_status_update, node::index, sip_to_pjsip::info(), node_cmp(), TEST_EXECUTE, TEST_INIT, and node::val.
69 info->name =
"heap_test_1";
70 info->category =
"/main/heap/";
71 info->summary =
"push and pop elements";
72 info->description =
"Push a few elements onto a heap and make sure that they come back off in the right order.";
struct ast_heap * ast_heap_destroy(struct ast_heap *h)
Destroy a max heap.
void * ast_heap_pop(struct ast_heap *h)
Pop the max element off of the heap.
#define ast_heap_push(h, elm)
#define ast_test_status_update(a, b, c...)
#define ast_heap_create(init_height, cmp_fn, index_offset)
static int node_cmp(void *_n1, void *_n2)
static struct ao2_container * nodes
All the nodes that we're aware of.
◆ AST_TEST_DEFINE() [2/3]
AST_TEST_DEFINE |
( |
heap_test_2 |
| ) |
|
Definition at line 117 of file test_heap.c.
References ast_free, ast_heap_create, ast_heap_destroy(), ast_heap_pop(), ast_heap_push, ast_heap_verify(), ast_malloc, ast_random(), AST_TEST_FAIL, AST_TEST_NOT_RUN, AST_TEST_PASS, ast_test_status_update, node::index, sip_to_pjsip::info(), last, node_cmp(), nodes, NULL, TEST_EXECUTE, TEST_INIT, total, and node::val.
120 static const unsigned int total = 100000;
123 unsigned int i =
total;
124 long last = LONG_MAX;
130 info->name =
"heap_test_2";
131 info->category =
"/main/heap/";
132 info->summary =
"load test";
134 "Push one hundred thousand random elements on to a heap, " 135 "verify that the heap has been properly constructed, " 136 "and then ensure that the elements are come back off " 137 "in the proper order.";
143 if (!(nodes =
ast_malloc(total *
sizeof(*node)))) {
struct ast_heap * ast_heap_destroy(struct ast_heap *h)
Destroy a max heap.
void * ast_heap_pop(struct ast_heap *h)
Pop the max element off of the heap.
#define ast_heap_push(h, elm)
#define ast_test_status_update(a, b, c...)
struct sla_ringing_trunk * last
long int ast_random(void)
#define ast_malloc(len)
A wrapper for malloc()
#define ast_heap_create(init_height, cmp_fn, index_offset)
int ast_heap_verify(struct ast_heap *h)
Verify that a heap has been properly constructed.
static int node_cmp(void *_n1, void *_n2)
static struct ao2_container * nodes
All the nodes that we're aware of.
◆ AST_TEST_DEFINE() [3/3]
AST_TEST_DEFINE |
( |
heap_test_3 |
| ) |
|
Definition at line 192 of file test_heap.c.
References ast_free, ast_heap_create, ast_heap_destroy(), ast_heap_pop(), ast_heap_push, ast_heap_remove(), ast_heap_verify(), ast_malloc, ast_random(), AST_TEST_FAIL, AST_TEST_NOT_RUN, AST_TEST_PASS, ast_test_status_update, node::index, sip_to_pjsip::info(), last, node_cmp(), nodes, NULL, TEST_EXECUTE, TEST_INIT, and node::val.
197 static const unsigned int test_size = 100000;
198 unsigned int i = test_size;
199 long last = LONG_MAX, cur;
205 info->name =
"heap_test_3";
206 info->category =
"/main/heap/";
207 info->summary =
"random element removal test";
209 "Push a hundred thousand random elements on to a heap, " 210 "verify that the heap has been properly constructed, " 211 "randomly remove and re-add 10000 elements, and then " 212 "ensure that the elements come back off in the proper order.";
218 if (!(nodes =
ast_malloc(test_size *
sizeof(*node)))) {
245 if (nodes[random_index].
val != node->
val){
271 if (i != test_size) {
struct ast_heap * ast_heap_destroy(struct ast_heap *h)
Destroy a max heap.
void * ast_heap_pop(struct ast_heap *h)
Pop the max element off of the heap.
#define ast_heap_push(h, elm)
#define ast_test_status_update(a, b, c...)
struct sla_ringing_trunk * last
long int ast_random(void)
#define ast_malloc(len)
A wrapper for malloc()
#define ast_heap_create(init_height, cmp_fn, index_offset)
void * ast_heap_remove(struct ast_heap *h, void *elm)
Remove a specific element from a heap.
int ast_heap_verify(struct ast_heap *h)
Verify that a heap has been properly constructed.
static int node_cmp(void *_n1, void *_n2)
static struct ao2_container * nodes
All the nodes that we're aware of.
◆ load_module()
static int load_module |
( |
void |
| ) |
|
|
static |
◆ node_cmp()
static int node_cmp |
( |
void * |
_n1, |
|
|
void * |
_n2 |
|
) |
| |
|
static |
◆ unload_module()
static int unload_module |
( |
void |
| ) |
|
|
static |
◆ __mod_info
struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Heap test module" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, .support_level = AST_MODULE_SUPPORT_CORE, } |
|
static |
◆ ast_module_info