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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel