Hi all, Do we have any comments on the latest patch? If not, can we push it for 4.5 FC? I have a small patch that Lennart recommended to add the test info in README, so if who's going to push to repo please help to add this path too.
Thanks, Minh diff --git a/tests/ntfsv/README b/tests/ntfsv/README --- a/tests/ntfsv/README +++ b/tests/ntfsv/README @@ -32,4 +32,9 @@ and IMMSV_PBE_FILE. (3) activate pbe, immcfg -a saImmRepositoryInit=1 safRdn= immManagement,safApp=safImmService - +The test suite 35 has been added for the test of create/modify/delete object +having extended name attribute (#873). This test suite also requires the +ntfsv_test_classes.xml loaded, and extended name must be enabled in IMM by +following steps: +- Enable SA_ENABLE_EXTENDED_NAMES=1 in immnd.conf +- immcfg -m -a longDnsAllowed=1 opensafImm=opensafImm,safApp=safImmService On 8/8/2014 8:46 PM, Lennart Lund wrote: > Hi Minh, > > Have you added this information to the README file in the .../test/ntfsv/ > directory? > If not please do so. > > Thanks > Lennart > >> -----Original Message----- >> From: minhchau [mailto:minh.c...@dektech.com.au] >> Sent: den 8 augusti 2014 12:09 >> To: praveen malviya; Anders Widell; mathi.naic...@oracle.com; Anders >> Björnerstedt; Zoran Milinkovic >> Cc: opensaf-devel@lists.sourceforge.net >> Subject: Re: [devel] [PATCH 6 of 6] NTF: Add ntftest test cases for >> notification >> with long dn objects [#873] V3 >> >> Hi Praveen, >> >> The suite 35 requires IMM enables EXTENDED_NAME, so you need: >> - Enable SA_ENABLE_EXTENDED_NAMES=1 in immnd.conf >> - immcfg -m -a longDnsAllowed=1 >> opensafImm=opensafImm,safApp=safImmService >> >> Thanks, >> Minh >> On 8/8/2014 7:49 PM, praveen malviya wrote: >>> Hi Minh, >>> >>> Some how test cases of new suite 35 fails with >>> SA_AIS_ERR_FAILED_OPERATION. >>> Any prerequisite for executing them? >>> >>> -Praveen >>> >>> >>> On 08-Aug-14 12:28 PM, Minh Hon Chau wrote: >>>> tests/ntfsv/Makefile.am | 3 +- >>>> tests/ntfsv/test_ntf_imcn.c | 508 ++++++++++++++- >>>> tests/ntfsv/tet_longDnObject_notification.c | 972 >>>> ++++++++++++++++++++++++++++ >>>> tests/unit_test_fw/inc/util.h | 5 +- >>>> tests/unit_test_fw/src/Makefile.am | 1 + >>>> tests/unit_test_fw/src/util.c | 14 +- >>>> 6 files changed, 1483 insertions(+), 20 deletions(-) >>>> >>>> >>>> (1) Add testcase for AdditionInfo with extended name >>>> >>>> (2) Add testcase for create/modify/delete runtime&config object with >>>> extended name attribute >>>> >>>> diff --git a/tests/ntfsv/Makefile.am b/tests/ntfsv/Makefile.am >>>> --- a/tests/ntfsv/Makefile.am >>>> +++ b/tests/ntfsv/Makefile.am >>>> @@ -64,7 +64,8 @@ ntftest_SOURCES = \ >>>> tet_saNtfPtrValAllocate.c \ >>>> tet_saNtfArrayValGet.c \ >>>> tet_saNtfPtrValGet.c \ >>>> - test_ntfFilterVerification.c >>>> + test_ntfFilterVerification.c \ >>>> + tet_longDnObject_notification.c >>>> >>>> ntftest_LDADD = \ >>>> $(top_builddir)/tests/unit_test_fw/src/libutest.la >>>> diff --git a/tests/ntfsv/test_ntf_imcn.c b/tests/ntfsv/test_ntf_imcn.c >>>> --- a/tests/ntfsv/test_ntf_imcn.c >>>> +++ b/tests/ntfsv/test_ntf_imcn.c >>>> @@ -39,6 +39,12 @@ >>>> static SaNtfHandleT ntfHandle; >>>> static NotifData rec_notif_data; >>>> static SaImmOiHandleT immOiHnd = 0; >>>> +#define DEFAULT_EXT_NAME_LENGTH 300 >>>> +static char extended_name_string_01[DEFAULT_EXT_NAME_LENGTH]; >>>> +static char extended_name_string_02[DEFAULT_EXT_NAME_LENGTH]; >>>> + >>>> +extern void saAisNameLend(SaConstStringT value, SaNameT* name); >>>> +extern SaConstStringT saAisNameBorrow(const SaNameT* name); >>>> >>>> /** >>>> * Callback routine, called when subscribed notification arrives. >>>> @@ -976,6 +982,31 @@ static SaAisErrorT set_attr_buf(NotifDat >>>> return error; >>>> } >>>> >>>> +static SaAisErrorT set_attr_extended_name(NotifData* n_exp, >>>> SaUint16T idx, >>>> + SaNtfElementIdT attrId, SaNtfValueTypeT valType, void* >>>> attrValue) >>>> +{ >>>> + safassert(valType == SA_NTF_VALUE_LDAP_NAME, true); >>>> + SaAisErrorT error = SA_AIS_OK; >>>> + SaUint16T numAlloc = >> strlen(saAisNameBorrow((SaNameT*)attrValue)); >>>> + SaUint8T* temp = NULL; >>>> + SaUint8T* srcPtr = >> (SaUint8T*)saAisNameBorrow((SaNameT*)attrValue); >>>> + >>>> + if (n_exp->c_d_notif_ptr != NULL) { >>>> + error = saNtfPtrValAllocate(n_exp->nHandle, >>>> + numAlloc, >>>> + (void**) &temp, >>>> + &n_exp->c_d_notif_ptr->objectAttributes[idx].attributeValue); >>>> + if (error == SA_AIS_OK) { >>>> + memcpy(temp, srcPtr, numAlloc); >>>> + n_exp->c_d_notif_ptr->objectAttributes[idx].attributeId = attrId; >>>> + n_exp->c_d_notif_ptr->objectAttributes[idx].attributeType = valType; >>>> + } >>>> + } else { >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + return error; >>>> +} >>>> + >>>> /** >>>> * Set an expected attribute value, type is string. >>>> */ >>>> @@ -1038,6 +1069,34 @@ static SaAisErrorT set_attr_change_buf(N >>>> return error; >>>> } >>>> >>>> +static SaAisErrorT set_attr_change_extended_name(NotifData* n_exp, >>>> SaUint16T idx, >>>> + SaNtfElementIdT attrId, SaNtfValueTypeT valType, const void* >>>> newValue) >>>> +{ >>>> + safassert(valType == SA_NTF_VALUE_LDAP_NAME, true); >>>> + SaAisErrorT error = SA_AIS_OK; >>>> + SaUint16T numAlloc = >> strlen(saAisNameBorrow((SaNameT*)newValue)); >>>> + SaUint8T* temp = NULL; >>>> + SaUint8T* srcPtr = >> (SaUint8T*)saAisNameBorrow((SaNameT*)newValue); >>>> + >>>> + if (n_exp->a_c_notif_ptr != NULL) { >>>> + n_exp->a_c_notif_ptr->changedAttributes[idx].oldAttributePresent = >>>> SA_FALSE; >>>> + error = saNtfPtrValAllocate(n_exp->nHandle, >>>> + numAlloc, >>>> + (void**) &temp, >>>> + &n_exp->a_c_notif_ptr->changedAttributes[idx].newAttributeValue); >>>> + if (error == SA_AIS_OK) { >>>> + memcpy(temp, srcPtr, numAlloc); >>>> + n_exp->a_c_notif_ptr->changedAttributes[idx].attributeId = attrId; >>>> + n_exp->a_c_notif_ptr->changedAttributes[idx].attributeType = >> valType; >>>> + } else { >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + } else { >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + return error; >>>> +} >>>> + >>>> /** >>>> * Set expected attribute change value, type is >>>> UINT32/INT32/UINT64/INT64/FLOAT/DOUBLE. >>>> */ >>>> @@ -4256,6 +4315,432 @@ void objectDeleteTest_3404(void) >>>> test_validate(error, SA_AIS_OK); >>>> } >>>> >>>> +/** >>>> + * Create a runtime test object with extended name attribute and >>>> verify correctness >>>> + * of generated notification. >>>> + */ >>>> +void objectCreateTest_3501(void) >>>> +{ >>>> + SaAisErrorT error = SA_AIS_OK; >>>> + safassert(init_ntf(), SA_AIS_OK); >>>> + safassert(subscribe_notifications(), SA_AIS_OK); >>>> + rec_notif_data.populated = SA_FALSE; >>>> + >>>> + /* create the runtime object */ >>>> + SaInt32T int32Var = INT32VAR1; >>>> + SaUint32T uint32Var = UINT32VAR1; >>>> + SaInt64T int64Var = INT64VAR1; >>>> + SaUint64T uint64Var = UINT64VAR1; >>>> + SaTimeT timeVar = TIMEVAR1; >>>> + SaNameT nameVar; >>>> + saAisNameLend((SaConstStringT)&extended_name_string_01, >> &nameVar); >>>> + SaFloatT floatVar = FLOATVAR1; >>>> + SaDoubleT doubleVar = DOUBLEVAR1; >>>> + SaStringT stringVar = STRINGVAR1; >>>> + SaAnyT anyVar = {.bufferSize = sizeof (BUF1), .bufferAddr = >>>> (SaUint8T*) BUF1}; >>>> + >>>> + /* >>>> + * Create the object in IMM. >>>> + */ >>>> + create_rt_test_object("OsafNtfCmTestRT", DNTESTRT, int32Var, >>>> uint32Var, int64Var, uint64Var, >>>> + &timeVar, &nameVar, floatVar, doubleVar, &stringVar, >>>> &anyVar); >>>> + >>>> + /* >>>> + * Wait for notification reception. >>>> + */ >>>> + int dwCnt = 0; >>>> + while (dwCnt++ < POLLWAIT && !rec_notif_data.populated) { >>>> + saNtfDispatch(ntfHandle, SA_DISPATCH_ALL); >>>> + if (!rec_notif_data.populated) usleep(100); >>>> + } >>>> + >>>> + if (rec_notif_data.populated) { >>>> + NotifData n_exp; >>>> + safassert(set_ntf(&n_exp, SA_NTF_OBJECT_CREATION, DNTESTRT, >>>> 12, 12), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 0, 0, >>>> "SaImmAttrImplementerName"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 1, 1, "SaImmAttrClassName"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 2, 2, "testUint32"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 3, 3, "testInt32"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 4, 4, "testUint64"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 5, 5, "testInt64"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 6, 6, "testString"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 7, 7, "testFloat"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 8, 8, "testDouble"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 9, 9, "testName"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 10, 10, "testTime"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 11, 11, "testAny"), SA_AIS_OK); >>>> + safassert(set_attr_str(&n_exp, 0, 0, IMPLEMENTERNAME_RT), >>>> SA_AIS_OK); >>>> + safassert(set_attr_str(&n_exp, 1, 1, "OsafNtfCmTestRT"), >>>> SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 2, 2, SA_NTF_VALUE_UINT32, >>>> &uint32Var), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 3, 3, SA_NTF_VALUE_INT32, >>>> &int32Var), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 4, 4, SA_NTF_VALUE_UINT64, >>>> &uint64Var), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 5, 5, SA_NTF_VALUE_INT64, >>>> &int64Var), SA_AIS_OK); >>>> + safassert(set_attr_str(&n_exp, 6, 6, stringVar), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 7, 7, SA_NTF_VALUE_FLOAT, >>>> &floatVar), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 8, 8, SA_NTF_VALUE_DOUBLE, >>>> &doubleVar), SA_AIS_OK); >>>> + safassert(set_attr_extended_name(&n_exp, 9, 9, >>>> SA_NTF_VALUE_LDAP_NAME, &nameVar), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 10, 10, >>>> SA_NTF_VALUE_INT64, &timeVar), SA_AIS_OK); >>>> + safassert(set_attr_buf(&n_exp, 11, 11, SA_NTF_VALUE_BINARY, >>>> &anyVar), SA_AIS_OK); >>>> + >>>> + if (!compare_notifs(&n_exp, &rec_notif_data)) { >>>> + print_notif(&n_exp); >>>> + print_notif(&rec_notif_data); >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + >>>> + safassert(saNtfNotificationFree(rec_notif_data.nHandle), SA_AIS_OK); >>>> + safassert(saNtfNotificationFree(n_exp.nHandle), SA_AIS_OK); >>>> + } else { >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(unsub_notifications(), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + test_validate(error, SA_AIS_OK); >>>> +} >>>> + >>>> +/** >>>> + * Modify a runtime test object with extended name attribute and >>>> verify correctness >>>> + * of generated notification. >>>> + */ >>>> +void objectModifyTest_3502(void) >>>> +{ >>>> + SaAisErrorT error = SA_AIS_OK; >>>> + safassert(init_ntf(), SA_AIS_OK); >>>> + safassert(subscribe_notifications(), SA_AIS_OK); >>>> + rec_notif_data.populated = SA_FALSE; >>>> + >>>> + SaNameT var1; >>>> + saAisNameLend((SaConstStringT)&extended_name_string_02, >> &var1); >>>> + >>>> + SaAnyT var2 = {.bufferSize = sizeof (BUF2), .bufferAddr = >>>> (SaUint8T*) BUF2}; >>>> + void* v1[] = {&var1}; >>>> + void* v2[] = {&var2}; >>>> + TestAttributeValue att1 = { >>>> + .attrName = "testName", .attrType = SA_IMM_ATTR_SANAMET, >>>> .attrValues = v1 >>>> + }; >>>> + TestAttributeValue att2 = { >>>> + .attrName = "testAny", .attrType = SA_IMM_ATTR_SAANYT, >>>> .attrValues = v2 >>>> + }; >>>> + TestAttributeValue * attrs[] = {&att1, &att2, NULL}; >>>> + >>>> + /* >>>> + * Modify (REPLACE) the object in IMM. >>>> + */ >>>> + modify_rt_test_object(DNTESTRT, SA_IMM_ATTR_VALUES_REPLACE, >> attrs); >>>> + >>>> + /* >>>> + * Wait for notification reception. >>>> + */ >>>> + int dwCnt = 0; >>>> + while (dwCnt++ < POLLWAIT && !rec_notif_data.populated) { >>>> + saNtfDispatch(ntfHandle, SA_DISPATCH_ALL); >>>> + if (!rec_notif_data.populated) usleep(100); >>>> + } >>>> + >>>> + if (rec_notif_data.populated) { >>>> + NotifData n_exp; >>>> + safassert(set_ntf(&n_exp, SA_NTF_ATTRIBUTE_CHANGED, >>>> DNTESTRT, 4, 4), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 0, 0, >>>> "SaImmAttrImplementerName"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 1, 1, "SaImmAttrClassName"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 2, 2, "testName"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 3, 3, "testAny"), SA_AIS_OK); >>>> + safassert(set_attr_change_str(&n_exp, 0, 0, >>>> IMPLEMENTERNAME_RT), SA_AIS_OK); >>>> + safassert(set_attr_change_str(&n_exp, 1, 1, >>>> "OsafNtfCmTestRT"), SA_AIS_OK); >>>> + safassert(set_attr_change_extended_name(&n_exp, 2, 2, >>>> SA_NTF_VALUE_LDAP_NAME, &var1), SA_AIS_OK); >>>> + safassert(set_attr_change_buf(&n_exp, 3, 3, >>>> SA_NTF_VALUE_BINARY, &var2), SA_AIS_OK); >>>> + >>>> + if (!compare_notifs(&n_exp, &rec_notif_data)) { >>>> + print_notif(&n_exp); >>>> + print_notif(&rec_notif_data); >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(saNtfNotificationFree(rec_notif_data.nHandle), SA_AIS_OK); >>>> + safassert(saNtfNotificationFree(n_exp.nHandle), SA_AIS_OK); >>>> + } else { >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(unsub_notifications(), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + test_validate(error, SA_AIS_OK); >>>> +} >>>> + >>>> + >>>> +/** >>>> + * Modify a runtime test object with extended name attribute and >>>> verify correctness >>>> + * of generated notification. >>>> + */ >>>> +void objectModifyTest_3503(void) >>>> +{ >>>> + SaAisErrorT error = SA_AIS_OK; >>>> + safassert(init_ntf(), SA_AIS_OK); >>>> + safassert(subscribe_notifications(), SA_AIS_OK); >>>> + rec_notif_data.populated = SA_FALSE; >>>> + >>>> + /* modify the runtime object */ >>>> + >>>> + SaNameT oldvar; >>>> + saAisNameLend((SaConstStringT)&extended_name_string_02, >> &oldvar); >>>> + SaNameT addvar; >>>> + saAisNameLend((SaConstStringT)&extended_name_string_01, >> &addvar); >>>> + void* v[] = {&addvar}; >>>> + TestAttributeValue att = { >>>> + .attrName = "testName", .attrType = SA_IMM_ATTR_SANAMET, >>>> .attrValues = v >>>> + }; >>>> + TestAttributeValue * attrs[] = {&att, NULL}; >>>> + >>>> + /* >>>> + * Modify (ADD) the object in IMM. >>>> + */ >>>> + modify_rt_test_object(DNTESTRT, SA_IMM_ATTR_VALUES_ADD, >> attrs); >>>> + >>>> + /* >>>> + * Wait for notification reception. >>>> + */ >>>> + int dwCnt = 0; >>>> + while (dwCnt++ < POLLWAIT && !rec_notif_data.populated) { >>>> + saNtfDispatch(ntfHandle, SA_DISPATCH_ALL); >>>> + if (!rec_notif_data.populated) usleep(100); >>>> + } >>>> + >>>> + if (rec_notif_data.populated) { >>>> + NotifData n_exp; >>>> + safassert(set_ntf(&n_exp, SA_NTF_ATTRIBUTE_CHANGED, >>>> DNTESTRT, 3, 4), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 0, 0, >>>> "SaImmAttrImplementerName"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 1, 1, "SaImmAttrClassName"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 2, 2, "testName"), SA_AIS_OK); >>>> + safassert(set_attr_change_str(&n_exp, 0, 0, >>>> IMPLEMENTERNAME_RT), SA_AIS_OK); >>>> + safassert(set_attr_change_str(&n_exp, 1, 1, >>>> "OsafNtfCmTestRT"), SA_AIS_OK); >>>> + safassert(set_attr_change_extended_name(&n_exp, 2, 2, >>>> SA_NTF_VALUE_LDAP_NAME, &oldvar), SA_AIS_OK); >>>> + safassert(set_attr_change_extended_name(&n_exp, 3, 2, >>>> SA_NTF_VALUE_LDAP_NAME, &addvar), SA_AIS_OK); >>>> + >>>> + if (!compare_notifs(&n_exp, &rec_notif_data)) { >>>> + print_notif(&n_exp); >>>> + print_notif(&rec_notif_data); >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(saNtfNotificationFree(rec_notif_data.nHandle), SA_AIS_OK); >>>> + safassert(saNtfNotificationFree(n_exp.nHandle), SA_AIS_OK); >>>> + } else { >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(unsub_notifications(), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + test_validate(error, SA_AIS_OK); >>>> +} >>>> + >>>> + >>>> +/** >>>> + * Create a config object with extended name attribute and verify >>>> correctness of >>>> + * generated notification. >>>> + */ >>>> +void objectCreateTest_3505(void) >>>> +{ >>>> + char command[1024]; >>>> + SaAisErrorT error = SA_AIS_OK; >>>> + safassert(init_ntf(), SA_AIS_OK); >>>> + safassert(subscribe_notifications(), SA_AIS_OK); >>>> + rec_notif_data.populated = SA_FALSE; >>>> + >>>> + /* create an object */ >>>> + sprintf(command, "immcfg -t 20 -c OsafNtfCmTestCFG %s -a >>>> testNameCfg=%s -a testStringCfg=%s -a testAnyCfg=%s", >>>> + DNTESTCFG, extended_name_string_01, STRINGVAR1, BUF1); >>>> + assert(system(command) != -1); >>>> + >>>> + /* >>>> + * Wait for notification reception. >>>> + */ >>>> + int dwCnt = 0; >>>> + while (dwCnt++ < POLLWAIT && !rec_notif_data.populated) { >>>> + saNtfDispatch(ntfHandle, SA_DISPATCH_ALL); >>>> + if (!rec_notif_data.populated) usleep(100); >>>> + } >>>> + >>>> + if (rec_notif_data.populated) { >>>> + NotifData n_exp; >>>> + SaInt32T int32Var = INT32VAR1; >>>> + SaUint32T uint32Var = UINT32VAR1; >>>> + SaInt64T int64Var = INT64VAR1; >>>> + SaUint64T uint64Var = UINT64VAR1; >>>> + SaTimeT timeVar = TIMEVAR1; >>>> + SaNameT nameVar; >>>> + saAisNameLend((SaConstStringT)&extended_name_string_01, >> &nameVar); >>>> + SaFloatT floatVar = FLOATVAR1; >>>> + SaDoubleT doubleVar = DOUBLEVAR1; >>>> + SaStringT stringVar = STRINGVAR1; >>>> + SaAnyT anyVar = {.bufferSize = sizeof (BUF1), .bufferAddr = >>>> (SaUint8T*) BUF1}; >>>> + >>>> + safassert(set_ntf(&n_exp, SA_NTF_OBJECT_CREATION, >> DNTESTCFG, >>>> 14, 14), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 0, 0, >>>> "SaImmAttrAdminOwnerName"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 1, 1, "SaImmAttrClassName"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 2, 2, "SaImmOiCcbIdT"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 3, 3, "ccbLast"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 4, 4, "testUint32Cfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 5, 5, "testInt32Cfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 6, 6, "testUint64Cfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 7, 7, "testInt64Cfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 8, 8, "testStringCfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 9, 9, "testFloatCfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 10, 10, "testDoubleCfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 11, 11, "testNameCfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 12, 12, "testTimeCfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 13, 13, "testAnyCfg"), >>>> SA_AIS_OK); >>>> + safassert(set_attr_str(&n_exp, 0, 0, "immcfg_xxx"), SA_AIS_OK); >>>> + safassert(set_attr_str(&n_exp, 1, 1, "OsafNtfCmTestCFG"), >>>> SA_AIS_OK); >>>> + SaUint64T ccidVar = 2; >>>> + safassert(set_attr_scalar(&n_exp, 2, 2, SA_NTF_VALUE_UINT64, >>>> &ccidVar), SA_AIS_OK); >>>> + SaUint32T ccbLast = 1; >>>> + safassert(set_attr_scalar(&n_exp, 3, 3, SA_NTF_VALUE_UINT32, >>>> &ccbLast), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 4, 4, SA_NTF_VALUE_UINT32, >>>> &uint32Var), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 5, 5, SA_NTF_VALUE_INT32, >>>> &int32Var), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 6, 6, SA_NTF_VALUE_UINT64, >>>> &uint64Var), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 7, 7, SA_NTF_VALUE_INT64, >>>> &int64Var), SA_AIS_OK); >>>> + safassert(set_attr_str(&n_exp, 8, 8, stringVar), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 9, 9, SA_NTF_VALUE_FLOAT, >>>> &floatVar), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 10, 10, >>>> SA_NTF_VALUE_DOUBLE, &doubleVar), SA_AIS_OK); >>>> + safassert(set_attr_extended_name(&n_exp, 11, 11, >>>> SA_NTF_VALUE_LDAP_NAME, &nameVar), SA_AIS_OK); >>>> + safassert(set_attr_scalar(&n_exp, 12, 12, >>>> SA_NTF_VALUE_INT64, &timeVar), SA_AIS_OK); >>>> + safassert(set_attr_buf(&n_exp, 13, 13, SA_NTF_VALUE_BINARY, >>>> &anyVar), SA_AIS_OK); >>>> + >>>> + if (!compare_notifs(&n_exp, &rec_notif_data)) { >>>> + print_notif(&n_exp); >>>> + print_notif(&rec_notif_data); >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(saNtfNotificationFree(rec_notif_data.nHandle), SA_AIS_OK); >>>> + safassert(saNtfNotificationFree(n_exp.nHandle), SA_AIS_OK); >>>> + } else { >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(unsub_notifications(), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + test_validate(error, SA_AIS_OK); >>>> +} >>>> + >>>> + >>>> +/** >>>> + * Modify a config object with extended name and verify correctness >>>> + * of generated notification. >>>> + */ >>>> +void objectModifyTest_3506(void) >>>> +{ >>>> + char command[1024]; >>>> + SaAisErrorT error = SA_AIS_OK; >>>> + safassert(init_ntf(), SA_AIS_OK); >>>> + safassert(subscribe_notifications(), SA_AIS_OK); >>>> + rec_notif_data.populated = SA_FALSE; >>>> + >>>> + SaNameT var1; >>>> + saAisNameLend((SaConstStringT)&extended_name_string_02, >> &var1); >>>> + >>>> + SaAnyT var2 = {.bufferSize = sizeof (BUF2), .bufferAddr = >>>> (SaUint8T*) BUF2}; >>>> + >>>> + /* modify an object */ >>>> + sprintf(command, "immcfg -t 20 -a testNameCfg=%s -a >>>> testAnyCfg=%s %s", >>>> + extended_name_string_02, BUF2, DNTESTCFG); >>>> + assert(system(command) != -1); >>>> + >>>> + /* >>>> + * Wait for notification reception. >>>> + */ >>>> + int dwCnt = 0; >>>> + while (dwCnt++ < POLLWAIT && !rec_notif_data.populated) { >>>> + saNtfDispatch(ntfHandle, SA_DISPATCH_ALL); >>>> + if (!rec_notif_data.populated) usleep(100); >>>> + } >>>> + >>>> + if (rec_notif_data.populated) { >>>> + NotifData n_exp; >>>> + safassert(set_ntf(&n_exp, SA_NTF_ATTRIBUTE_CHANGED, >>>> DNTESTCFG, 6, 6), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 0, 0, >>>> "SaImmAttrAdminOwnerName"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 1, 1, "SaImmAttrClassName"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 2, 2, "SaImmOiCcbIdT"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 3, 3, "ccbLast"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 4, 4, "testNameCfg"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 5, 5, "testAnyCfg"), SA_AIS_OK); >>>> + safassert(set_attr_change_str(&n_exp, 0, 0, "immcfg_xxx"), >>>> SA_AIS_OK); >>>> + safassert(set_attr_change_str(&n_exp, 1, 1, >>>> "OsafNtfCmTestCFG"), SA_AIS_OK); >>>> + SaUint64T ccidVar = 3; >>>> + safassert(set_attr_change_scalar(&n_exp, 2, 2, >>>> SA_NTF_VALUE_UINT64, &ccidVar), SA_AIS_OK); >>>> + SaUint32T ccbLast = 1; >>>> + safassert(set_attr_change_scalar(&n_exp, 3, 3, >>>> SA_NTF_VALUE_UINT32, &ccbLast), SA_AIS_OK); >>>> + safassert(set_attr_change_extended_name(&n_exp, 4, 4, >>>> SA_NTF_VALUE_LDAP_NAME, &var1), SA_AIS_OK); >>>> + safassert(set_attr_change_buf(&n_exp, 5, 5, >>>> SA_NTF_VALUE_BINARY, &var2), SA_AIS_OK); >>>> + >>>> + if (!compare_notifs(&n_exp, &rec_notif_data)) { >>>> + print_notif(&n_exp); >>>> + print_notif(&rec_notif_data); >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(saNtfNotificationFree(rec_notif_data.nHandle), SA_AIS_OK); >>>> + safassert(saNtfNotificationFree(n_exp.nHandle), SA_AIS_OK); >>>> + } else { >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(unsub_notifications(), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + test_validate(error, SA_AIS_OK); >>>> +} >>>> + >>>> +/** >>>> + * Modify a config object with extended name attribute and verify >>>> correctness >>>> + * of generated notification. >>>> + */ >>>> +void objectModifyTest_3507(void) >>>> +{ >>>> + char command[1024]; >>>> + SaAisErrorT error = SA_AIS_OK; >>>> + safassert(init_ntf(), SA_AIS_OK); >>>> + safassert(subscribe_notifications(), SA_AIS_OK); >>>> + rec_notif_data.populated = SA_FALSE; >>>> + >>>> + /* modify an object */ >>>> + SaNameT oldvar; >>>> + saAisNameLend((SaConstStringT)&extended_name_string_02, >> &oldvar); >>>> + SaNameT addvar; >>>> + saAisNameLend((SaConstStringT)&extended_name_string_01, >> &addvar); >>>> + sprintf(command, "immcfg -a testNameCfg+=%s %s", >>>> extended_name_string_01, DNTESTCFG); >>>> + assert(system(command) != -1); >>>> + >>>> + /* >>>> + * Wait for notification reception. >>>> + */ >>>> + int dwCnt = 0; >>>> + while (dwCnt++ < POLLWAIT && !rec_notif_data.populated) { >>>> + saNtfDispatch(ntfHandle, SA_DISPATCH_ALL); >>>> + if (!rec_notif_data.populated) usleep(100); >>>> + } >>>> + >>>> + if (rec_notif_data.populated) { >>>> + NotifData n_exp; >>>> + safassert(set_ntf(&n_exp, SA_NTF_ATTRIBUTE_CHANGED, >>>> DNTESTCFG, 5, 6), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 0, 0, >>>> "SaImmAttrAdminOwnerName"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 1, 1, "SaImmAttrClassName"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 2, 2, "SaImmOiCcbIdT"), >>>> SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 3, 3, "ccbLast"), SA_AIS_OK); >>>> + safassert(set_add_info(&n_exp, 4, 4, "testNameCfg"), >>>> SA_AIS_OK); >>>> + safassert(set_attr_change_str(&n_exp, 0, 0, "immcfg_xxx"), >>>> SA_AIS_OK); >>>> + safassert(set_attr_change_str(&n_exp, 1, 1, >>>> "OsafNtfCmTestCFG"), SA_AIS_OK); >>>> + SaUint64T ccidVar = 3; >>>> + safassert(set_attr_change_scalar(&n_exp, 2, 2, >>>> SA_NTF_VALUE_UINT64, &ccidVar), SA_AIS_OK); >>>> + SaUint32T ccbLast = 1; >>>> + safassert(set_attr_change_scalar(&n_exp, 3, 3, >>>> SA_NTF_VALUE_UINT32, &ccbLast), SA_AIS_OK); >>>> + safassert(set_attr_change_extended_name(&n_exp, 4, 4, >>>> SA_NTF_VALUE_LDAP_NAME, &oldvar), SA_AIS_OK); >>>> + safassert(set_attr_change_extended_name(&n_exp, 5, 4, >>>> SA_NTF_VALUE_LDAP_NAME, &addvar), SA_AIS_OK); >>>> + >>>> + if (!compare_notifs(&n_exp, &rec_notif_data)) { >>>> + print_notif(&n_exp); >>>> + print_notif(&rec_notif_data); >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(saNtfNotificationFree(rec_notif_data.nHandle), SA_AIS_OK); >>>> + safassert(saNtfNotificationFree(n_exp.nHandle), SA_AIS_OK); >>>> + } else { >>>> + error = SA_AIS_ERR_FAILED_OPERATION; >>>> + } >>>> + safassert(unsub_notifications(), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + test_validate(error, SA_AIS_OK); >>>> +} >>>> >>>> __attribute__((constructor)) static void ntf_imcn_constructor(void) >>>> { >>>> @@ -4290,9 +4775,15 @@ void objectDeleteTest_3404(void) >>>> rc = system("immcfg -f //tmp//ntfsv_test_classes.xml"); >>>> } >>>> if (rc != 0) { >>>> - printf("ntfsv_test_classes.xml file not installed (see >>>> README)"); >>>> - return; >>>> - } >>>> + printf("ntfsv_test_classes.xml file not installed (see >>>> README)"); >>>> + return; >>>> + } >>>> + memset(&extended_name_string_01, 'C', >> DEFAULT_EXT_NAME_LENGTH - 1); >>>> + extended_name_string_01[DEFAULT_EXT_NAME_LENGTH - 1] = '\0'; >>>> + >>>> + memset(&extended_name_string_02, 'D', >> DEFAULT_EXT_NAME_LENGTH - 1); >>>> + extended_name_string_02[DEFAULT_EXT_NAME_LENGTH - 1] = '\0'; >>>> + >>>> test_suite_add(32, "CM notifications test"); >>>> test_case_add(32, objectCreateTest_01, "CREATE, runtime >>>> (OsafNtfCmTestRT) object"); >>>> test_case_add(32, objectModifyTest_02, "runtime, attr ch, >>>> REPLACE (UINT32, FLOAT)"); >>>> @@ -4334,10 +4825,21 @@ void objectDeleteTest_3404(void) >>>> test_case_add(32, objectMultiCcbTest_38, "config, multiple op >>>> in ccb, 2 REPLACE"); >>>> test_case_add(32, objectMultiCcbTest_39, "config, multiple op >>>> in ccb, ADD, REPLACE, DELETE"); >>>> test_case_add(32, objectDeleteTest_40, "DELETE, config >>>> (OsafNtfCmTestCFG) object"); >>>> + >>>> test_suite_add(34, "CM notifications test, persistent runtime"); >>>> test_case_add(34, objectCreateTest_3401, "CREATE, runtime >>>> (OsafNtfCmTestRT1) object"); >>>> test_case_add(34, objectModifyTest_3402, "runtime, attr ch, >>>> REPLACE (UINT32, FLOAT)"); >>>> test_case_add(34, objectModifyTest_3403, "runtime, attr ch, ADD >>>> (INT32)"); >>>> test_case_add(34, objectDeleteTest_3404, "DELETE, runtime >>>> (OsafNtfCmTestRT1) object"); >>>> + >>>> + test_suite_add(35, "CM notification test for extended name >>>> attribute"); >>>> + test_case_add(35, objectCreateTest_3501, "CREATE, runtime >>>> (OsafNtfCmTestRT) object, extended name attribute"); >>>> + test_case_add(35, objectModifyTest_3502, "runtime, attr ch, >>>> REPLACE (EXTENDED NAME, ANY)"); >>>> + test_case_add(35, objectModifyTest_3503, "runtime, attr ch, ADD >>>> (EXTENDED NAME)"); >>>> + test_case_add(35, objectDeleteTest_19, "DELETE, runtime >>>> (OsafNtfCmTestRT) object"); >>>> + test_case_add(35, objectCreateTest_3505, "CREATE, config >>>> (OsafNtfCmTestCFG) object, extended name attribute"); >>>> + test_case_add(35, objectModifyTest_3506, "config, attr ch, >>>> REPLACE (EXTENDED NAME, ANY)"); >>>> + test_case_add(35, objectModifyTest_3507, "config, attr ch, ADD >>>> (EXTENDED NAME)"); >>>> + test_case_add(35, objectDeleteTest_40, "DELETE, config >>>> (OsafNtfCmTestCFG) object"); >>>> } >>>> >>>> diff --git a/tests/ntfsv/tet_longDnObject_notification.c >>>> b/tests/ntfsv/tet_longDnObject_notification.c >>>> new file mode 100644 >>>> --- /dev/null >>>> +++ b/tests/ntfsv/tet_longDnObject_notification.c >>>> @@ -0,0 +1,972 @@ >>>> +/* -*- OpenSAF -*- >>>> + * >>>> + * (C) Copyright 2009 The OpenSAF Foundation >>>> + * >>>> + * This program is distributed in the hope that it will be useful, but >>>> + * WITHOUT ANY WARRANTY; without even the implied warranty of >>>> MERCHANTABILITY >>>> + * or FITNESS FOR A PARTICULAR PURPOSE. This file and program are >>>> licensed >>>> + * under the GNU Lesser General Public License Version 2.1, February >>>> 1999. >>>> + * The complete license can be accessed from the following location: >>>> + * http://opensource.org/licenses/lgpl-license.php >>>> + * See the Copying file included with the OpenSAF distribution for full >>>> + * licensing terms. >>>> + * >>>> + * Author(s): Ericsson AB >>>> + * >>>> + */ >>>> +/** >>>> + >>>> + */ >>>> +#include <utest.h> >>>> +#include <util.h> >>>> +#include "tet_ntf.h" >>>> +#include "tet_ntf_common.h" >>>> +//#include "util.h" >>>> +#define NOTIFYING_OBJECT_TEST "AVND" >>>> +#define NTF_REST_MAX_IDS 30 >>>> + >>>> +#define DEFAULT_EXT_NAME_LENGTH 300 >>>> +#define DEFAULT_UNEXT_NAME_STRING "This is unextended SaNameT >> string >>>> (<256)" >>>> +struct not_idsT { >>>> + int length; >>>> + SaNtfIdentifierT ids[NTF_REST_MAX_IDS]; >>>> +}; >>>> + >>>> +static struct not_idsT received_ids = {0,}; >>>> +static struct not_idsT ok_ids = {0,}; >>>> + >>>> +static char >> default_ext_notification_object[DEFAULT_EXT_NAME_LENGTH]; >>>> +static char >> default_ext_notifying_object[DEFAULT_EXT_NAME_LENGTH]; >>>> +static char test_longdn_object_1[DEFAULT_EXT_NAME_LENGTH]; >>>> +static char test_longdn_object_2[DEFAULT_EXT_NAME_LENGTH]; >>>> +static char test_longdn_object_3[DEFAULT_EXT_NAME_LENGTH]; >>>> + >>>> +static SaNtfNotificationTypeFilterHandlesT myNotificationFilterHandles; >>>> + >>>> +/* Used to keep track of which ntf we got */ >>>> +static SaNtfNotificationTypeFilterHandlesT ntfRecieved; >>>> + >>>> +static int errors; >>>> +static SaNtfSubscriptionIdT subscriptionId; >>>> +static SaNtfAlarmNotificationT myAlarmNotification; >>>> +static SaNtfObjectCreateDeleteNotificationT myObjCrDelNotification; >>>> +static SaNtfAttributeChangeNotificationT myAttrChangeNotification; >>>> +static SaNtfStateChangeNotificationT myStateChangeNotification; >>>> +static SaNtfSecurityAlarmNotificationT mySecAlarmNotification; >>>> + >>>> +extern void saAisNameLend(SaConstStringT value, SaNameT* name); >>>> +extern SaConstStringT saAisNameBorrow(const SaNameT* name); >>>> + >>>> +/** >>>> + * Init default long dn objects >>>> + */ >>>> +static void init_ext_object() >>>> +{ >>>> + safassert(setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1), 0); >>>> + >>>> + memset(&default_ext_notification_object, 'A', >>>> DEFAULT_EXT_NAME_LENGTH - 1); >>>> + default_ext_notification_object[DEFAULT_EXT_NAME_LENGTH - 1] = >>>> '\0'; >>>> + >>>> + memset(&default_ext_notifying_object, 'B', >>>> DEFAULT_EXT_NAME_LENGTH - 1); >>>> + default_ext_notifying_object[DEFAULT_EXT_NAME_LENGTH - 1] = >> '\0'; >>>> + >>>> + memset(&test_longdn_object_1, 'C', DEFAULT_EXT_NAME_LENGTH - >> 1); >>>> + test_longdn_object_1[DEFAULT_EXT_NAME_LENGTH - 1] = '\0'; >>>> + >>>> + memset(&test_longdn_object_2, 'D', DEFAULT_EXT_NAME_LENGTH - >> 1); >>>> + test_longdn_object_2[DEFAULT_EXT_NAME_LENGTH - 1] = '\0'; >>>> + >>>> + memset(&test_longdn_object_3, 'E', DEFAULT_EXT_NAME_LENGTH - >> 1); >>>> + test_longdn_object_3[DEFAULT_EXT_NAME_LENGTH - 1] = '\0'; >>>> + >>>> +} >>>> + >>>> +/** >>>> + * Store all recieved notificationIds >>>> + */ >>>> +static void ntf_id_store(SaNtfIdentifierT n_id) >>>> +{ >>>> + assert(NTF_REST_MAX_IDS > received_ids.length); >>>> + received_ids.ids[received_ids.length++] = n_id; >>>> +} >>>> + >>>> +/** >>>> + * Post process all recived notificationIds towards the ids that >>>> + * are expected to be received. >>>> + */ >>>> +static SaAisErrorT check_errors() >>>> +{ >>>> + int i, j, found; >>>> + SaAisErrorT rc = SA_AIS_OK; >>>> + >>>> + for (i = 0; i< received_ids.length; i++) { >>>> + found=0; >>>> + for (j= 0; j< ok_ids.length; j++) { >>>> + if (received_ids.ids[i] == ok_ids.ids[j]){ >>>> + found = 1; >>>> + break; >>>> + } >>>> + } >>>> + if(!found) >>>> + errors++; >>>> + } >>>> + if(errors) >>>> + { >>>> + rc = SA_AIS_ERR_FAILED_OPERATION; >>>> + printf("num of failed notifications: %d\n", errors); >>>> + } >>>> + return rc; >>>> +} >>>> + >>>> +static void resetCounters() >>>> +{ >>>> + errors = 0; >>>> + received_ids.length = 0; >>>> + ok_ids.length = 0; >>>> + ntfRecieved.alarmFilterHandle = 0; >>>> + ntfRecieved.attributeChangeFilterHandle = 0; >>>> + ntfRecieved.objectCreateDeleteFilterHandle = 0; >>>> + ntfRecieved.securityAlarmFilterHandle = 0; >>>> + ntfRecieved.stateChangeFilterHandle = 0; >>>> +} >>>> + >>>> +/** >>>> + * Creates an ObjectCreateDeleteNotification with default values. >>>> + * >>>> + * @param ntfHandle >>>> + * @param myObjCreDelNotification >>>> + */ >>>> +void extCreateObjectCreateDeleteNotification(SaNtfHandleT ntfHandle, >>>> + SaNtfObjectCreateDeleteNotificationT *myObjCrDelNotification) >>>> +{ >>>> + SaNtfNotificationHeaderT *head; >>>> + >>>> + createObjectCreateDeleteNotification(ntfHandle, >>>> myObjCrDelNotification); >>>> + head = &myObjCrDelNotification->notificationHeader; >>>> + /* Overwrite with long dn object */ >>>> + saAisNameLend((SaConstStringT)&default_ext_notification_object, >>>> head->notificationObject); >>>> + saAisNameLend((SaConstStringT)&default_ext_notifying_object, >>>> head->notifyingObject); >>>> +} >>>> + >>>> +/** >>>> + * Creates an AttributeChangeNotification with default values. >>>> + * >>>> + * @param ntfhandle >>>> + * @param myAttrChangeNotification >>>> + */ >>>> +void extCreateAttributeChangeNotification(SaNtfHandleT ntfHandle, >>>> + SaNtfAttributeChangeNotificationT *myAttrChangeNotification) >>>> +{ >>>> + SaNtfNotificationHeaderT *head; >>>> + >>>> + createAttributeChangeNotification(ntfHandle, >>>> myAttrChangeNotification); >>>> + head = &myAttrChangeNotification->notificationHeader; >>>> + /* Overwrite with long dn object */ >>>> + saAisNameLend((SaConstStringT)&default_ext_notification_object, >>>> head->notificationObject); >>>> + saAisNameLend((SaConstStringT)&default_ext_notifying_object, >>>> head->notifyingObject); >>>> +} >>>> + >>>> +/** >>>> + * Create a StateChangeNotification with default values. >>>> + * >>>> + * @param ntfHandle >>>> + * @param myStateChangeNotification >>>> + */ >>>> +void extCreateStateChangeNotification(SaNtfHandleT ntfHandle, >>>> + SaNtfStateChangeNotificationT *myStateChangeNotification) >>>> +{ >>>> + SaNtfNotificationHeaderT *head; >>>> + >>>> + createStateChangeNotification(ntfHandle, >>>> myStateChangeNotification); >>>> + head = &myStateChangeNotification->notificationHeader; >>>> + /* Overwrite with long dn object */ >>>> + saAisNameLend((SaConstStringT)&default_ext_notification_object, >>>> head->notificationObject); >>>> + saAisNameLend((SaConstStringT)&default_ext_notifying_object, >>>> head->notifyingObject); >>>> +} >>>> + >>>> +/** >>>> + * Create a SecurityAlarmNotification with default values. >>>> + * >>>> + * @param ntfHandle >>>> + * @param mySecAlarmNotification >>>> + */ >>>> +void extCreateSecurityAlarmNotification(SaNtfHandleT ntfHandle, >>>> + SaNtfSecurityAlarmNotificationT *mySecAlarmNotification) >>>> +{ >>>> + SaNtfNotificationHeaderT *head; >>>> + >>>> + createSecurityAlarmNotification(ntfHandle, mySecAlarmNotification); >>>> + head = &mySecAlarmNotification->notificationHeader; >>>> + /* Overwrite with long dn object */ >>>> + saAisNameLend((SaConstStringT)&default_ext_notification_object, >>>> head->notificationObject); >>>> + saAisNameLend((SaConstStringT)&default_ext_notifying_object, >>>> head->notifyingObject); >>>> +} >>>> + >>>> +/** >>>> + * Verify the contents in the notification. >>>> + * We use the myNotificationFilterHandles to know which >>>> notifications to expect. >>>> + */ >>>> +static void saNtfNotificationCallbackT( >>>> + SaNtfSubscriptionIdT subscriptionId, >>>> + const SaNtfNotificationsT *notification) >>>> +{ >>>> + SaNtfNotificationHandleT notificationHandle = 0; >>>> + switch(notification->notificationType) >>>> + { >>>> + case SA_NTF_TYPE_OBJECT_CREATE_DELETE: >>>> + notificationHandle = >>>> notification- >>> notification.objectCreateDeleteNotification.notificationHandle; >>>> + ntfRecieved.objectCreateDeleteFilterHandle += 1; >>>> + if(myNotificationFilterHandles.objectCreateDeleteFilterHandle == 0) >>>> + errors +=1; >>>> + else >>>> + >>>> ntf_id_store(*notification- >>> notification.objectCreateDeleteNotification.notificationHeader.notificationI >> d); >>>> + break; >>>> + >>>> + case SA_NTF_TYPE_ATTRIBUTE_CHANGE: >>>> + notificationHandle = >>>> notification->notification.attributeChangeNotification.notificationHandle; >>>> + ntfRecieved.attributeChangeFilterHandle += 1; >>>> + if(myNotificationFilterHandles.attributeChangeFilterHandle == 0) >>>> + errors += 1; >>>> + else >>>> + >>>> ntf_id_store(*notification- >>> notification.attributeChangeNotification.notificationHeader.notificationId); >>>> + break; >>>> + >>>> + case SA_NTF_TYPE_STATE_CHANGE: >>>> + notificationHandle = >>>> notification->notification.stateChangeNotification.notificationHandle; >>>> + ntfRecieved.stateChangeFilterHandle += 1; >>>> + if(myNotificationFilterHandles.stateChangeFilterHandle == 0) >>>> + errors += 1; >>>> + else >>>> + >>>> ntf_id_store(*notification- >>> notification.stateChangeNotification.notificationHeader.notificationId); >>>> + break; >>>> + >>>> + case SA_NTF_TYPE_ALARM: >>>> + notificationHandle = >>>> notification->notification.alarmNotification.notificationHandle; >>>> + ntfRecieved.alarmFilterHandle += 1; >>>> + if(myNotificationFilterHandles.alarmFilterHandle == 0) { >>>> + printf("alarmFilterHandle == 0\n"); >>>> + errors +=1; >>>> + } else >>>> + >>>> ntf_id_store(*notification- >>> notification.alarmNotification.notificationHeader.notificationId); >>>> + break; >>>> + >>>> + case SA_NTF_TYPE_SECURITY_ALARM: >>>> + notificationHandle = >>>> notification->notification.securityAlarmNotification.notificationHandle; >>>> + ntfRecieved.securityAlarmFilterHandle += 1; >>>> + if(myNotificationFilterHandles.securityAlarmFilterHandle == 0) >>>> + errors += 1; >>>> + else >>>> + >>>> ntf_id_store(*notification- >>> notification.securityAlarmNotification.notificationHeader.notificationId); >>>> + break; >>>> + >>>> + default: >>>> + errors +=1; >>>> + assert(0); >>>> + break; >>>> + } >>>> + last_not_id = get_ntf_id(notification); >>>> + if (notificationHandle != 0) >>>> + safassert(saNtfNotificationFree(notificationHandle), >>>> SA_AIS_OK); >>>> +} >>>> + >>>> + >>>> +static SaNtfCallbacksT ntfCbTest = { >>>> + saNtfNotificationCallbackT, >>>> + NULL >>>> +}; >>>> + >>>> +/** >>>> + * Fill the filter header with long dn objects >>>> + */ >>>> +void extFillFilterHeader(SaNtfNotificationFilterHeaderT *head) >>>> +{ >>>> + fillFilterHeader(head); >>>> + /* Overwrite the objects with long dn */ >>>> + saAisNameLend((SaConstStringT)&default_ext_notification_object, >>>> &head->notificationObjects[0]); >>>> + saAisNameLend((SaConstStringT)&default_ext_notifying_object, >>>> &head->notifyingObjects[0]); >>>> +} >>>> + >>>> +/** >>>> + * Fill the header with long dn objects >>>> + */ >>>> +void extFillHeader(SaNtfNotificationHeaderT *head) >>>> +{ >>>> + fillHeader(head); >>>> + /* Overwrite the objects with long dn */ >>>> + saAisNameLend((SaConstStringT)&default_ext_notification_object, >>>> head->notificationObject); >>>> + saAisNameLend((SaConstStringT)&default_ext_notifying_object, >>>> head->notifyingObject); >>>> +} >>>> + >>>> + >>>> +/** >>>> + * Fill header with extended SaNameT in additionalInfo >>>> + */ >>>> + void extFillHeaderAddInfo(SaNtfNotificationHeaderT *head, >>>> SaNtfNotificationHandleT notHandle) >>>> + { >>>> + int i; >>>> + SaStringT dest_ptr; >>>> + SaNameT name1, name2, name3, name4, name5; >>>> + *(head->eventType) = SA_NTF_ALARM_COMMUNICATION; >>>> + *(head->eventTime) = SA_TIME_UNKNOWN; >>>> + >>>> + saAisNameLend((SaConstStringT)&default_ext_notification_object, >>>> head->notificationObject); >>>> + saAisNameLend((SaConstStringT)&default_ext_notifying_object, >>>> head->notifyingObject); >>>> + >>>> + head->notificationClassId->vendorId = ERICSSON_VENDOR_ID; >>>> + head->notificationClassId->majorId = 92; >>>> + head->notificationClassId->minorId = 12; >>>> + >>>> + /* set additional text */ >>>> + (void)strncpy(head->additionalText, >>>> + DEFAULT_ADDITIONAL_TEXT, >>>> + (SaUint16T)(strlen(DEFAULT_ADDITIONAL_TEXT) + 1)); >>>> + >>>> + for (i = 0; i < head->numCorrelatedNotifications; i++) >>>> + head->correlatedNotifications[i] = (SaNtfIdentifierT) (i + >>>> 400); >>>> + >>>> + // Fill first additionalInfo as extended SaNameT including NULL >>>> character >>>> + head->additionalInfo[0].infoType = SA_NTF_VALUE_LDAP_NAME; >>>> + head->additionalInfo[0].infoId = 1; >>>> + saAisNameLend((SaConstStringT)&test_longdn_object_1, &name1); >>>> + >>>> + safassert(saNtfPtrValAllocate(notHandle, >>>> + strlen(saAisNameBorrow(&name1)) + 3, >>>> + (void**)&dest_ptr, >>>> + &(head->additionalInfo[0].infoValue)), SA_AIS_OK); >>>> + >>>> + saAisNameLend(saAisNameBorrow(&name1), (SaNameT*) dest_ptr); >>>> + >>>> + // Fill sencond additionalInfo as extended SaNameT excluding >>>> NULL character >>>> + head->additionalInfo[1].infoType = SA_NTF_VALUE_LDAP_NAME; >>>> + head->additionalInfo[1].infoId = 1; >>>> + saAisNameLend((SaConstStringT)&test_longdn_object_2, &name2); >>>> + >>>> + safassert(saNtfPtrValAllocate(notHandle, >>>> + strlen(saAisNameBorrow(&name2)) + 2, >>>> + (void**)&dest_ptr, >>>> + &(head->additionalInfo[1].infoValue)), SA_AIS_OK); >>>> + >>>> + saAisNameLend(saAisNameBorrow(&name2), (SaNameT*) dest_ptr); >>>> + >>>> + >>>> + //Fill third additionalInfo as extended SaNameT as legacy code >>>> -> object is truncated >>>> + head->additionalInfo[2].infoType = SA_NTF_VALUE_LDAP_NAME; >>>> + head->additionalInfo[2].infoId = 1; >>>> + saAisNameLend((SaConstStringT)&test_longdn_object_3, &name3); >>>> + safassert(saNtfPtrValAllocate(notHandle, >>>> + sizeof(name3) + 1, >>>> + (void**)&dest_ptr, >>>> + &(head->additionalInfo[2].infoValue)), SA_AIS_OK); >>>> + >>>> + memcpy(dest_ptr, &name3, sizeof(name3)); >>>> + >>>> + // Fill fourth additionalInfo as unextended SaNameT as legacy code >>>> + head->additionalInfo[3].infoType = SA_NTF_VALUE_LDAP_NAME; >>>> + head->additionalInfo[3].infoId = 1; >>>> + saAisNameLend(DEFAULT_UNEXT_NAME_STRING, &name4); >>>> + >>>> + safassert(saNtfPtrValAllocate(notHandle, >>>> + sizeof(name4) + 1, >>>> + (void**)&dest_ptr, >>>> + &(head->additionalInfo[3].infoValue)), SA_AIS_OK); >>>> + >>>> + memcpy(dest_ptr, &name4, sizeof(name4)); >>>> + >>>> + //Fill the fifth additionalInfo as unextended SaNameT as modern >>>> code >>>> + head->additionalInfo[4].infoType = SA_NTF_VALUE_LDAP_NAME; >>>> + head->additionalInfo[4].infoId = 1; >>>> + saAisNameLend(DEFAULT_UNEXT_NAME_STRING, &name5); >>>> + >>>> + safassert(saNtfPtrValAllocate(notHandle, >>>> + strlen(saAisNameBorrow(&name5)) + 3, >>>> + (void**)&dest_ptr, >>>> + &(head->additionalInfo[4].infoValue)), SA_AIS_OK); >>>> + >>>> + saAisNameLend(saAisNameBorrow(&name5), (SaNameT*) dest_ptr); >>>> + } >>>> + >>>> + /** >>>> + * Test AdditionalInfo with extended SaNameT type >>>> + */ >>>> + void extAdditionalInfoTest(void) >>>> + { >>>> + SaNtfAlarmNotificationFilterT myAlarmFilter; >>>> + subscriptionId = 1; >>>> + SaNtfNotificationHeaderT *head; >>>> + >>>> + rc = SA_AIS_OK; >>>> + >>>> + resetCounters(); >>>> + >>>> + safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , >>>> SA_AIS_OK); >>>> + safassert(saNtfSelectionObjectGet(ntfHandle, &selectionObject) , >>>> SA_AIS_OK); >>>> + >>>> + /* specify complex filter */ >>>> + safassert(saNtfAlarmNotificationFilterAllocate( >>>> + ntfHandle, >>>> + &myAlarmFilter, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 0, >>>> + 0, >>>> + 0), SA_AIS_OK); >>>> + /* set header filter specific fields */ >>>> + extFillFilterHeader(&myAlarmFilter.notificationFilterHeader); >>>> + >>>> + /* Initialize filter handles */ >>>> + myNotificationFilterHandles.alarmFilterHandle = >>>> + myAlarmFilter.notificationFilterHandle; >>>> + myNotificationFilterHandles.attributeChangeFilterHandle = 0; >>>> + myNotificationFilterHandles.objectCreateDeleteFilterHandle = 0; >>>> + myNotificationFilterHandles.securityAlarmFilterHandle = 0; >>>> + myNotificationFilterHandles.stateChangeFilterHandle = 0; >>>> + >>>> + safassert(saNtfNotificationSubscribe(&myNotificationFilterHandles, >>>> + subscriptionId), SA_AIS_OK); >>>> + >>>> + /* Create a notification and send it */ >>>> + safassert(saNtfAlarmNotificationAllocate( >>>> + ntfHandle, >>>> + &myAlarmNotification, >>>> + 0, >>>> + (SaUint16T)(strlen(DEFAULT_ADDITIONAL_TEXT) + 1), >>>> + 5, >>>> + 0, >>>> + 0, >>>> + 0, >>>> + SA_NTF_ALLOC_SYSTEM_LIMIT), SA_AIS_OK); >>>> + >>>> + head = &myAlarmNotification.notificationHeader; >>>> + extFillHeaderAddInfo(head, myAlarmNotification.notificationHandle); >>>> + /* These 3 fields is alarm filter items */ >>>> + *(myAlarmNotification.perceivedSeverity) = >> SA_NTF_SEVERITY_WARNING; >>>> + *(myAlarmNotification.probableCause) = >> SA_NTF_BANDWIDTH_REDUCED; >>>> + *myAlarmNotification.trend = SA_NTF_TREND_MORE_SEVERE; >>>> + >>>> + myAlarmNotification.thresholdInformation->thresholdValueType = >>>> SA_NTF_VALUE_UINT32; >>>> + myAlarmNotification.thresholdInformation->thresholdValue.uint32Val >>>> = 600; >>>> + >>>> myAlarmNotification.thresholdInformation- >>> thresholdHysteresis.uint32Val >>>> = 100; >>>> + myAlarmNotification.thresholdInformation->observedValue.uint32Val = >>>> 567; >>>> + myAlarmNotification.thresholdInformation->armTime = >>>> SA_TIME_UNKNOWN; >>>> + >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + /* only this notification should be caught */ >>>> + ok_ids.ids[ok_ids.length++] = >>>> *myAlarmNotification.notificationHeader.notificationId; >>>> + poll_until_received(ntfHandle, >>>> *myAlarmNotification.notificationHeader.notificationId); >>>> + >>>> + if(ntfRecieved.alarmFilterHandle != 1 || >>>> + ntfRecieved.attributeChangeFilterHandle != 0 || >>>> + ntfRecieved.objectCreateDeleteFilterHandle !=0 || >>>> + ntfRecieved.securityAlarmFilterHandle != 0 || >>>> + ntfRecieved.stateChangeFilterHandle != 0) >>>> safassert(SA_AIS_ERR_BAD_FLAGS, SA_AIS_OK); >>>> + >>>> + >>>> safassert(saNtfNotificationFree(myAlarmNotification.notificationHandle) >>>> , SA_AIS_OK); >>>> + >>>> >> safassert(saNtfNotificationFilterFree(myAlarmFilter.notificationFilterHandle), >>>> SA_AIS_OK); >>>> + safassert(saNtfNotificationUnsubscribe(subscriptionId), SA_AIS_OK); >>>> + >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + rc = check_errors(); >>>> + test_validate(rc, SA_AIS_OK); >>>> + } >>>> + >>>> +/** >>>> + * Test all filter header fields >>>> + */ >>>> +void extFilterNotificationTest(void) >>>> +{ >>>> + SaNtfAlarmNotificationFilterT myAlarmFilter; >>>> + subscriptionId = 1; >>>> + SaNtfNotificationHeaderT *head; >>>> + >>>> + rc = SA_AIS_OK; >>>> + >>>> + resetCounters(); >>>> + >>>> + safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , >>>> SA_AIS_OK); >>>> + safassert(saNtfSelectionObjectGet(ntfHandle, &selectionObject) , >>>> SA_AIS_OK); >>>> + >>>> + /* specify complex filter */ >>>> + safassert(saNtfAlarmNotificationFilterAllocate( >>>> + ntfHandle, >>>> + &myAlarmFilter, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 0, >>>> + 0, >>>> + 0), SA_AIS_OK); >>>> + /* set header filter specific fields */ >>>> + extFillFilterHeader(&myAlarmFilter.notificationFilterHeader); >>>> + >>>> + /* Initialize filter handles */ >>>> + myNotificationFilterHandles.alarmFilterHandle = >>>> + myAlarmFilter.notificationFilterHandle; >>>> + myNotificationFilterHandles.attributeChangeFilterHandle = 0; >>>> + myNotificationFilterHandles.objectCreateDeleteFilterHandle = 0; >>>> + myNotificationFilterHandles.securityAlarmFilterHandle = 0; >>>> + myNotificationFilterHandles.stateChangeFilterHandle = 0; >>>> + >>>> + safassert(saNtfNotificationSubscribe(&myNotificationFilterHandles, >>>> + subscriptionId), SA_AIS_OK); >>>> + >>>> + /* Create a notification and send it */ >>>> + safassert(saNtfAlarmNotificationAllocate( >>>> + ntfHandle, >>>> + &myAlarmNotification, >>>> + 0, >>>> + (SaUint16T)(strlen(DEFAULT_ADDITIONAL_TEXT) + 1), >>>> + 0, >>>> + 0, >>>> + 0, >>>> + 0, >>>> + SA_NTF_ALLOC_SYSTEM_LIMIT), SA_AIS_OK); >>>> + >>>> + head = &myAlarmNotification.notificationHeader; >>>> + extFillHeader(head); >>>> + >>>> + /* These 3 fields is alarm filter items */ >>>> + *(myAlarmNotification.perceivedSeverity) = >> SA_NTF_SEVERITY_WARNING; >>>> + *(myAlarmNotification.probableCause) = >> SA_NTF_BANDWIDTH_REDUCED; >>>> + *myAlarmNotification.trend = SA_NTF_TREND_MORE_SEVERE; >>>> + >>>> + myAlarmNotification.thresholdInformation->thresholdValueType = >>>> SA_NTF_VALUE_UINT32; >>>> + myAlarmNotification.thresholdInformation->thresholdValue.uint32Val >>>> = 600; >>>> + >>>> myAlarmNotification.thresholdInformation- >>> thresholdHysteresis.uint32Val >>>> = 100; >>>> + myAlarmNotification.thresholdInformation->observedValue.uint32Val = >>>> 567; >>>> + myAlarmNotification.thresholdInformation->armTime = >>>> SA_TIME_UNKNOWN; >>>> + >>>> + *(head->eventType) = SA_NTF_ALARM_EQUIPMENT; >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + saAisNameLend((SaConstStringT)&test_longdn_object_1, >>>> head->notificationObject); >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + extFillHeader(head); >>>> + saAisNameLend(NOTIFYING_OBJECT_TEST, head->notifyingObject); >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + extFillHeader(head); >>>> + head->notificationClassId->vendorId = 199; >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + extFillHeader(head); >>>> + head->notificationClassId->majorId = 89; >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + extFillHeader(head); >>>> + head->notificationClassId->minorId = 24; >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + extFillHeader(head); >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + /* only this notification should be caught */ >>>> + ok_ids.ids[ok_ids.length++] = >>>> *myAlarmNotification.notificationHeader.notificationId; >>>> + poll_until_received(ntfHandle, >>>> *myAlarmNotification.notificationHeader.notificationId); >>>> + >>>> + if(ntfRecieved.alarmFilterHandle != 1 || >>>> + ntfRecieved.attributeChangeFilterHandle != 0 || >>>> + ntfRecieved.objectCreateDeleteFilterHandle !=0 || >>>> + ntfRecieved.securityAlarmFilterHandle != 0 || >>>> + ntfRecieved.stateChangeFilterHandle != 0) >>>> safassert(SA_AIS_ERR_BAD_FLAGS, SA_AIS_OK); >>>> + >>>> + >>>> safassert(saNtfNotificationFree(myAlarmNotification.notificationHandle) >>>> , SA_AIS_OK); >>>> + >>>> >> safassert(saNtfNotificationFilterFree(myAlarmFilter.notificationFilterHandle), >>>> SA_AIS_OK); >>>> + safassert(saNtfNotificationUnsubscribe(subscriptionId), SA_AIS_OK); >>>> + >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + rc = check_errors(); >>>> + test_validate(rc, SA_AIS_OK); >>>> +} >>>> + >>>> +/** >>>> + * Test Alarm notification with long dn objects >>>> + */ >>>> +void extAlarmNotificationTest(void) >>>> +{ >>>> + SaNtfAlarmNotificationFilterT myAlarmFilter; >>>> + subscriptionId = 1; >>>> + >>>> + rc = SA_AIS_OK; >>>> + >>>> + resetCounters(); >>>> + >>>> + safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , >>>> SA_AIS_OK); >>>> + safassert(saNtfSelectionObjectGet(ntfHandle, &selectionObject) , >>>> SA_AIS_OK); >>>> + >>>> + safassert(saNtfAlarmNotificationFilterAllocate( >>>> + ntfHandle, >>>> + &myAlarmFilter, >>>> + 0, >>>> + 0, >>>> + 0, >>>> + 0, >>>> + 1, >>>> + 1, >>>> + 1), SA_AIS_OK); >>>> + /* Set perceived severities */ >>>> + myAlarmFilter.perceivedSeverities[0] = SA_NTF_SEVERITY_WARNING; >>>> + myAlarmFilter.probableCauses[0] = SA_NTF_BANDWIDTH_REDUCED; >>>> + myAlarmFilter.trends[0] = SA_NTF_TREND_MORE_SEVERE; >>>> + >>>> + /* Initialize filter handles */ >>>> + myNotificationFilterHandles.alarmFilterHandle = >>>> + myAlarmFilter.notificationFilterHandle; >>>> + myNotificationFilterHandles.attributeChangeFilterHandle = 0; >>>> + myNotificationFilterHandles.objectCreateDeleteFilterHandle = 0; >>>> + myNotificationFilterHandles.securityAlarmFilterHandle = 0; >>>> + myNotificationFilterHandles.stateChangeFilterHandle = 0; >>>> + >>>> + safassert(saNtfNotificationSubscribe(&myNotificationFilterHandles, >>>> + subscriptionId), SA_AIS_OK); >>>> + >>>> + /* Create a notification and send it */ >>>> + safassert(saNtfAlarmNotificationAllocate( >>>> + ntfHandle, >>>> + &myAlarmNotification, >>>> + 0, >>>> + (SaUint16T)(strlen(DEFAULT_ADDITIONAL_TEXT) + 1), >>>> + 0, >>>> + 0, >>>> + 0, >>>> + 0, >>>> + SA_NTF_ALLOC_SYSTEM_LIMIT), SA_AIS_OK); >>>> + extFillHeader(&myAlarmNotification.notificationHeader); >>>> + >>>> + *(myAlarmNotification.perceivedSeverity) = >>>> SA_NTF_SEVERITY_CRITICAL; >>>> + *(myAlarmNotification.probableCause) = >>>> SA_NTF_CALL_ESTABLISHMENT_ERROR; >>>> + *myAlarmNotification.trend = SA_NTF_TREND_NO_CHANGE; >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + *(myAlarmNotification.perceivedSeverity) = >> SA_NTF_SEVERITY_WARNING; >>>> + *(myAlarmNotification.probableCause) = >>>> SA_NTF_PRESSURE_UNACCEPTABLE; >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + *(myAlarmNotification.perceivedSeverity) = >> SA_NTF_SEVERITY_WARNING; >>>> + *(myAlarmNotification.probableCause) = >> SA_NTF_BANDWIDTH_REDUCED; >>>> + *myAlarmNotification.trend = SA_NTF_TREND_NO_CHANGE; >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + extFillHeader(&myAlarmNotification.notificationHeader); >>>> + /* These 3 fields is filter items */ >>>> + *(myAlarmNotification.perceivedSeverity) = >> SA_NTF_SEVERITY_WARNING; >>>> + *(myAlarmNotification.probableCause) = >> SA_NTF_BANDWIDTH_REDUCED; >>>> + *myAlarmNotification.trend = SA_NTF_TREND_MORE_SEVERE; >>>> + myAlarmNotification.thresholdInformation->thresholdValueType = >>>> SA_NTF_VALUE_UINT32; >>>> + myAlarmNotification.thresholdInformation->thresholdValue.uint32Val >>>> = 600; >>>> + >>>> myAlarmNotification.thresholdInformation- >>> thresholdHysteresis.uint32Val >>>> = 100; >>>> + myAlarmNotification.thresholdInformation->observedValue.uint32Val = >>>> 567; >>>> + myAlarmNotification.thresholdInformation->armTime = >>>> SA_TIME_UNKNOWN; >>>> + >>>> safassert(saNtfNotificationSend(myAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + /* only this notification should be caught*/ >>>> + ok_ids.ids[ok_ids.length++] = >>>> *myAlarmNotification.notificationHeader.notificationId; >>>> + poll_until_received(ntfHandle, >>>> *myAlarmNotification.notificationHeader.notificationId); >>>> + if(ntfRecieved.alarmFilterHandle != 1 || >>>> + ntfRecieved.attributeChangeFilterHandle != 0 || >>>> + ntfRecieved.objectCreateDeleteFilterHandle !=0 || >>>> + ntfRecieved.securityAlarmFilterHandle != 0 || >>>> + ntfRecieved.stateChangeFilterHandle != 0) >>>> safassert(SA_AIS_ERR_BAD_FLAGS, SA_AIS_OK); >>>> + >>>> + >>>> safassert(saNtfNotificationFree(myAlarmNotification.notificationHandle) >>>> , SA_AIS_OK); >>>> + >>>> >> safassert(saNtfNotificationFilterFree(myAlarmFilter.notificationFilterHandle), >>>> SA_AIS_OK); >>>> + >>>> + safassert(saNtfNotificationUnsubscribe(subscriptionId), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + rc = check_errors(); >>>> + test_validate(rc, SA_AIS_OK); >>>> +} >>>> + >>>> +/** >>>> + * Test Object Create/Delete notification with long dn objects >>>> + */ >>>> +void extObjectCreateDeleteNotificationTest(void) >>>> +{ >>>> + SaNtfObjectCreateDeleteNotificationFilterT myFilter; >>>> + >>>> + subscriptionId = 2; >>>> + >>>> + resetCounters(); >>>> + >>>> + safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , >>>> SA_AIS_OK); >>>> + safassert(saNtfSelectionObjectGet(ntfHandle, &selectionObject) , >>>> SA_AIS_OK); >>>> + >>>> + safassert(saNtfObjectCreateDeleteNotificationFilterAllocate( >>>> + ntfHandle, >>>> + &myFilter, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 2), SA_AIS_OK); >>>> + myFilter.sourceIndicators[0] = SA_NTF_OBJECT_OPERATION; >>>> + myFilter.sourceIndicators[1] = SA_NTF_MANAGEMENT_OPERATION; >>>> + extFillFilterHeader(&myFilter.notificationFilterHeader); >>>> + myFilter.notificationFilterHeader.eventTypes[0] = >>>> SA_NTF_OBJECT_CREATION; >>>> + /* Initialize filter handles */ >>>> + myNotificationFilterHandles.alarmFilterHandle = 0; >>>> + myNotificationFilterHandles.attributeChangeFilterHandle = 0; >>>> + myNotificationFilterHandles.objectCreateDeleteFilterHandle = >>>> + myFilter.notificationFilterHandle; >>>> + myNotificationFilterHandles.securityAlarmFilterHandle = 0; >>>> + myNotificationFilterHandles.stateChangeFilterHandle = 0; >>>> + safassert(saNtfNotificationSubscribe(&myNotificationFilterHandles, >>>> + subscriptionId), SA_AIS_OK); >>>> + extCreateObjectCreateDeleteNotification(ntfHandle, >>>> &myObjCrDelNotification); >>>> + *(myObjCrDelNotification.sourceIndicator) = >>>> SA_NTF_OBJECT_OPERATION; >>>> + >>>> >> safassert(saNtfNotificationSend(myObjCrDelNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + /* this notification should be caught*/ >>>> + ok_ids.ids[ok_ids.length++] = >>>> *myObjCrDelNotification.notificationHeader.notificationId; >>>> + >>>> + *(myObjCrDelNotification.sourceIndicator) = >>>> SA_NTF_UNKNOWN_OPERATION; >>>> + >>>> >> safassert(saNtfNotificationSend(myObjCrDelNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> + *(myObjCrDelNotification.sourceIndicator) = >>>> SA_NTF_MANAGEMENT_OPERATION; >>>> + >>>> >> safassert(saNtfNotificationSend(myObjCrDelNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + /* this notification should be caught*/ >>>> + ok_ids.ids[ok_ids.length++] = >>>> *myObjCrDelNotification.notificationHeader.notificationId; >>>> + poll_until_received(ntfHandle, >>>> *myObjCrDelNotification.notificationHeader.notificationId); >>>> + if(ntfRecieved.alarmFilterHandle != 0 || >>>> + ntfRecieved.attributeChangeFilterHandle != 0 || >>>> + ntfRecieved.objectCreateDeleteFilterHandle != >>>> ok_ids.length|| >>>> + ntfRecieved.securityAlarmFilterHandle != 0 || >>>> + ntfRecieved.stateChangeFilterHandle != 0) >>>> safassert(SA_AIS_ERR_BAD_FLAGS, SA_AIS_OK); >>>> + >>>> >> safassert(saNtfNotificationFree(myObjCrDelNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> safassert(saNtfNotificationFilterFree(myFilter.notificationFilterHandle), >>>> SA_AIS_OK); >>>> + >>>> + safassert(saNtfNotificationUnsubscribe(subscriptionId), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle) , SA_AIS_OK); >>>> + rc = check_errors(); >>>> + test_validate(rc, SA_AIS_OK); >>>> +} >>>> + >>>> +/** >>>> + * Test Attribute Change notification with long dn objects >>>> + */ >>>> +void extAttributeChangeNotificationTest(void) >>>> +{ >>>> + SaNtfAttributeChangeNotificationFilterT myFilter; >>>> + >>>> + subscriptionId = 2; >>>> + >>>> + resetCounters(); >>>> + >>>> + safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , >>>> SA_AIS_OK); >>>> + safassert(saNtfSelectionObjectGet(ntfHandle, &selectionObject) , >>>> SA_AIS_OK); >>>> + >>>> + safassert(saNtfAttributeChangeNotificationFilterAllocate( >>>> + ntfHandle, >>>> + &myFilter, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 2), SA_AIS_OK); >>>> + >>>> + myFilter.sourceIndicators[0] = SA_NTF_OBJECT_OPERATION; >>>> + myFilter.sourceIndicators[1] = SA_NTF_MANAGEMENT_OPERATION; >>>> + extFillFilterHeader(&myFilter.notificationFilterHeader); >>>> + myFilter.notificationFilterHeader.eventTypes[0] = >>>> SA_NTF_ATTRIBUTE_CHANGED; >>>> + /* Initialize filter handles */ >>>> + myNotificationFilterHandles.alarmFilterHandle = 0; >>>> + myNotificationFilterHandles.attributeChangeFilterHandle = >>>> + myFilter.notificationFilterHandle; >>>> + myNotificationFilterHandles.objectCreateDeleteFilterHandle = 0; >>>> + myNotificationFilterHandles.securityAlarmFilterHandle = 0; >>>> + myNotificationFilterHandles.stateChangeFilterHandle = 0; >>>> + safassert(saNtfNotificationSubscribe(&myNotificationFilterHandles, >>>> + subscriptionId), SA_AIS_OK); >>>> + extCreateAttributeChangeNotification(ntfHandle, >>>> &myAttrChangeNotification); >>>> + *(myAttrChangeNotification.sourceIndicator) = >>>> SA_NTF_OBJECT_OPERATION; >>>> + >>>> >> safassert(saNtfNotificationSend(myAttrChangeNotification.notificationHandl >> e), >>>> SA_AIS_OK); >>>> + /* this notification should be caught*/ >>>> + ok_ids.ids[ok_ids.length++] = >>>> *myAttrChangeNotification.notificationHeader.notificationId; >>>> + >>>> + *(myAttrChangeNotification.sourceIndicator) = >>>> SA_NTF_UNKNOWN_OPERATION; >>>> + >>>> >> safassert(saNtfNotificationSend(myAttrChangeNotification.notificationHandl >> e), >>>> SA_AIS_OK); >>>> + >>>> + *(myAttrChangeNotification.sourceIndicator) = >>>> SA_NTF_MANAGEMENT_OPERATION; >>>> + >>>> >> safassert(saNtfNotificationSend(myAttrChangeNotification.notificationHandl >> e), >>>> SA_AIS_OK); >>>> + /* this notification should be caught*/ >>>> + ok_ids.ids[ok_ids.length++] = >>>> *myAttrChangeNotification.notificationHeader.notificationId; >>>> + poll_until_received(ntfHandle, >>>> *myAttrChangeNotification.notificationHeader.notificationId); >>>> + if(ntfRecieved.alarmFilterHandle != 0 || >>>> + ntfRecieved.attributeChangeFilterHandle != ok_ids.length || >>>> + ntfRecieved.objectCreateDeleteFilterHandle != 0|| >>>> + ntfRecieved.securityAlarmFilterHandle != 0 || >>>> + ntfRecieved.stateChangeFilterHandle != 0) >>>> safassert(SA_AIS_ERR_BAD_FLAGS, SA_AIS_OK); >>>> + >>>> >> safassert(saNtfNotificationFree(myAttrChangeNotification.notificationHandl >> e), >>>> SA_AIS_OK); >>>> + >>>> safassert(saNtfNotificationFilterFree(myFilter.notificationFilterHandle), >>>> SA_AIS_OK); >>>> + >>>> + >>>> + safassert(saNtfNotificationUnsubscribe(subscriptionId), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle) , SA_AIS_OK); >>>> + rc = check_errors(); >>>> + test_validate(rc, SA_AIS_OK); >>>> +} >>>> + >>>> +/** >>>> + * Test State Change notification with long dn objects >>>> + */ >>>> +void extStateChangeNotificationTest(void) >>>> +{ >>>> + SaNtfStateChangeNotificationFilterT myFilter; >>>> + >>>> + subscriptionId = 2; >>>> + >>>> + resetCounters(); >>>> + >>>> + safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , >>>> SA_AIS_OK); >>>> + safassert(saNtfSelectionObjectGet(ntfHandle, &selectionObject) , >>>> SA_AIS_OK); >>>> + >>>> + safassert(saNtfStateChangeNotificationFilterAllocate( >>>> + ntfHandle, >>>> + &myFilter, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 1, >>>> + 2, >>>> + 0), SA_AIS_OK); >>>> + >>>> + myFilter.sourceIndicators[0] = SA_NTF_OBJECT_OPERATION; >>>> + myFilter.sourceIndicators[1] = SA_NTF_MANAGEMENT_OPERATION; >>>> + extFillFilterHeader(&myFilter.notificationFilterHeader); >>>> + myFilter.notificationFilterHeader.eventTypes[0] = >>>> SA_NTF_OBJECT_STATE_CHANGE; >>>> + /* Initialize filter handles */ >>>> + myNotificationFilterHandles.alarmFilterHandle = 0; >>>> + myNotificationFilterHandles.attributeChangeFilterHandle = 0; >>>> + myNotificationFilterHandles.objectCreateDeleteFilterHandle = 0; >>>> + myNotificationFilterHandles.securityAlarmFilterHandle = 0; >>>> + myNotificationFilterHandles.stateChangeFilterHandle = >>>> myFilter.notificationFilterHandle; >>>> + safassert(saNtfNotificationSubscribe(&myNotificationFilterHandles, >>>> + subscriptionId), SA_AIS_OK); >>>> + >>>> + extCreateStateChangeNotification(ntfHandle, >>>> &myStateChangeNotification); >>>> + *(myStateChangeNotification.sourceIndicator) = >>>> SA_NTF_OBJECT_OPERATION; >>>> + >>>> >> safassert(saNtfNotificationSend(myStateChangeNotification.notificationHan >> dle), >>>> SA_AIS_OK); >>>> + /* this notification should be caught*/ >>>> + ok_ids.ids[ok_ids.length++] = >>>> *myStateChangeNotification.notificationHeader.notificationId; >>>> + >>>> + *(myStateChangeNotification.sourceIndicator) = >>>> SA_NTF_UNKNOWN_OPERATION; >>>> + >>>> >> safassert(saNtfNotificationSend(myStateChangeNotification.notificationHan >> dle), >>>> SA_AIS_OK); >>>> + >>>> + *(myStateChangeNotification.sourceIndicator) = >>>> SA_NTF_MANAGEMENT_OPERATION; >>>> + >>>> >> safassert(saNtfNotificationSend(myStateChangeNotification.notificationHan >> dle), >>>> SA_AIS_OK); >>>> + /* this notification should be caught*/ >>>> + ok_ids.ids[ok_ids.length++] = >>>> *myStateChangeNotification.notificationHeader.notificationId; >>>> + poll_until_received(ntfHandle, >>>> *myStateChangeNotification.notificationHeader.notificationId); >>>> + if(ntfRecieved.alarmFilterHandle != 0 || >>>> + ntfRecieved.attributeChangeFilterHandle != 0 || >>>> + ntfRecieved.objectCreateDeleteFilterHandle != 0|| >>>> + ntfRecieved.securityAlarmFilterHandle != 0 || >>>> + ntfRecieved.stateChangeFilterHandle != ok_ids.length) >>>> safassert(SA_AIS_ERR_BAD_FLAGS, SA_AIS_OK); >>>> + >>>> >> safassert(saNtfNotificationFree(myStateChangeNotification.notificationHand >> le), >>>> SA_AIS_OK); >>>> + >>>> safassert(saNtfNotificationFilterFree(myFilter.notificationFilterHandle), >>>> SA_AIS_OK); >>>> + >>>> + safassert(saNtfNotificationUnsubscribe(subscriptionId), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle), SA_AIS_OK); >>>> + rc = check_errors(); >>>> + test_validate(rc, SA_AIS_OK); >>>> +} >>>> + >>>> +/** >>>> + * Test Security Alarm notification with long dn objects >>>> + */ >>>> +void extSecurityAlarmNotificationTest(void) >>>> +{ >>>> + SaNtfSecurityAlarmNotificationFilterT myFilter; >>>> + >>>> + subscriptionId = 5; >>>> + >>>> + resetCounters(); >>>> + safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , >>>> SA_AIS_OK); >>>> + safassert(saNtfSelectionObjectGet(ntfHandle, &selectionObject) , >>>> SA_AIS_OK); >>>> + >>>> + safassert(saNtfSecurityAlarmNotificationFilterAllocate( >>>> + ntfHandle, >>>> + &myFilter, >>>> + 0, >>>> + 0, >>>> + 0, >>>> + 0, >>>> + 3, >>>> + 0, >>>> + 0, >>>> + 0, >>>> + 0), SA_AIS_OK); >>>> + >>>> + /* Initialize filter handles */ >>>> + myNotificationFilterHandles.alarmFilterHandle = 0; >>>> + myNotificationFilterHandles.attributeChangeFilterHandle = 0; >>>> + myNotificationFilterHandles.objectCreateDeleteFilterHandle = 0; >>>> + myNotificationFilterHandles.securityAlarmFilterHandle = >>>> + myFilter.notificationFilterHandle; >>>> + myNotificationFilterHandles.stateChangeFilterHandle = 0; >>>> + myFilter.probableCauses[0] = SA_NTF_ADAPTER_ERROR; >>>> + myFilter.probableCauses[1] = SA_NTF_EQUIPMENT_MALFUNCTION; >>>> + myFilter.probableCauses[2] = SA_NTF_VERSION_MISMATCH; >>>> + >>>> + /* subscribe */ >>>> + safassert(saNtfNotificationSubscribe(&myNotificationFilterHandles, >>>> + subscriptionId), SA_AIS_OK); >>>> + extCreateSecurityAlarmNotification(ntfHandle, >>>> &mySecAlarmNotification); >>>> + >>>> >> safassert(saNtfNotificationSend(mySecAlarmNotification.notificationHandle) >> , >>>> SA_AIS_OK); >>>> + >>>> + *mySecAlarmNotification.probableCause = >> SA_NTF_VERSION_MISMATCH; >>>> + >>>> >> safassert(saNtfNotificationSend(mySecAlarmNotification.notificationHandle) >> , >>>> SA_AIS_OK); >>>> + ok_ids.ids[ok_ids.length++] = >>>> *mySecAlarmNotification.notificationHeader.notificationId; >>>> + >>>> + *mySecAlarmNotification.probableCause = >>>> SA_NTF_RESPONSE_TIME_EXCESSIVE; >>>> + >>>> >> safassert(saNtfNotificationSend(mySecAlarmNotification.notificationHandle) >> , >>>> SA_AIS_OK); >>>> + >>>> + *mySecAlarmNotification.probableCause = >>>> SA_NTF_NON_REPUDIATION_FAILURE; >>>> + >>>> >> safassert(saNtfNotificationSend(mySecAlarmNotification.notificationHandle) >> , >>>> SA_AIS_OK); >>>> + >>>> + *mySecAlarmNotification.probableCause = >>>> SA_NTF_EQUIPMENT_MALFUNCTION; >>>> + >>>> >> safassert(saNtfNotificationSend(mySecAlarmNotification.notificationHandle) >> , >>>> SA_AIS_OK); >>>> + ok_ids.ids[ok_ids.length++] = >>>> *mySecAlarmNotification.notificationHeader.notificationId; >>>> + *mySecAlarmNotification.probableCause = >>>> SA_NTF_STORAGE_CAPACITY_PROBLEM; >>>> + >>>> >> safassert(saNtfNotificationSend(mySecAlarmNotification.notificationHandle) >> , >>>> SA_AIS_OK); >>>> + *mySecAlarmNotification.probableCause = >> SA_NTF_DENIAL_OF_SERVICE; >>>> + >>>> >> safassert(saNtfNotificationSend(mySecAlarmNotification.notificationHandle) >> , >>>> SA_AIS_OK); >>>> + *mySecAlarmNotification.probableCause = SA_NTF_ADAPTER_ERROR; >>>> + >>>> >> safassert(saNtfNotificationSend(mySecAlarmNotification.notificationHandle) >> , >>>> SA_AIS_OK); >>>> + ok_ids.ids[ok_ids.length++] = >>>> *mySecAlarmNotification.notificationHeader.notificationId; >>>> + poll_until_received(ntfHandle, >>>> *mySecAlarmNotification.notificationHeader.notificationId); >>>> + if(ntfRecieved.alarmFilterHandle != 0 || >>>> + ntfRecieved.attributeChangeFilterHandle != 0 || >>>> + ntfRecieved.objectCreateDeleteFilterHandle !=0 || >>>> + ntfRecieved.securityAlarmFilterHandle != ok_ids.length || >>>> + ntfRecieved.stateChangeFilterHandle != 0) >>>> safassert(SA_AIS_ERR_BAD_FLAGS, SA_AIS_OK); >>>> + >>>> >> safassert(saNtfNotificationFree(mySecAlarmNotification.notificationHandle), >>>> SA_AIS_OK); >>>> + >>>> safassert(saNtfNotificationFilterFree(myFilter.notificationFilterHandle), >>>> SA_AIS_OK); >>>> + >>>> + safassert(saNtfNotificationUnsubscribe(subscriptionId), SA_AIS_OK); >>>> + safassert(saNtfFinalize(ntfHandle) , SA_AIS_OK); >>>> + rc = check_errors(); >>>> + test_validate(rc, SA_AIS_OK); >>>> +} >>>> + >>>> +__attribute__ ((constructor)) static void >>>> longDnObject_notification_constructor(void) >>>> +{ >>>> + init_ext_object(); >>>> + test_suite_add(36, "Long DNs Test"); >>>> + test_case_add(36, extAdditionalInfoTest >>>> + , "Test additional info with extended SaNameT >>>> type"); >>>> + test_case_add(36, extFilterNotificationTest >>>> + , "Test filter with longDn objects"); >>>> + test_case_add(36, extAlarmNotificationTest >>>> + , "Test Alarm notification with longDn objects"); >>>> + test_case_add(36, extObjectCreateDeleteNotificationTest >>>> + , "Test Object Create/Delete notification with >>>> longDn objects"); >>>> + test_case_add(36, extAttributeChangeNotificationTest >>>> + , "Test Attribute Change notification with >>>> longDn objects"); >>>> + test_case_add(36, extStateChangeNotificationTest >>>> + , "Test State Change notification with longDn >>>> objects"); >>>> + test_case_add(36, extSecurityAlarmNotificationTest >>>> + , "Test Security Alarm notification with longDn >>>> objects"); >>>> +} >>>> diff --git a/tests/unit_test_fw/inc/util.h >>>> b/tests/unit_test_fw/inc/util.h >>>> --- a/tests/unit_test_fw/inc/util.h >>>> +++ b/tests/unit_test_fw/inc/util.h >>>> @@ -19,11 +19,10 @@ >>>> #ifndef util_h >>>> #define util_h >>>> >>>> +#include <saAis.h> >>>> + >>>> extern SaTimeT getSaTimeT(void); >>>> -extern void create_dn(char *rdn, char *parent, SaNameT *dn); >>>> -extern void sa_namet_init(char *value, SaNameT *namet); >>>> extern const char *get_saf_error(SaAisErrorT rc); >>>> - >>>> extern void safassert_impl(const char* file, unsigned int line, >>>> SaAisErrorT actual, SaAisErrorT expected); >>>> >>>> /** >>>> diff --git a/tests/unit_test_fw/src/Makefile.am >>>> b/tests/unit_test_fw/src/Makefile.am >>>> --- a/tests/unit_test_fw/src/Makefile.am >>>> +++ b/tests/unit_test_fw/src/Makefile.am >>>> @@ -22,6 +22,7 @@ noinst_LTLIBRARIES = libutest.la >>>> >>>> libutest_la_CPPFLAGS = \ >>>> $(AM_CPPFLAGS) \ >>>> + -DSA_EXTENDED_NAME_SOURCE \ >>>> -I$(top_srcdir)/tests/unit_test_fw/inc \ >>>> -I$(top_srcdir)/osaf/libs/saf/include >>>> >>>> diff --git a/tests/unit_test_fw/src/util.c >>>> b/tests/unit_test_fw/src/util.c >>>> --- a/tests/unit_test_fw/src/util.c >>>> +++ b/tests/unit_test_fw/src/util.c >>>> @@ -21,8 +21,7 @@ >>>> #include <sys/time.h> >>>> #include <unistd.h> >>>> #include <assert.h> >>>> -#include <saAis.h> >>>> - >>>> +#include "util.h" >>>> static const char *saf_error[] = >>>> { >>>> "SA_AIS_NOT_VALID", >>>> @@ -65,17 +64,6 @@ SaTimeT getSaTimeT(void) >>>> (tp.tv_usec * SA_TIME_ONE_MICROSECOND); >>>> } >>>> >>>> -void create_dn(char *rdn, char *parent, SaNameT *dn) >>>> -{ >>>> - dn->length = sprintf((char*)dn->value, "%s,%s", rdn, parent); >>>> - assert(dn->length < SA_MAX_NAME_LENGTH); >>>> -} >>>> - >>>> -void sa_namet_init(char *value, SaNameT *namet) >>>> -{ >>>> - namet->length = sprintf((char*)namet->value, "%s", value); >>>> -} >>>> - >>>> const char *get_saf_error(SaAisErrorT rc) >>>> { >>>> if (rc <= SA_AIS_ERR_UNAVAILABLE) >>>> >> >> ------------------------------------------------------------------------------ >> Want fast and easy access to all the code in your enterprise? Index and >> search up to 200,000 lines of code with a free copy of Black Duck >> Code Sight - the same software that powers the world's largest code >> search on Ohloh, the Black Duck Open Hub! Try it now. >> http://p.sf.net/sfu/bds >> _______________________________________________ >> Opensaf-devel mailing list >> Opensaf-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/opensaf-devel ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel