Ack.

Thanks,
Praveen

On 11-Aug-16 2:03 PM, Vu Minh Nguyen wrote:
>  osaf/services/saf/ntfsv/ntfs/NtfLogger.cc   |   51 +-----
>  tests/ntfsv/tet_longDnObject_notification.c |  188 
> +++++++++++++++++++++++++++-
>  2 files changed, 196 insertions(+), 43 deletions(-)
>
>
> Remove the part of code that truncates the long DN.
> And update the long DN test suite (#36) to make sure full record logged.
>
> diff --git a/osaf/services/saf/ntfsv/ntfs/NtfLogger.cc 
> b/osaf/services/saf/ntfsv/ntfs/NtfLogger.cc
> --- a/osaf/services/saf/ntfsv/ntfs/NtfLogger.cc
> +++ b/osaf/services/saf/ntfsv/ntfs/NtfLogger.cc
> @@ -21,6 +21,7 @@
>   */
>  #include <sys/poll.h>
>
> +#include "osaf_utility.h"
>  #include "saAis.h"
>  #include "saLog.h"
>  #include "NtfAdmin.hh"
> @@ -232,48 +233,22 @@ SaAisErrorT NtfLogger::logNotification(N
>                                     notif->getNotificationId(),
>                                     SA_LOG_RECORD_WRITE_ACK,
>                                     &logRecord);
> -    if (SA_AIS_OK != errorCode) {
> -      LOG_NO("Failed to log an alarm or security alarm notification (%d)", 
> errorCode);
> -      if (errorCode == SA_AIS_ERR_LIBRARY || errorCode == 
> SA_AIS_ERR_BAD_HANDLE) {
> -        LOG_ER("Fatal error SA_AIS_ERR_LIBRARY or SA_AIS_ERR_BAD_HANDLE; 
> exiting (%d)...", errorCode);
> -        exit(EXIT_FAILURE);
> -      } else if (errorCode == SA_AIS_ERR_INVALID_PARAM) {
> -        /* Retry to log truncated notificationObject/notifyingObject because
> -         * LOG Service has not supported long dn in Opensaf 4.5
> -         */
> -        char short_dn[SA_MAX_UNEXTENDED_NAME_LENGTH];
> -        memset(&short_dn, 0, SA_MAX_UNEXTENDED_NAME_LENGTH);
> -        SaNameT shortdn_notificationObject, shortdn_notifyingObject;
> -        if (osaf_is_an_extended_name(ntfHeader->notificationObject)) {
> -          strncpy(short_dn, 
> osaf_extended_name_borrow(ntfHeader->notificationObject)
> -                  , SA_MAX_UNEXTENDED_NAME_LENGTH - 1);
> -          osaf_extended_name_lend(short_dn, &shortdn_notificationObject);
> -          logRecord.logHeader.ntfHdr.notificationObject = 
> &shortdn_notificationObject;
> -        }
> -        if (osaf_is_an_extended_name(ntfHeader->notifyingObject)) {
> -          strncpy(short_dn, 
> osaf_extended_name_borrow(ntfHeader->notifyingObject)
> -                  , SA_MAX_UNEXTENDED_NAME_LENGTH - 1);
> -          osaf_extended_name_lend(short_dn, &shortdn_notifyingObject);
> -          logRecord.logHeader.ntfHdr.notifyingObject = 
> &shortdn_notifyingObject;
> -        }
> -        if (short_dn[0] != '\0') {
> -          LOG_NO("Retry to log the truncated 
> notificationObject/notifyingObject");
> -          if ((errorCode = saLogWriteLogAsync(alarmStreamHandle,
> -                                              notif->getNotificationId(),
> -                                              SA_LOG_RECORD_WRITE_ACK,
> -                                              &logRecord)) != SA_AIS_OK) {
> -            LOG_ER("Failed to log the truncated 
> notificationObject/notifyingObject (%d)"
> -                   , errorCode);
> -          }
> -        }
> -      }
> -      goto end;
> +    switch (errorCode) {
> +    case SA_AIS_OK:
> +         break;
> +
> +    /* LOGsv is busy. Put the notification to queue and re-send next time */
> +    case SA_AIS_ERR_TRY_AGAIN:
> +    case SA_AIS_ERR_TIMEOUT:
> +         TRACE("Failed to log notification (ret: %d). Try next time.", 
> errorCode);
> +         break;
> +
> +    default:
> +         osaf_abort(errorCode);
>      }
>    }
>
> -end:
>    TRACE_LEAVE();
> -
>    return errorCode;
>  }
>
> diff --git a/tests/ntfsv/tet_longDnObject_notification.c 
> b/tests/ntfsv/tet_longDnObject_notification.c
> --- a/tests/ntfsv/tet_longDnObject_notification.c
> +++ b/tests/ntfsv/tet_longDnObject_notification.c
> @@ -19,6 +19,7 @@
>   */
>  #include <utest.h>
>  #include <util.h>
> +#include <unistd.h>
>  #include "tet_ntf.h"
>  #include "tet_ntf_common.h"
>  //#include "util.h"
> @@ -57,6 +58,166 @@ static SaNtfSecurityAlarmNotificationT m
>  extern void saAisNameLend(SaConstStringT value, SaNameT* name);
>  extern SaConstStringT saAisNameBorrow(const SaNameT* name);
>
> +//>
> +// For backup and restore IMM attribute values.
> +//<
> +
> +#define MAX_DATA 256
> +typedef struct {
> +     char name[MAX_DATA];
> +     char val[MAX_DATA];
> +     int val_is_num;
> +} attrinfo_t;
> +
> +typedef struct {
> +     attrinfo_t *attr;
> +     size_t size;
> +} attrlist_t;
> +
> +typedef struct {
> +     attrlist_t *alist;
> +     char dn[MAX_DATA];
> +} imminfo_t;
> +
> +static void getVal(imminfo_t *info)
> +{
> +     FILE *fp = NULL;
> +     attrinfo_t *tmp = NULL;
> +     char attrValue[MAX_DATA] = {0};
> +     char command[MAX_DATA] = {0};
> +     size_t s = info->alist->size;
> +
> +     tmp = info->alist->attr;
> +     while (s) {
> +             sprintf(command, "immlist -a %s %s "
> +                     "| awk -F \"=\" '{print $2}' ", tmp->name,
> +                     info->dn);
> +             fp = popen(command, "r");
> +             while (fgets(attrValue, sizeof(attrValue) - 1, fp) != NULL) {};
> +             pclose(fp);
> +             strtok(attrValue, "\n");
> +             strncpy(tmp->val, attrValue, MAX_DATA);
> +             s--;
> +             tmp++;
> +
> +             /* For Debug only*/
> +             if (getenv("NTFTEST_DEBUG")) printf("%s \n", command);
> +
> +     }
> +
> +}
> +
> +static int setVal(imminfo_t *info)
> +{
> +     char *f = NULL;
> +     attrinfo_t *tmp = NULL;
> +     char command[MAX_DATA] = {0};
> +     char format[MAX_DATA] = {0};
> +     size_t s = info->alist->size;
> +     int rc;
> +
> +     f = format;
> +     tmp = info->alist->attr;
> +     while (s) {
> +             if (tmp->val_is_num) {
> +                     rc = snprintf(f, MAX_DATA, "-a %s=%s ",
> +                                   tmp->name,
> +                                   tmp->val);
> +             } else {
> +                     rc = snprintf(f, MAX_DATA, "-a %s='%s' ",
> +                                   tmp->name,
> +                                   tmp->val);
> +             }
> +             f = f + rc;
> +             s--;
> +             tmp++;
> +     }
> +     sprintf(command, "immcfg %s %s", format, info->dn);
> +
> +     /* For Debug only*/
> +     if (getenv("NTFTEST_DEBUG")) printf("%s \n", command);
> +
> +     rc = system(command);
> +     return WEXITSTATUS(rc);
> +}
> +
> +static attrinfo_t g_alarm[] = {
> +     {
> +             "saLogStreamFixedLogRecordSize",
> +             "200", // default val
> +             1 // val is num type
> +     },
> +     {
> +             "saLogStreamLogFileFormat",
> +             "@Cr @Ct @Nt @Ne6 @No30 @Ng30 \"@Cb\"",
> +             0 // val is string type
> +     }
> +};
> +static attrinfo_t g_config[] = {
> +     {
> +             "logMaxLogrecsize",
> +             "1024",
> +             1
> +     }
> +};
> +static attrlist_t alarmList = {g_alarm, sizeof(g_alarm)/sizeof(attrinfo_t)};
> +static attrlist_t configList = {g_config, 
> sizeof(g_config)/sizeof(attrinfo_t)};
> +static imminfo_t alarmInfo = {&alarmList, 
> "safLgStrCfg=saLogAlarm,safApp=safLogService"};
> +static imminfo_t configInfo = {&configList, 
> "logConfig=1,safApp=safLogService"};
> +
> +static void backupEnv(void)
> +{
> +     getVal(&alarmInfo);
> +     getVal(&configInfo);
> +
> +     /* For Debug only*/
> +     if (getenv("NTFTEST_DEBUG")) printf("\n");
> +}
> +
> +static void restoreEnv(void)
> +{
> +     /* For Debug only*/
> +     if (getenv("NTFTEST_DEBUG")) printf("\n");
> +
> +     setVal(&configInfo);
> +     setVal(&alarmInfo);
> +
> +     /* For Debug only*/
> +     if (getenv("NTFTEST_DEBUG")) printf("\n");
> +}
> +
> +static void setupEnv(void)
> +{
> +
> +     attrinfo_t aData[2];
> +     memcpy(aData, g_alarm, sizeof(g_alarm));
> +     strcpy(aData[0].val, "0");
> +     strcpy(aData[1].val, "@Cr @Ct @Nt @Ne6 @No @Ng \"@Cb\"");
> +
> +     attrinfo_t cData[1];
> +     memcpy(cData, g_config, sizeof(g_config));
> +     strcpy(cData[0].val, "65535");
> +
> +     attrlist_t aList = {aData, sizeof(aData)/sizeof(attrinfo_t)};
> +     attrlist_t cList = {cData, sizeof(cData)/sizeof(attrinfo_t)};
> +
> +     imminfo_t aInfo;
> +     aInfo.alist= &aList;
> +     strcpy(aInfo.dn, alarmInfo.dn);
> +
> +     imminfo_t cInfo;
> +     cInfo.alist= &cList;
> +     strcpy(cInfo.dn, configInfo.dn);
> +
> +     setVal(&aInfo);
> +     setVal(&cInfo);
> +
> +     /* For Debug only*/
> +     if (getenv("NTFTEST_DEBUG")) printf("\n");
> +}
> +
> +//<
> +
>  /**
>   * Init default long dn objects
>   */
> @@ -306,6 +467,7 @@ void extFillHeader(SaNtfNotificationHead
>       int i;
>       SaStringT dest_ptr;
>       SaNameT name1, name2, name3, name4, name5;
> +
>       *(head->eventType) = SA_NTF_ALARM_COMMUNICATION;
>       *(head->eventTime) = SA_TIME_UNKNOWN;
>
> @@ -390,12 +552,15 @@ void extFillHeader(SaNtfNotificationHead
>    */
>   void extAdditionalInfoTest(void)
>   {
> -     SaNtfAlarmNotificationFilterT             myAlarmFilter;
> +     SaNtfAlarmNotificationFilterT myAlarmFilter;
>       subscriptionId = 1;
>       SaNtfNotificationHeaderT *head;
> -     
> +
>       rc = SA_AIS_OK;
>
> +     backupEnv();
> +     setupEnv();
> +
>       resetCounters();
>
>       safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , 
> SA_AIS_OK);
> @@ -475,6 +640,7 @@ void extFillHeader(SaNtfNotificationHead
>       safassert(saNtfFinalize(ntfHandle), SA_AIS_OK);
>       rc = check_errors();
>       test_validate(rc, SA_AIS_OK);
> +     restoreEnv();
>   }
>
>  /**
> @@ -482,12 +648,15 @@ void extFillHeader(SaNtfNotificationHead
>   */
>  void extFilterNotificationTest(void)
>  {
> -     SaNtfAlarmNotificationFilterT             myAlarmFilter;
> +     SaNtfAlarmNotificationFilterT myAlarmFilter;
>       subscriptionId = 1;
>       SaNtfNotificationHeaderT *head;
> -     
> +
>       rc = SA_AIS_OK;
>
> +     backupEnv();
> +     setupEnv();
> +
>       resetCounters();
>
>       safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , 
> SA_AIS_OK);
> @@ -586,6 +755,7 @@ void extFilterNotificationTest(void)
>       safassert(saNtfFinalize(ntfHandle), SA_AIS_OK);
>       rc = check_errors();
>       test_validate(rc, SA_AIS_OK);
> +     restoreEnv();
>  }
>
>  /**
> @@ -593,11 +763,14 @@ void extFilterNotificationTest(void)
>   */
>  void extAlarmNotificationTest(void)
>  {
> -     SaNtfAlarmNotificationFilterT             myAlarmFilter;
> +     SaNtfAlarmNotificationFilterT myAlarmFilter;
>       subscriptionId = 1;
>
>       rc = SA_AIS_OK;
>
> +     backupEnv();
> +     setupEnv();
> +
>       resetCounters();
>
>       safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , 
> SA_AIS_OK);
> @@ -683,6 +856,7 @@ void extAlarmNotificationTest(void)
>       safassert(saNtfFinalize(ntfHandle), SA_AIS_OK);
>       rc = check_errors();
>       test_validate(rc, SA_AIS_OK);
> +     restoreEnv();
>  }
>
>  /**
> @@ -887,6 +1061,9 @@ void extSecurityAlarmNotificationTest(vo
>
>       subscriptionId = 5;
>
> +     backupEnv();
> +     setupEnv();
> +
>       resetCounters();
>       safassert(saNtfInitialize(&ntfHandle, &ntfCbTest, &ntfVersion) , 
> SA_AIS_OK);
>       safassert(saNtfSelectionObjectGet(ntfHandle, &selectionObject) , 
> SA_AIS_OK);
> @@ -954,6 +1131,7 @@ void extSecurityAlarmNotificationTest(vo
>       safassert(saNtfFinalize(ntfHandle) , SA_AIS_OK);
>       rc = check_errors();
>       test_validate(rc, SA_AIS_OK);
> +     restoreEnv();
>  }
>
>  __attribute__ ((constructor)) static void 
> longDnObject_notification_constructor(void)
>

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to