Re: [devel] [PATCH 1 of 1] log: fix failure to create directory when changing logRootDirectory [#2054]

2016-10-12 Thread A V Mahesh
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 ; Vu Minh Nguyen
>> 
>> 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 _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 ;
>> 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;
 +  

Re: [devel] [PATCH 1 of 1] log: fix failure to create directory when changing logRootDirectory [#2054]

2016-10-12 Thread Vu Minh Nguyen
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 ; Vu Minh Nguyen
> 
> 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 _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 ;
> 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);
> >> +  

Re: [devel] [PATCH 1 of 1] log: fix failure to create directory when changing logRootDirectory [#2054]

2016-10-12 Thread A V Mahesh
Hi VU,

ACK with following :

Not an issue but It is good to use lgs_conf.logRootDirectory insted of 
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 _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 ; 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 

Re: [devel] [PATCH 1 of 1] log: fix failure to create directory when changing logRootDirectory [#2054]

2016-10-10 Thread Lennart Lund
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 _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 ; 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, 

[devel] [PATCH 1 of 1] log: fix failure to create directory when changing logRootDirectory [#2054]

2016-09-21 Thread Vu Minh Nguyen
 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");

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