Re: [PATCH] Implement config file testing mode.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




16.07.2014 17:12, Jan Friesse wrote:
Vladislav,

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.


Yep, agree. Do you think you can prepare such patch? ;)

Ugmh... I'm not sure I completely understand the logging subsystem and
is able to choose the best approach....

Yep, ok. And yes, logging system is really little overcomplicated.

I will put -t behavior improvement to my TODO.

Regards,
  Honza



Anyway, I've changed your patch to include "t" in the getopt string and
pushed.

Thanks! How did I missed that string? ;)


Regards,
   Honza


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




[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux