From 1edeed27375082de33b5669308890dc8a64f26af Mon Sep 17 00:00:00 2001 From: Ralph Castain Date: Tue, 17 Aug 2004 15:04:56 +0000 Subject: [PATCH] Fix a duplicate instance call that is not noticed by the Mac, but apparently is noticed by others. Continue installing internal tests. This commit was SVN r2180. --- src/mca/gpr/base/gpr_base_open.c | 48 ++++++++ src/mca/gpr/proxy/gpr_proxy_component.c | 25 ----- src/mca/gpr/replica/gpr_replica_component.c | 47 -------- src/mca/gpr/replica/gpr_replica_internals.c | 117 +++++++++++++++++--- 4 files changed, 152 insertions(+), 85 deletions(-) diff --git a/src/mca/gpr/base/gpr_base_open.c b/src/mca/gpr/base/gpr_base_open.c index 71fb21bb6d..5cc9051ea6 100644 --- a/src/mca/gpr/base/gpr_base_open.c +++ b/src/mca/gpr/base/gpr_base_open.c @@ -45,6 +45,54 @@ OBJ_CLASS_INSTANCE( ompi_registry_value_destructor); /* destructor */ +/* constructor - used to initialize state of index_value instance */ +static void ompi_registry_index_value_construct(ompi_registry_index_value_t* value) +{ + value->token = NULL; +} + +/* destructor - used to free any resources held by instance */ +static void ompi_registry_index_value_destructor(ompi_registry_index_value_t* value) +{ + if (value->token) { + free(value->token); + } +} + +/* define instance of ompi_class_t */ +OBJ_CLASS_INSTANCE( + ompi_registry_index_value_t, /* type name */ + ompi_list_item_t, /* parent "class" name */ + ompi_registry_index_value_construct, /* constructor */ + ompi_registry_index_value_destructor); /* destructor */ + + +/* constructor - used to initialize state of test results instance */ +static void ompi_registry_internal_test_results_construct(ompi_registry_internal_test_results_t* results) +{ + results->test = NULL; + results->message = NULL; +} + +/* destructor - used to free any resources held by instance */ +static void ompi_registry_internal_test_results_destructor(ompi_registry_internal_test_results_t* results) +{ + if (NULL != results->test) { + free(results->test); + } + if (NULL != results->message) { + free(results->message); + } +} + +/* define instance of ompi_class_t */ +OBJ_CLASS_INSTANCE( + ompi_registry_internal_test_results_t, /* type name */ + ompi_list_item_t, /* parent "class" name */ + ompi_registry_internal_test_results_construct, /* constructor */ + ompi_registry_internal_test_results_destructor); /* destructor */ + + /* * Global variables diff --git a/src/mca/gpr/proxy/gpr_proxy_component.c b/src/mca/gpr/proxy/gpr_proxy_component.c index c99bbe0b84..ee11787157 100644 --- a/src/mca/gpr/proxy/gpr_proxy_component.c +++ b/src/mca/gpr/proxy/gpr_proxy_component.c @@ -67,31 +67,6 @@ static bool initialized = false; */ ompi_process_name_t *mca_gpr_my_replica; -/* constructor - used to initialize state of test results instance */ -static void ompi_registry_internal_test_results_construct(ompi_registry_internal_test_results_t* results) -{ - results->test = NULL; - results->message = NULL; -} - -/* destructor - used to free any resources held by instance */ -static void ompi_registry_internal_test_results_destructor(ompi_registry_internal_test_results_t* results) -{ - if (NULL != results->test) { - free(results->test); - } - if (NULL != results->message) { - free(results->message); - } -} - -/* define instance of ompi_class_t */ -OBJ_CLASS_INSTANCE( - ompi_registry_internal_test_results_t, /* type name */ - ompi_list_item_t, /* parent "class" name */ - ompi_registry_internal_test_results_construct, /* constructor */ - ompi_registry_internal_test_results_destructor); /* destructor */ - /* * don't really need this function - could just put NULL in the above structure diff --git a/src/mca/gpr/replica/gpr_replica_component.c b/src/mca/gpr/replica/gpr_replica_component.c index 602d6ef0b7..bad3a67c89 100644 --- a/src/mca/gpr/replica/gpr_replica_component.c +++ b/src/mca/gpr/replica/gpr_replica_component.c @@ -94,32 +94,6 @@ OBJ_CLASS_INSTANCE( mca_gpr_keytable_destructor); /* destructor */ -/* constructor - used to initialize state of test results instance */ -static void ompi_registry_internal_test_results_construct(ompi_registry_internal_test_results_t* results) -{ - results->test = NULL; - results->message = NULL; -} - -/* destructor - used to free any resources held by instance */ -static void ompi_registry_internal_test_results_destructor(ompi_registry_internal_test_results_t* results) -{ - if (NULL != results->test) { - free(results->test); - } - if (NULL != results->message) { - free(results->message); - } -} - -/* define instance of ompi_class_t */ -OBJ_CLASS_INSTANCE( - ompi_registry_internal_test_results_t, /* type name */ - ompi_list_item_t, /* parent "class" name */ - ompi_registry_internal_test_results_construct, /* constructor */ - ompi_registry_internal_test_results_destructor); /* destructor */ - - /* constructor - used to initialize state of keylist instance */ static void mca_gpr_keylist_construct(mca_gpr_keylist_t* keylist) { @@ -138,27 +112,6 @@ OBJ_CLASS_INSTANCE( mca_gpr_keylist_construct, /* constructor */ mca_gpr_keylist_destructor); /* destructor */ -/* constructor - used to initialize state of index_value instance */ -static void mca_gpr_index_value_construct(ompi_registry_index_value_t* value) -{ - value->token = NULL; -} - -/* destructor - used to free any resources held by instance */ -static void mca_gpr_index_value_destructor(ompi_registry_index_value_t* value) -{ - if (value->token) { - free(value->token); - } -} - -/* define instance of ompi_class_t */ -OBJ_CLASS_INSTANCE( - ompi_registry_index_value_t, /* type name */ - ompi_list_item_t, /* parent "class" name */ - mca_gpr_index_value_construct, /* constructor */ - mca_gpr_index_value_destructor); /* destructor */ - /* constructor - used to initialize state of subscriber list instance */ static void mca_gpr_subscriber_list_construct(mca_gpr_subscriber_list_t* subscriber) diff --git a/src/mca/gpr/replica/gpr_replica_internals.c b/src/mca/gpr/replica/gpr_replica_internals.c index 0545c4656e..6cd05f4497 100644 --- a/src/mca/gpr/replica/gpr_replica_internals.c +++ b/src/mca/gpr/replica/gpr_replica_internals.c @@ -315,34 +315,65 @@ ompi_list_t *gpr_replica_test_internals(int level) { ompi_list_t *test_results; ompi_registry_internal_test_results_t *result; - char name[30]; - int i; - mca_gpr_replica_key_t segkey; + char name[30], name2[30]; + int i, j; + mca_gpr_replica_key_t segkey, key; mca_gpr_registry_segment_t *seg; + mca_gpr_keytable_t *dict_entry; + bool success; test_results = OBJ_NEW(ompi_list_t); /* create several test segments */ + success = true; + result = OBJ_NEW(ompi_registry_internal_test_results_t); + result->test = strdup("test-create-segment"); for (i=0; i<5; i++) { sprintf(name, "test-def-seg%d", i); - result = OBJ_NEW(ompi_registry_internal_test_results_t); - result->test = strdup(name); if (OMPI_SUCCESS != gpr_replica_define_segment(name)) { - result->message = strdup("failed"); - } else { - result->message = strdup("success"); + success = false; } - ompi_list_append(test_results, &result->item); } + if (success) { + result->message = strdup("success"); + } else { + result->message = strdup("failed"); + } + ompi_list_append(test_results, &result->item); + + /* check that define key protects uniqueness */ + success = true; + result = OBJ_NEW(ompi_registry_internal_test_results_t); + result->test = strdup("test-define-key-uniqueness"); + for (i=0; i<5; i++) { + sprintf(name, "test-def-seg%d", i); + key = gpr_replica_define_key(name, NULL); + if (MCA_GPR_REPLICA_KEY_MAX != key) { /* got an error */ + success = false; + } + } + if (success) { + result->message = strdup("success"); + } else { + result->message = strdup("failed"); + } + ompi_list_append(test_results, &result->item); /* check ability to get key for a segment */ + success = true; result = OBJ_NEW(ompi_registry_internal_test_results_t); result->test = strdup("test-get-seg-key"); - segkey = gpr_replica_get_key(name, NULL); - if (MCA_GPR_REPLICA_KEY_MAX == segkey) { /* couldn't find it */ - asprintf(&result->message, "failed to find segment %s", name); + for (i=0; i<5; i++) { + sprintf(name, "test-def-seg%d", i); + key = gpr_replica_get_key(name, NULL); + if (MCA_GPR_REPLICA_KEY_MAX == key) { /* got an error */ + success = false; + } + } + if (success) { + result->message = strdup("success"); } else { - asprintf(&result->message, "success: %d", segkey); + result->message = strdup("failed"); } ompi_list_append(test_results, &result->item); @@ -364,5 +395,65 @@ ompi_list_t *gpr_replica_test_internals(int level) } ompi_list_append(test_results, &result->item); + /* check ability to define key within a segment */ + success = true; + result = OBJ_NEW(ompi_registry_internal_test_results_t); + result->test = strdup("test-define-key"); + for (i=0; i<5 && success; i++) { + sprintf(name, "test-def-seg%d", i); + for (j=0; j<10 && success; j++) { + sprintf(name2, "test-key%d", j); + key = gpr_replica_define_key(name, name2); + if (MCA_GPR_REPLICA_KEY_MAX == key) { /* got an error */ + success = false; + } + } + } + if (success) { + result->message = strdup("success"); + } else { + result->message = strdup("failed"); + } + ompi_list_append(test_results, &result->item); + + /* check ability to get dictionary entries */ + success = true; + result = OBJ_NEW(ompi_registry_internal_test_results_t); + result->test = strdup("test-get-dict-entry"); + /* first check ability to get segment values */ + for (i=0; i<5 && success; i++) { + sprintf(name, "test-def-seg%d", i); + dict_entry = gpr_replica_find_dict_entry(name, NULL); + if (NULL == dict_entry) { /* got an error */ + success = false; + } + } + if (success) { + result->message = strdup("success"); + } else { + result->message = strdup("failed"); + } + ompi_list_append(test_results, &result->item); + + if (success) { /* segment values checked out - move on to within a segment */ + result = OBJ_NEW(ompi_registry_internal_test_results_t); + result->test = strdup("test-get-dict-entry-segment"); + for (i=0; i<5; i++) { + sprintf(name, "test-def-seg%d", i); + for (j=0; j<10; j++) { + sprintf(name2, "test-key%d", j); + dict_entry = gpr_replica_find_dict_entry(name, NULL); + if (NULL == dict_entry) { /* got an error */ + success = false; + } + } + } + if (success) { + result->message = strdup("success"); + } else { + result->message = strdup("failed"); + } + ompi_list_append(test_results, &result->item); + } return test_results; }