Hi Jan, 15.07.2014 18:25, Jan Friesse wrote: > Vladislav, > generally good idea. But I'm thinking about usage. What exactly is your > use case? I plan to use it to test configuration file validity after it is automatically created by my higher-level tools if for some reason regression testing didn't catch config anomalies. > > Because I can imagine use case, where user is testing config before > running corosync on terminal or via some tool (let's say graphic one). > But then, if I would be such user, I would probably like to see parser > errors on terminal/in tool instead of trying to find them on log (what > may be problem if logging section of configuration is improperly > configured). > > So (at least from my point of view), such test mode should set ouput to > stdout (or stderr) and don't allow config to change it. > > What do you think? Yep, that would be nice to have too. Although return code is more important. Then, if you decide to go that way, implementing '-q' (quiet) or '-v' (verbose on stdout) would also be nice. > > Regards, > Honza > > Vladislav Bogdanov napsal(a): >> Signed-off-by: Vladislav Bogdanov <bubble@xxxxxxxxxxxxx> >> --- >> exec/main.c | 17 ++++++++++++++--- >> man/corosync.8 | 3 +++ >> 2 files changed, 17 insertions(+), 3 deletions(-) >> >> diff --git a/exec/main.c b/exec/main.c >> index be765de..864fe33 100644 >> --- a/exec/main.c >> +++ b/exec/main.c >> @@ -1190,7 +1190,7 @@ int main (int argc, char **argv, char **envp) >> const char *error_string; >> struct totem_config totem_config; >> int res, ch; >> - int background, setprio; >> + int background, setprio, testonly; >> struct stat stat_out; >> enum e_corosync_done flock_err; >> uint64_t totem_config_warnings; >> @@ -1200,6 +1200,7 @@ int main (int argc, char **argv, char **envp) >> */ >> background = 1; >> setprio = 0; >> + testonly = 0; >> >> while ((ch = getopt (argc, argv, "fprv")) != EOF) { >> >> @@ -1212,6 +1213,9 @@ int main (int argc, char **argv, char **envp) >> case 'r': >> setprio = 1; >> break; >> + case 't': >> + testonly = 1; >> + break; >> case 'v': >> printf ("Corosync Cluster Engine, version '%s'\n", >> VERSION); >> printf ("Copyright (c) 2006-2009 Red Hat, Inc.\n"); >> @@ -1224,6 +1228,7 @@ int main (int argc, char **argv, char **envp) >> "usage:\n"\ >> " -f : Start application in >> foreground.\n"\ >> " -p : Does nothing. \n"\ >> + " -t : Test configuration and exit.\n"\ >> " -r : Set round robin realtime >> scheduling \n"\ >> " -v : Display version and SVN >> revision of Corosync and exit.\n"); >> logsys_system_fini(); >> @@ -1283,8 +1288,10 @@ int main (int argc, char **argv, char **envp) >> corosync_exit_error (COROSYNC_DONE_LOGCONFIGREAD); >> } >> >> - log_printf (LOGSYS_LEVEL_NOTICE, "Corosync Cluster Engine ('%s'): >> started and ready to provide service.", VERSION); >> - log_printf (LOGSYS_LEVEL_INFO, "Corosync built-in features:" >> PACKAGE_FEATURES ""); >> + if (!testonly) { >> + log_printf (LOGSYS_LEVEL_NOTICE, "Corosync Cluster Engine >> ('%s'): started and ready to provide service.", VERSION); >> + log_printf (LOGSYS_LEVEL_INFO, "Corosync built-in features:" >> PACKAGE_FEATURES ""); >> + } >> >> /* >> * Make sure required directory is present >> @@ -1336,6 +1343,10 @@ int main (int argc, char **argv, char **envp) >> corosync_exit_error (COROSYNC_DONE_MAINCONFIGREAD); >> } >> >> + if (testonly) { >> + corosync_exit_error (COROSYNC_DONE_EXIT); >> + } >> + >> ip_version = totem_config.ip_version; >> >> totem_config.totem_memb_ring_id_create_or_load = >> corosync_ring_id_create_or_load; >> diff --git a/man/corosync.8 b/man/corosync.8 >> index 59b2dda..559b392 100644 >> --- a/man/corosync.8 >> +++ b/man/corosync.8 >> @@ -50,6 +50,9 @@ Does nothing (was: "Do not set process priority" - >> this is now the default). >> .B -r >> Set round robin realtime scheduling. >> .TP >> +.B -t >> +Test configuration and then exit. >> +.TP >> .B -v >> Display version and SVN revision of Corosync and exit. >> .SH SEE ALSO >> > _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss