int main(int argc, char** argv) { int rc; opal_thread_t thr1; opal_thread_t thr2; test_init("opal_thread_t"); OBJ_CONSTRUCT(&thr1, opal_thread_t); OBJ_CONSTRUCT(&thr2, opal_thread_t); thr1.t_run = thr1_run; thr2.t_run = thr2_run; rc = opal_thread_start(&thr1); test_verify_int(OPAL_SUCCESS, rc); rc = opal_thread_start(&thr2); test_verify_int(OPAL_SUCCESS, rc); rc = opal_thread_join(&thr1, NULL); test_verify_int(OPAL_SUCCESS, rc); rc = opal_thread_join(&thr2, NULL); test_verify_int(OPAL_SUCCESS, rc); test_verify_int(3, count); return test_finalize(); }
int main(int argc, char** argv) { int rc; opal_thread_t* thr1; opal_thread_t* thr2; test_init("opal_condition_t"); rc = opal_init(&argc, &argv); test_verify_int(OPAL_SUCCESS, rc); if (OPAL_SUCCESS != rc) { test_finalize(); exit(1); } opal_set_using_threads(true); OBJ_CONSTRUCT(&mutex, opal_mutex_t); OBJ_CONSTRUCT(&thr1_cond, opal_condition_t); OBJ_CONSTRUCT(&thr2_cond, opal_condition_t); thr1 = OBJ_NEW(opal_thread_t); thr2 = OBJ_NEW(opal_thread_t); thr1->t_run = thr1_run; thr2->t_run = thr2_run; rc = opal_thread_start(thr1); test_verify_int(OPAL_SUCCESS, rc); rc = opal_thread_start(thr2); test_verify_int(OPAL_SUCCESS, rc); rc = opal_thread_join(thr1, NULL); test_verify_int(OPAL_SUCCESS, rc); test_verify_int(TEST_COUNT, thr1_count); rc = opal_thread_join(thr2, NULL); test_verify_int(OPAL_SUCCESS, rc); test_verify_int(TEST_COUNT, thr2_count); opal_finalize(); return test_finalize(); }
void test2(void) { ompi_free_list_t key_list; ompi_free_list_item_t * new_value; ompi_rb_tree_t tree; int rc, i, size; void * result, * lookup; void * mem[NUM_ALLOCATIONS]; ompi_free_list_item_t * key_array[NUM_ALLOCATIONS]; struct timeval start, end; OBJ_CONSTRUCT(&key_list, ompi_free_list_t); ompi_free_list_init_new(&key_list, sizeof(ompi_test_rb_value_t), CACHE_LINE_SIZE, OBJ_CLASS(ompi_test_rb_value_t), 0,CACHE_LINE_SIZE, 0, -1 , 128, NULL); OBJ_CONSTRUCT(&tree, ompi_rb_tree_t); rc = ompi_rb_tree_init(&tree, mem_node_compare); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly initialize the tree"); } size = 1; for(i = 0; i < NUM_ALLOCATIONS; i++) { mem[i] = malloc(size); if(NULL == mem[i]) { test_failure("system out of memory"); return; } OMPI_FREE_LIST_GET(&key_list, new_value, rc); if(OMPI_SUCCESS != rc) { test_failure("failed to get memory from free list"); } key_array[i] = new_value; ((ompi_test_rb_value_t *) new_value)->key.bottom = mem[i]; ((ompi_test_rb_value_t *) new_value)->key.top = (void *) ((size_t) mem[i] + size - 1); ((ompi_test_rb_value_t *) new_value)->registered_mpools[0] = (void *) i; rc = ompi_rb_tree_insert(&tree, &((ompi_test_rb_value_t *)new_value)->key, new_value); if(OMPI_SUCCESS != rc) { test_failure("failed to properly insert a new node"); } size += 1; } gettimeofday(&start, NULL); for(i = 0; i < NUM_ALLOCATIONS; i++) { lookup = (void *) ((size_t) mem[i] + i); result = ompi_rb_tree_find(&tree, &lookup); if(NULL == result) { test_failure("lookup returned null!"); } else if(i != ((int) ((ompi_test_rb_value_t *) result)->registered_mpools[0])) { test_failure("lookup returned wrong node!"); } result = ompi_rb_tree_find(&tree, &lookup); if(NULL == result) { test_failure("lookup returned null!"); } else if(i != ((int) ((ompi_test_rb_value_t *) result)->registered_mpools[0])) { test_failure("lookup returned wrong node!"); } } gettimeofday(&end, NULL); #if 0 i = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); printf("In a %d node tree, %d lookups took %f microseonds each\n", NUM_ALLOCATIONS, NUM_ALLOCATIONS * 2, (float) i / (float) (NUM_ALLOCATIONS * 2)); #endif for(i = 0; i < NUM_ALLOCATIONS; i++) { if(NULL != mem[i]) { free(mem[i]); } OMPI_FREE_LIST_RETURN(&(key_list), key_array[i]); } OBJ_DESTRUCT(&tree); OBJ_DESTRUCT(&key_list); }
void test1(void) { ompi_rb_tree_t tree; int rc; void * result; OBJ_CONSTRUCT(&tree, ompi_rb_tree_t); rc = ompi_rb_tree_init(&tree, comp_fn); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly initialize the tree"); } rc = ompi_rb_tree_insert(&tree, &keys[0], &values[0]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[0]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[0], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[1], &values[1]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[1]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[1], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[2], &values[2]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[2]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[2], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[3], &values[3]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[3]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[3], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[4], &values[4]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[4]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[4], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[5], &values[5]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[5]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[5], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[6], &values[6]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[6]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[6], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[7], &values[7]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[7]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[7], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_size(&tree); if(!test_verify_int(8, rc)) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_delete(&tree, &keys[0]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly delete a node"); } result = ompi_rb_tree_find(&tree, &keys[0]); if(NULL != result) { test_failure("lookup returned a value instead of null!"); } else { test_success(); } OBJ_DESTRUCT(&tree); }
int main(int argc, char **argv) { /* local variables */ opal_list_t list, x; size_t indx,i,list_size, tmp_size_1, tmp_size_2,size_elements; int error_cnt, rc; test_data_t *elements, *ele; opal_list_item_t *item; rc = opal_init_util(&argc, &argv); test_verify_int(OPAL_SUCCESS, rc); if (OPAL_SUCCESS != rc) { test_finalize(); exit(1); } test_init("opal_list_t"); /* initialize list */ OBJ_CONSTRUCT(&list, opal_list_t); OBJ_CONSTRUCT(&x, opal_list_t); /* check length of list */ list_size=opal_list_get_size(&list); if( 0 == list_size ) { test_success(); } else { test_failure(" opal_list_get_size"); } /* check for empty */ if (opal_list_is_empty(&list)) { test_success(); } else { test_failure(" opal_list_is_empty(empty list)"); } /* create test elements */ size_elements=4; elements=(test_data_t *)malloc(sizeof(test_data_t)*size_elements); assert(elements); for(i=0 ; i < size_elements ; i++) { OBJ_CONSTRUCT(elements + i, test_data_t); (elements+i)->data=i; } /* populate list */ for(i=0 ; i < size_elements ; i++) { opal_list_append(&list,(opal_list_item_t *)(elements+i)); } list_size=opal_list_get_size(&list); if( list_size == size_elements ) { test_success(); } else { test_failure(" populating list"); } /* checking for empty on non-empty list */ if (!opal_list_is_empty(&list)) { test_success(); } else { test_failure(" opal_list_is_empty(non-empty list)"); } /* check that list is ordered as expected */ i=0; error_cnt=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { if( ele->data != i ) error_cnt++; i++; } if( 0 == error_cnt ) { test_success(); } else { test_failure(" error in list order "); } /* check opal_list_get_first */ ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_get_first(&list); assert(ele); if( 0 == ele->data ) { test_success(); } else { test_failure(" error in opal_list_get_first"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_get_first - list size changed "); } /* check opal_list_get_last */ ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_get_last(&list); assert(ele); if( (size_elements-1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_get_last"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_get_first - list size changed "); } /* check opal_list_remove_first */ ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_remove_first(&list); assert(ele); if( 0 == ele->data ) { test_success(); } else { test_failure(" error in opal_list_remove_first"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( (size_elements-1) == i ) { test_success(); } else { test_failure(" error in opal_list_remove_first - list size changed "); } /* test opal_list_prepend */ opal_list_prepend(&list,(opal_list_item_t *)elements); ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_get_first(&list); assert(ele); if( 0 == ele->data ) { test_success(); } else { test_failure(" error in opal_list_prepend"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_prepend - list size changed "); } /* check opal_list_remove_last */ ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_remove_last(&list); assert(ele); if( (size_elements-1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_remove_last"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( (size_elements-1) == i ) { test_success(); } else { test_failure(" error in opal_list_remove_last - list size changed "); } /* test opal_list_append */ opal_list_append(&list,(opal_list_item_t *)(elements+size_elements-1)); ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_get_last(&list); assert(ele); if( (size_elements-1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_append"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_append - list size changed "); } /* remove element from list */ indx=size_elements/2; if( 0 == indx ) indx=1; assert(2 <= size_elements); ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_remove_item(&list,(opal_list_item_t *)(elements+indx)); assert(ele); if( (indx-1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_remove - previous"); } ele=(test_data_t *)(((opal_list_item_t *)ele)->opal_list_next); if( (indx+1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_remove - next"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( (size_elements-1) == i ) { test_success(); } else { test_failure(" error in opal_list_remove - list size changed incorrectly"); } /* test the insert function */ i=opal_list_insert(&list,(opal_list_item_t *)(elements+indx),indx); if( 1 == i ) { test_success(); } else { test_failure(" error in opal_list_remove_item \n"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_insert - incorrect list length"); } i=0; error_cnt=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { if( ele->data != i ) error_cnt++; i++; } if( 0 == error_cnt ) { test_success(); } else { test_failure(" error in list order - opal_list_remove_item "); } /* test the splice and join functions */ list_size = opal_list_get_size(&list); for (i = 0, item = opal_list_get_first(&list) ; i < list_size / 2 ; ++i, item = opal_list_get_next(item)) { } opal_list_splice(&x, opal_list_get_end(&x), &list, item, opal_list_get_end(&list)); tmp_size_1 = opal_list_get_size(&list); tmp_size_2 = opal_list_get_size(&x); if (tmp_size_1 != i) { test_failure(" error in splice (size of list)"); } else if (tmp_size_2 != list_size - tmp_size_1) { test_failure(" error in splice (size of x)"); } else { test_success(); } opal_list_join(&list, opal_list_get_end(&list), &x); tmp_size_1 = opal_list_get_size(&list); tmp_size_2 = opal_list_get_size(&x); if (tmp_size_1 != list_size) { test_failure(" error in join (size of list)"); } else if (tmp_size_2 != 0) { test_failure(" error in join (size of x)"); } else { test_success(); } if (NULL != elements) free(elements); opal_finalize_util (); return test_finalize(); }