Both immomtest and immoitest works great and produce zero valgrind warnings 
with the three patches 549, 550 and 552!

Great stuff!

/Hans

On 08/27/2013 01:57 PM, Zoran Milinkovic wrote:
>   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
>
>

------------------------------------------------------------------------------
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

Reply via email to