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

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

Reply via email to