Re: [devel] [PATCH 1 of 1] log: fix failure to create directory when changing logRootDirectory [#2054]
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 &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 ; >> 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 lo
Re: [devel] [PATCH 1 of 1] log: fix failure to create directory when changing logRootDirectory [#2054]
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 &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 ; > 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 th
Re: [devel] [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 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 ; 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) { >> +
Re: [devel] [PATCH 1 of 1] log: fix failure to create directory when changing logRootDirectory [#2054]
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 ; 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