tests/immsv/common/immtest.c | 4 ++++ tests/immsv/implementer/test_SaImmOiRtAttrUpdateCallbackT.c | 2 +- tests/immsv/implementer/test_cleanup.c | 3 ++- tests/immsv/management/test_cleanup.c | 3 ++- tests/immsv/management/test_saImmOmAdminOwnerFinalize.c | 1 + tests/immsv/management/test_saImmOmInitialize.c | 1 + tests/immsv/management/test_saImmOmThreadInterference.c | 10 +++++++--- 7 files changed, 18 insertions(+), 6 deletions(-)
Cleanup IMM test code and fix memory problems reported by valgrind. diff --git a/tests/immsv/common/immtest.c b/tests/immsv/common/immtest.c --- a/tests/immsv/common/immtest.c +++ b/tests/immsv/common/immtest.c @@ -18,6 +18,7 @@ #include <stdlib.h> #include <sys/time.h> #include <unistd.h> +#include <pthread.h> #include "immtest.h" const SaVersionT constImmVersion = {'A', 0x02, 0x0c}; @@ -68,6 +69,9 @@ int main(int argc, char **argv) if(test_cleanup) test_cleanup(); + /* Added pthread_exit() to remove dlopen@@GLIBC leak from valgrind */ + pthread_exit(NULL); + return rc; } diff --git a/tests/immsv/implementer/test_SaImmOiRtAttrUpdateCallbackT.c b/tests/immsv/implementer/test_SaImmOiRtAttrUpdateCallbackT.c --- a/tests/immsv/implementer/test_SaImmOiRtAttrUpdateCallbackT.c +++ b/tests/immsv/implementer/test_SaImmOiRtAttrUpdateCallbackT.c @@ -138,9 +138,9 @@ static void *test_saImmOmAccessorGet_2(v safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion), SA_AIS_OK); safassert(saImmOmAccessorInitialize(immOmHandle, &accessorHandle), SA_AIS_OK); safassert(saImmOmAccessorGet_2(accessorHandle, dn, attributeNames, &attributes), SA_AIS_OK); - safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK); assert(attributes[0]->attrValueType == SA_IMM_ATTR_SAINT32T); assert(*((SaInt32T*) attributes[0]->attrValues[0]) == int1Value); + safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK); TRACE_LEAVE(); return NULL; diff --git a/tests/immsv/implementer/test_cleanup.c b/tests/immsv/implementer/test_cleanup.c --- a/tests/immsv/implementer/test_cleanup.c +++ b/tests/immsv/implementer/test_cleanup.c @@ -64,13 +64,14 @@ static void cleanup() { /* Delete objects */ int len; - SaNameT objectName; + SaNameT objectName = {0}; SaNameT *objectNames[2] = { &objectName, NULL }; obj = objects; while(*obj) { len = strlen(*obj); objectName.length = (len > SA_MAX_NAME_LENGTH) ? SA_MAX_NAME_LENGTH : len; strncpy((char *)objectName.value, *obj, objectName.length); + objectName.value[objectName.length] = 0; rc = saImmOmAdminOwnerSet(ownerHandle, (const SaNameT **)objectNames, SA_IMM_ONE); if(rc == SA_AIS_ERR_NOT_EXIST) { diff --git a/tests/immsv/management/test_cleanup.c b/tests/immsv/management/test_cleanup.c --- a/tests/immsv/management/test_cleanup.c +++ b/tests/immsv/management/test_cleanup.c @@ -70,13 +70,14 @@ static void cleanup() { /* Delete objects */ int len; - SaNameT objectName; + SaNameT objectName = {0}; SaNameT *objectNames[2] = { &objectName, NULL }; obj = objects; while(*obj) { len = strlen(*obj); objectName.length = (len > SA_MAX_NAME_LENGTH) ? SA_MAX_NAME_LENGTH : len; strncpy((char *)objectName.value, *obj, objectName.length); + objectName.value[objectName.length] = 0; rc = saImmOmAdminOwnerSet(ownerHandle, (const SaNameT **)objectNames, SA_IMM_ONE); if(rc == SA_AIS_ERR_NOT_EXIST) { diff --git a/tests/immsv/management/test_saImmOmAdminOwnerFinalize.c b/tests/immsv/management/test_saImmOmAdminOwnerFinalize.c --- a/tests/immsv/management/test_saImmOmAdminOwnerFinalize.c +++ b/tests/immsv/management/test_saImmOmAdminOwnerFinalize.c @@ -74,4 +74,5 @@ void saImmOmAdminOwnerFinalize_03(void) /* Cleanup */ safassert(saImmOmAdminOwnerFinalize(rudeGuyHandle), SA_AIS_OK); + safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK); } diff --git a/tests/immsv/management/test_saImmOmInitialize.c b/tests/immsv/management/test_saImmOmInitialize.c --- a/tests/immsv/management/test_saImmOmInitialize.c +++ b/tests/immsv/management/test_saImmOmInitialize.c @@ -243,6 +243,7 @@ void saImmOmInitialize_10(void) test_validate(rc, SA_AIS_OK); + safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK); } void saImmOmInitialize_11(void) diff --git a/tests/immsv/management/test_saImmOmThreadInterference.c b/tests/immsv/management/test_saImmOmThreadInterference.c --- a/tests/immsv/management/test_saImmOmThreadInterference.c +++ b/tests/immsv/management/test_saImmOmThreadInterference.c @@ -88,7 +88,7 @@ void saImmOmThreadInterference_01(void) SaImmAdminOwnerHandleT ownerHandle; SaImmSearchHandleT searchHandle; SaImmCcbHandleT ccbHandle; - pthread_t threadid; + pthread_t threadid1, threadid2; SaAisErrorT rc; SaImmAttrDefinitionT_2 attrDef = { "rdn", SA_IMM_ATTR_SASTRINGT, SA_IMM_ATTR_RDN | SA_IMM_ATTR_CONFIG, NULL }; const SaImmAttrDefinitionT_2 *attrDefs[2] = { &attrDef, NULL }; @@ -123,7 +123,7 @@ void saImmOmThreadInterference_01(void) safassert(saImmOiInitialize_2(&immOiHandle, &immOiCallbacks, &immVersion), SA_AIS_OK); safassert(saImmOiImplementerSet(immOiHandle, implementerName), SA_AIS_OK); safassert(saImmOiObjectImplementerSet(immOiHandle, &objectName, SA_IMM_ONE), SA_AIS_OK); - assert(!pthread_create(&threadid, NULL, implementer_thread, &immOiHandle)); + assert(!pthread_create(&threadid1, NULL, implementer_thread, &immOiHandle)); while(!isReady) usleep(100); @@ -132,7 +132,7 @@ void saImmOmThreadInterference_01(void) isReady = 0; isOmDone = 0; isAdminOperDone = 0; - assert(!pthread_create(&threadid, NULL, lockomhandle_thread, &ownerHandle)); + assert(!pthread_create(&threadid2, NULL, lockomhandle_thread, &ownerHandle)); while(!isReady) usleep(100); @@ -166,6 +166,10 @@ done: safassert(saImmOiImplementerClear(immOiHandle), SA_AIS_OK); safassert(saImmOiFinalize(immOiHandle), SA_AIS_OK); + /* Use pthread_detach() to remove pthread_create@@GLIBC leak from valgrind */ + pthread_detach(threadid1); + pthread_detach(threadid2); + while(!isOiDone) usleep(200); ------------------------------------------------------------------------------ Introducing Performance Central, a new site from SourceForge and AppDynamics. Performance Central is your source for news, insights, analysis and resources for efficient Application Performance Management. Visit us today! http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel