Hi Vu,

If possible  use  global `lgs_conf.logRootDirectory`  after the call 
`lgs_rootpathconf_set(new_logRootDirectory)`

instead of   passed  `new_logRootDirectory` parameter.

-AVM

On 10/12/2016 12:39 PM, Vu Minh Nguyen wrote:
> Hi Mahesh,
>
> See my comment inline.
>
> Regards, Vu
>
>> -----Original Message-----
>> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
>> Sent: Wednesday, October 12, 2016 1:52 PM
>> To: Lennart Lund <lennart.l...@ericsson.com>; Vu Minh Nguyen
>> <vu.m.ngu...@dektech.com.au>
>> Cc: opensaf-devel@lists.sourceforge.net
>> Subject: Re: [PATCH 1 of 1] log: fix failure to create directory when
> changing
>> logRootDirectory [#2054]
>>
>> Hi VU,
>>
>> ACK with following :
>>
>> Not an issue but It is good to use lgs_conf.logRootDirectory insted of
>> new_logRootDirectory
> [Vu] Not sure if I got your point here. ` new_logRootDirectory` is an
> parameter name.
> Using `lgs_conf.logRootDirectory` is not correct as the code line `+
> lgs_rootpathconf_set(new_logRootDirectory);` intents
> to update the global `lgs_conf.logRootDirectory` to `new_logRootDirectory`.
>
>> for the remaining part of logRootDirectory_filemove()  , because
>> mutex_unlocked for  lgs_conf.logRootDirectory
>>
>> -AVM
>>
>> On 10/10/2016 4:48 PM, Lennart Lund wrote:
>>> Hi Vu
>>>
>>> Ack with comment. See below
>>>
>>> /***
>>>    * Support older check-point protocols prior to version 5
>>>    */
>>> /**
>>>    * Used for updating logRootDirectory on standby when check-pointed
>>>    *
>>>    * Set the logRootDirectory parameter in the lgs_conf struct
>>>    * Used for holding data from config object
>>>    *
>>>    * @param root_path_str
>>>    */
>>> void lgs_rootpathconf_set(const std::string &root_path_str) {
>>>
>>> [Lennart]
>>> The comments and maybe the place of this function seems incorrect since
>> this function is not only used on standby server
>>> Thanks
>>> Lennart
>>>
>>>
>>>> -----Original Message-----
>>>> From: Vu Minh Nguyen [mailto:vu.m.ngu...@dektech.com.au]
>>>> Sent: den 21 september 2016 10:08
>>>> To: Lennart Lund <lennart.l...@ericsson.com>;
>> mahesh.va...@oracle.com
>>>> Cc: opensaf-devel@lists.sourceforge.net
>>>> Subject: [PATCH 1 of 1] log: fix failure to create directory when
> changing
>>>> logRootDirectory [#2054]
>>>>
>>>>    osaf/services/saf/logsv/lgs/lgs_imm.cc |   3 +
>>>>    tests/logsv/tet_LogOiOps.c             |  82
>>>> ++++++++++++++++++++++++++++++++++
>>>>    2 files changed, 85 insertions(+), 0 deletions(-)
>>>>
>>>>
>>>> When changing `logRootDirectory`, the new directory was not updated to
>>>> global `lgs_conf.logRootDirectory`, therefore all refering to new
> directory
>>>> got the old value.
>>>>
>>>> This patch adds code to make sure new directory updated.
>>>> And one test case #03 of suite #5 are added to verify this case.
>>>>
>>>> diff --git a/osaf/services/saf/logsv/lgs/lgs_imm.cc
>>>> b/osaf/services/saf/logsv/lgs/lgs_imm.cc
>>>> --- a/osaf/services/saf/logsv/lgs/lgs_imm.cc
>>>> +++ b/osaf/services/saf/logsv/lgs/lgs_imm.cc
>>>> @@ -1858,6 +1858,9 @@ void logRootDirectory_filemove(
>>>>        stream = log_stream_get_by_id(--num);
>>>>      }
>>>>
>>>> +  // Change logrootDirectory to new_logRootDirectory
>>>> +  lgs_rootpathconf_set(new_logRootDirectory);
>>>> +
>>>>      /* Create new files at new path
>>>>       */
>>>>      num = get_number_of_streams();
>>>> diff --git a/tests/logsv/tet_LogOiOps.c b/tests/logsv/tet_LogOiOps.c
>>>> --- a/tests/logsv/tet_LogOiOps.c
>>>> +++ b/tests/logsv/tet_LogOiOps.c
>>>> @@ -1023,6 +1023,87 @@ done:
>>>>    }
>>>>
>>>>    /**
>>>> + * CCB Object Modify, root directory. Path exist. OK
>>>> + * Result shall be OK
>>>> + */
>>>> +void change_root_path(void)
>>>> +{
>>>> +  int rc = 0, tst_stat = 0;
>>>> +  char command[256];
>>>> +  char tstdir[256];
>>>> +
>>>> +  /* Path to test directory */
>>>> +  sprintf(tstdir, "%s/croot", log_root_path);
>>>> +
>>>> +  // Remove if the test folder is exist
>>>> +  sprintf(command, "rm -rf %s/", tstdir);
>>>> +  rc = tet_system(command);
>>>> +
>>>> +  /* Create test directory */
>>>> +  sprintf(command, "mkdir -p %s", tstdir);
>>>> +  rc = tet_system(command);
>>>> +  if (rc != 0) {
>>>> +          fprintf(stderr, "'%s' Fail rc=%d\n", command, rc);
>>>> +          tst_stat = 1;
>>>> +          goto done;
>>>> +  }
>>>> +
>>>> +  /* Make sure it can be accessed by server */
>>>> +  sprintf(command, "chmod ugo+w,ugo+r %s", tstdir);
>>>> +  rc = tet_system(command);
>>>> +  if (rc != 0) {
>>>> +          fprintf(stderr, "'%s' Fail rc=%d\n", command, rc);
>>>> +          tst_stat = 1;
>>>> +          goto done;
>>>> +  }
>>>> +
>>>> +  sprintf(command, "immcfg -c SaLogStreamConfig
>>>> safLgStrCfg=testRoot "
>>>> +          "-a saLogStreamPathName=./testRoot -a
>>>> saLogStreamFileName=testRoot");
>>>> +  rc = tet_system(command);
>>>> +  if (rc != 0) {
>>>> +          fprintf(stderr, "'%s' Fail rc=%d\n", command, rc);
>>>> +          tst_stat = 1;
>>>> +          goto done;
>>>> +  }
>>>> +
>>>> +  /* Change to xxtest */
>>>> +  sprintf(command, "immcfg -a logRootDirectory=%s
>>>> logConfig=1,safApp=safLogService", tstdir);
>>>> +  rc = tet_system(command);
>>>> +  if (rc != 0) {
>>>> +          fprintf(stderr, "'%s' Fail rc=%d\n", command, rc);
>>>> +          tst_stat = 1;
>>>> +          goto free;
>>>> +  }
>>>> +
>>>> +  // Verify if the directory and subdirectly are created successfully
>>>> +  usleep(100*1000); // to make sure logsv done processing of
>>>> directories creation
>>>> +  sprintf(command, "ls %s/testRoot 1>/dev/null", tstdir);
>>>> +  rc = tet_system(command);
>>>> +  if (rc != 0) {
>>>> +          fprintf(stderr, "'%s' Fail rc=%d\n", command, rc);
>>>> +          tst_stat = 1;
>>>> +  }
>>>> +
>>>> +  /* Change back */
>>>> +  sprintf(command, "immcfg -a logRootDirectory=%s
>>>> logConfig=1,safApp=safLogService", log_root_path);
>>>> +  rc = tet_system(command);
>>>> +  if (rc != 0) {
>>>> +          fprintf(stderr, "'%s' Fail to restore rc=%d\n", command,
> rc);
>>>> +  }
>>>> +
>>>> +free:
>>>> +  // Delete test app stream
>>>> +  sprintf(command, "immcfg -d safLgStrCfg=testRoot");;
>>>> +  rc = tet_system(command);
>>>> +  if (rc != 0) {
>>>> +          fprintf(stderr, "'%s' Fail to restore  rc=%d\n", command,
> rc);
>>>> +  }
>>>> +
>>>> +done:
>>>> +  rc_validate(tst_stat, 0);
>>>> +}
>>>> +
>>>> +/**
>>>>     * CCB Object Modify, data group. Group does not exist. Not allowed
>>>>     * Result shall be reject
>>>>     */
>>>> @@ -3776,6 +3857,7 @@ done:
>>>>            test_suite_add(5, "LOG OI tests, Service configuration object");
>>>>            test_case_add(5, saLogOi_52, "CCB Object Modify, root directory.
>>>> Path does not exist. Not allowed");
>>>>            test_case_add(5, saLogOi_48, "CCB Object Modify, root directory.
>>>> Path exist. OK");
>>>> +  test_case_add(5, change_root_path, "CCB Object Modify, change
>>>> root directory. Path exist. OK");
>>>>            test_case_add(5, saLogOi_79, "CCB Object Modify, data group.
>>>> Group does not exist. Not allowed");
>>>>            test_case_add(5, saLogOi_80, "CCB Object Modify, data group.
>>>> Group exists. OK");
>>>>            test_case_add(5, saLogOi_81, "CCB Object Modify, delete data
>>>> group. OK");
>


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to