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