tests/immsv/implementer/test_saImmOiAugmentCcbInitialize.c |  98 ++++++++++---
 1 files changed, 72 insertions(+), 26 deletions(-)


Make the counters in CcbAugment testcases thread-safe.

diff --git a/tests/immsv/implementer/test_saImmOiAugmentCcbInitialize.c 
b/tests/immsv/implementer/test_saImmOiAugmentCcbInitialize.c
--- a/tests/immsv/implementer/test_saImmOiAugmentCcbInitialize.c
+++ b/tests/immsv/implementer/test_saImmOiAugmentCcbInitialize.c
@@ -45,9 +45,11 @@ static SaAisErrorT saImmOiCcbObjectModif
 
 /* will be increased every time when any callback is called */
 static int callbackCounter = 0;
+static pthread_mutex_t callbackCounterLock = PTHREAD_MUTEX_INITIALIZER;
 
 /* count how many threads is running */
 static int threadCounter = 0;
+static pthread_mutex_t threadCounterLock = PTHREAD_MUTEX_INITIALIZER;
 
 static SaImmAttrValueT attrValues[] = { (SaImmAttrValueT)&rdnObj2, NULL };
 static SaImmAttrValuesT_2 rdnAttrValue = {
@@ -115,12 +117,56 @@ static const SaImmOiCallbacksT_2 augCall
     NULL
 };
 
+static void increaseCallbackCounter() {
+    int rc = 0;
+    rc = pthread_mutex_lock(&callbackCounterLock);
+    safassert(rc, 0);
+    callbackCounter++;
+    rc = pthread_mutex_unlock(&callbackCounterLock);
+    safassert(rc, 0);
+}
+
+static void resetCallbackCounter() {
+    int rc = 0;
+    rc = pthread_mutex_lock(&callbackCounterLock);
+    safassert(rc, 0);
+    callbackCounter = 0;
+    rc = pthread_mutex_unlock(&callbackCounterLock);
+    safassert(rc, 0);
+}
+
+static void increaseThreadCounter() {
+    int rc = 0;
+    rc = pthread_mutex_lock(&threadCounterLock);
+    safassert(rc, 0);
+    threadCounter++;
+    rc = pthread_mutex_unlock(&threadCounterLock);
+    safassert(rc, 0);
+}
+
+static void decreaseThreadCounter() {
+    int rc = 0;
+    rc = pthread_mutex_lock(&threadCounterLock);
+    safassert(rc, 0);
+    threadCounter--;
+    rc = pthread_mutex_unlock(&threadCounterLock);
+    safassert(rc, 0);
+}
+
+static void resetThreadCounter() {
+    int rc = 0;
+    rc = pthread_mutex_lock(&threadCounterLock);
+    safassert(rc, 0);
+    threadCounter = 0;
+    rc = pthread_mutex_unlock(&threadCounterLock);
+    safassert(rc, 0);
+}
 
 static void saImmOiCcbAbortCallback(SaImmOiHandleT immOiHandle,
     SaImmOiCcbIdT ccbId)
 {
     TRACE_ENTER2();
-    callbackCounter++;
+    increaseCallbackCounter();
     TRACE_LEAVE2();
 }
 
@@ -128,7 +174,7 @@ static void saImmOiCcbApplyCallback(SaIm
     SaImmOiCcbIdT ccbId)
 {
     TRACE_ENTER2();
-    callbackCounter++;
+    increaseCallbackCounter();
     TRACE_LEAVE2();
 }
 
@@ -140,7 +186,7 @@ static SaAisErrorT saImmOiCcbCompletedCa
     SaImmAdminOwnerHandleT ownerHandle=0LL;
     SaImmAttrValuesT_2** attributes=NULL;
     TRACE_ENTER2();
-    callbackCounter++;
+    increaseCallbackCounter();
     if(testAugmentSafeReadInCompleted) {
         globalRc = err = saImmOiAugmentCcbInitialize(immOiHandle, ccbId, 
&ccbHandle, &ownerHandle);
         if(err == SA_AIS_OK) {
@@ -165,7 +211,7 @@ static SaAisErrorT saImmOiCcbObjectCreat
     const SaImmAttrValuesT_2 **attr)
 {
     TRACE_ENTER2("%llu, %s, %s\n", ccbId, className, parentName->value);
-    callbackCounter++;
+    increaseCallbackCounter();
     if(saImmOiCcbObjectCreateCallback_response != SA_AIS_OK)
        safassert(saImmOiCcbSetErrorString(immOiHandle, ccbId, (SaStringT)"Set 
error string in saImmOiCcbObjectCreateCallback"), SA_AIS_OK);
     TRACE_LEAVE2();
@@ -177,7 +223,7 @@ static SaAisErrorT saImmOiCcbObjectDelet
     const SaNameT *objectName)
 {
     TRACE_ENTER2("%llu, %s\n", ccbId, objectName->value);
-    callbackCounter++;
+    increaseCallbackCounter();
     if(saImmOiCcbObjectDeleteCallback_response != SA_AIS_OK)
        safassert(saImmOiCcbSetErrorString(immOiHandle, ccbId, (SaStringT)"Set 
error string in saImmOiCcbObjectDeleteCallback"), SA_AIS_OK);
     TRACE_LEAVE2();
@@ -190,7 +236,7 @@ static SaAisErrorT saImmOiCcbObjectModif
     const SaImmAttrModificationT_2 **attrMods)
 {
     TRACE_ENTER2("%llu, %s\n", ccbId, objectName->value);
-    callbackCounter++;
+    increaseCallbackCounter();
     if(saImmOiCcbObjectModifyCallback_response != SA_AIS_OK)
        safassert(saImmOiCcbSetErrorString(immOiHandle, ccbId, (SaStringT)"Set 
error string in saImmOiCcbObjectModifyCallback"), SA_AIS_OK);
     TRACE_LEAVE2();
@@ -208,7 +254,7 @@ static SaAisErrorT saImmOiAugCcbObjectCr
     SaImmAdminOwnerHandleT ownerHandle;
 
     TRACE_ENTER2("%llu, %s, %s\n", ccbId, className, parentName->value);
-    callbackCounter++;
+    increaseCallbackCounter();
     safassert(saImmOiAugmentCcbInitialize(immOiHandle, ccbId, &ccbHandle, 
&ownerHandle), SA_AIS_OK);
     if((rc = saImmOmCcbObjectCreate_2(ccbHandle, className, parentName, (const 
SaImmAttrValuesT_2 **)createAttrValues)) == SA_AIS_OK)
        rc = saImmOmCcbApply(ccbHandle);
@@ -226,7 +272,7 @@ static SaAisErrorT saImmOiAugCcbObjectDe
     const SaNameT *objectNames[] = { &rdnObj2, NULL };
 
     TRACE_ENTER2("%llu, %s\n", ccbId, objectName->value);
-    callbackCounter++;
+    increaseCallbackCounter();
     safassert(saImmOiAugmentCcbInitialize(immOiHandle, ccbId, &ccbHandle, 
&ownerHandle), SA_AIS_OK);
     if(useAdminOwner)
        safassert(saImmOmAdminOwnerSet(ownerHandle, objectNames, SA_IMM_ONE), 
SA_AIS_OK);
@@ -247,7 +293,7 @@ static SaAisErrorT saImmOiAugCcbObjectMo
     const SaNameT *objectNames[] = { &rdnObj2, NULL };
 
     TRACE_ENTER2("%llu, %s\n", ccbId, objectName->value);
-    callbackCounter++;
+    increaseCallbackCounter();
     safassert(saImmOiAugmentCcbInitialize(immOiHandle, ccbId, &ccbHandle, 
&ownerHandle), SA_AIS_OK);
     if(useAdminOwner)
        safassert(saImmOmAdminOwnerSet(ownerHandle, objectNames, SA_IMM_ONE), 
SA_AIS_OK); 
@@ -323,7 +369,7 @@ static void *immOiObjectDispatchThread(v
 
     TRACE_ENTER();
 
-    threadCounter++;
+    increaseThreadCounter();
 
     safassert(saImmOiInitialize_2(&handle, immArg->callbacks, &immVersion), 
SA_AIS_OK);
     safassert(saImmOiImplementerSet(handle, implementerName), SA_AIS_OK);
@@ -360,7 +406,7 @@ static void *immOiObjectDispatchThread(v
     safassert(saImmOiImplementerClear(handle), SA_AIS_OK);
     safassert(saImmOiFinalize(handle), SA_AIS_OK);
 
-    threadCounter--;
+    decreaseThreadCounter();
 
     TRACE_LEAVE();
 
@@ -378,7 +424,7 @@ static void *immOiClassDispatchThread(vo
 
     TRACE_ENTER();
 
-    threadCounter++;
+    increaseThreadCounter();
 
     safassert(saImmOiInitialize_2(&handle, immArg->callbacks, &immVersion), 
SA_AIS_OK);
     safassert(saImmOiImplementerSet(handle, implementerName), SA_AIS_OK);
@@ -408,7 +454,7 @@ static void *immOiClassDispatchThread(vo
     safassert(saImmOiImplementerClear(handle), SA_AIS_OK);
     safassert(saImmOiFinalize(handle), SA_AIS_OK);
 
-    threadCounter--;
+    decreaseThreadCounter();
 
     TRACE_LEAVE();
 
@@ -435,7 +481,7 @@ static void saImmOiCcbAugmentInitialize_
     arg.callbacks = (SaImmOiCallbacksT_2 *)&augCallbacks;
     arg.implementerName = (SaImmOiImplementerNameT)__FUNCTION__;
     classDispatchThreadIsSet = 0;
-    threadCounter = 0;
+    resetThreadCounter();
     assert(pthread_create(&threadid, NULL, immOiClassDispatchThread, (void 
*)&arg) == 0);
     while(!classDispatchThreadIsSet)
        usleep(500);
@@ -443,13 +489,13 @@ static void saImmOiCcbAugmentInitialize_
     safassert(saImmOmCcbInitialize(ownerHandle, 0, &ccbHandle), SA_AIS_OK);
 
     /* create objects */
-    callbackCounter = 0;       /* reset callback counter */
+    resetCallbackCounter();
     if ((rc = config_object_create(ccbHandle, NULL, &rdnObj1)) != SA_AIS_OK)
         goto done;
 
     assert(callbackCounter == 1);
 
-    callbackCounter = 0;       /* reset callback counter */
+    resetCallbackCounter();
     if ((rc = config_object_modify(ccbHandle, &rdnObj1)) != SA_AIS_OK)
         goto done;
 
@@ -463,7 +509,7 @@ static void saImmOiCcbAugmentInitialize_
     assert(callbackCounter == 3);
 
        /* Delete objects */
-    callbackCounter = 0;       /* reset callback counter */
+    resetCallbackCounter();
     if ((rc = saImmOmCcbObjectDelete(ccbHandle, &rdnObj1)) != SA_AIS_OK)
        goto done;
 
@@ -515,7 +561,7 @@ static void saImmOiCcbAugmentInitialize_
     arg.callbacks = (SaImmOiCallbacksT_2 *)&augCallbacks;
     arg.implementerName = (SaImmOiImplementerNameT)__FUNCTION__;
     objectDispatchThreadIsSet = 0;
-    threadCounter = 0;
+    resetThreadCounter();
     assert(pthread_create(&threadid, NULL, immOiObjectDispatchThread, (void 
*)&arg) == 0);
     while(!objectDispatchThreadIsSet)
        usleep(500);
@@ -525,7 +571,7 @@ static void saImmOiCcbAugmentInitialize_
     safassert(saImmOmAdminOwnerSet(ownerHandle, objectNames, SA_IMM_ONE), 
SA_AIS_OK);
     safassert(saImmOmCcbInitialize(ownerHandle, 0, &ccbHandle), SA_AIS_OK);
 
-    callbackCounter = 0;       /* reset callback counter */
+    resetCallbackCounter();
     if ((rc = config_object_modify(ccbHandle, &rdnObj1)) != SA_AIS_OK)
         goto done;
 
@@ -540,7 +586,7 @@ static void saImmOiCcbAugmentInitialize_
         usleep(500);
     assert(callbackCounter == 3);
 
-    callbackCounter = 0;       /* reset callback counter */
+    resetCallbackCounter();
     if ((rc = saImmOmCcbObjectDelete(ccbHandle, &rdnObj1)) != SA_AIS_OK)
        goto done;
 
@@ -597,7 +643,7 @@ static void saImmOiCcbAugmentInitialize_
     arg[1].callbacks = (SaImmOiCallbacksT_2 *)&callbacks;
     arg[1].implementerName = (SaImmOiImplementerNameT)"TestImplementer2";
 
-    threadCounter = 0;
+    resetThreadCounter();
     objectDispatchThreadIsSet = 0;
     assert(pthread_create(&threadid1, NULL, immOiObjectDispatchThread, (void 
*)&(arg[0])) == 0);
     while(!objectDispatchThreadIsSet)
@@ -613,7 +659,7 @@ static void saImmOiCcbAugmentInitialize_
     safassert(saImmOmCcbInitialize(ownerHandle, 0, &ccbHandle), SA_AIS_OK);
 
     /* Modify objects */
-    callbackCounter = 0;       /* reset callback counter */
+    resetCallbackCounter();
     if ((rc = config_object_modify(ccbHandle, &rdnObj1)) != SA_AIS_OK)
         goto done;
 
@@ -628,7 +674,7 @@ static void saImmOiCcbAugmentInitialize_
     assert(callbackCounter == 6);
 
     /* Delete objects */
-    callbackCounter = 0;       /* reset callback counter */
+    resetCallbackCounter();
     if ((rc = saImmOmCcbObjectDelete(ccbHandle, &rdnObj1)) != SA_AIS_OK)
        goto done;
 
@@ -684,7 +730,7 @@ static void saImmOiCcbAugmentInitialize_
     arg[1].callbacks = (SaImmOiCallbacksT_2 *)&callbacks;
     arg[1].implementerName = (SaImmOiImplementerNameT)"TestImplementer2";
 
-    threadCounter = 0;
+    resetThreadCounter();
     objectDispatchThreadIsSet = 0;
     assert(pthread_create(&threadid1, NULL, immOiObjectDispatchThread, (void 
*)&(arg[0])) == 0);
     while(!objectDispatchThreadIsSet)
@@ -702,7 +748,7 @@ static void saImmOiCcbAugmentInitialize_
     useAdminOwner = 1;
 
     /* Modify objects */
-    callbackCounter = 0;       /* reset callback counter */
+    resetCallbackCounter();
     if ((rc = config_object_modify(ccbHandle, &rdnObj1)) != SA_AIS_OK)
         goto done;
 
@@ -717,7 +763,7 @@ static void saImmOiCcbAugmentInitialize_
     assert(callbackCounter == 6);
 
     /* Delete objects */
-    callbackCounter = 0;       /* reset callback counter */
+    resetCallbackCounter();
     if ((rc = saImmOmCcbObjectDelete(ccbHandle, &rdnObj1)) != SA_AIS_OK)
        goto done;
 

------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to