command-line: add ovs_cmdl_context
[cascardo/ovs.git] / tests / test-jsonrpc.c
index 2aad5c5..f66dc65 100644 (file)
 
 OVS_NO_RETURN static void usage(void);
 static void parse_options(int argc, char *argv[]);
-static struct command *get_all_commands(void);
+static struct ovs_cmdl_command *get_all_commands(void);
 
 static void
 test_jsonrpc_main(int argc, char *argv[])
 {
-    proctitle_init(argc, argv);
+    struct ovs_cmdl_context ctx = { .argc = 0, };
+    ovs_cmdl_proctitle_init(argc, argv);
     set_program_name(argv[0]);
     service_start(&argc, &argv);
     parse_options(argc, argv);
-    run_command(argc - optind, argv + optind, get_all_commands());
+    ctx.argc = argc - optind;
+    ctx.argv = argv + optind;
+    ovs_cmdl_run_command(&ctx, get_all_commands());
 }
 
 static void
@@ -62,7 +65,7 @@ parse_options(int argc, char *argv[])
         STREAM_SSL_LONG_OPTIONS,
         {NULL, 0, NULL, 0},
     };
-    char *short_options = long_options_to_short_options(long_options);
+    char *short_options = ovs_cmdl_long_options_to_short_options(long_options);
 
     for (;;) {
         int c = getopt_long(argc, argv, short_options, long_options, NULL);
@@ -166,7 +169,7 @@ handle_rpc(struct jsonrpc *rpc, struct jsonrpc_msg *msg, bool *done)
 }
 
 static void
-do_listen(int argc OVS_UNUSED, char *argv[])
+do_listen(struct ovs_cmdl_context *ctx)
 {
     struct pstream *pstream;
     struct jsonrpc **rpcs;
@@ -174,9 +177,9 @@ do_listen(int argc OVS_UNUSED, char *argv[])
     bool done;
     int error;
 
-    error = jsonrpc_pstream_open(argv[1], &pstream, DSCP_DEFAULT);
+    error = jsonrpc_pstream_open(ctx->argv[1], &pstream, DSCP_DEFAULT);
     if (error) {
-        ovs_fatal(error, "could not listen on \"%s\"", argv[1]);
+        ovs_fatal(error, "could not listen on \"%s\"", ctx->argv[1]);
     }
 
     daemonize();
@@ -249,7 +252,7 @@ do_listen(int argc OVS_UNUSED, char *argv[])
 }
 
 static void
-do_request(int argc OVS_UNUSED, char *argv[])
+do_request(struct ovs_cmdl_context *ctx)
 {
     struct jsonrpc_msg *msg;
     struct jsonrpc *rpc;
@@ -259,18 +262,18 @@ do_request(int argc OVS_UNUSED, char *argv[])
     char *string;
     int error;
 
-    method = argv[2];
-    params = parse_json(argv[3]);
+    method = ctx->argv[2];
+    params = parse_json(ctx->argv[3]);
     msg = jsonrpc_create_request(method, params, NULL);
     string = jsonrpc_msg_is_valid(msg);
     if (string) {
         ovs_fatal(0, "not a valid JSON-RPC request: %s", string);
     }
 
-    error = stream_open_block(jsonrpc_stream_open(argv[1], &stream,
+    error = stream_open_block(jsonrpc_stream_open(ctx->argv[1], &stream,
                               DSCP_DEFAULT), &stream);
     if (error) {
-        ovs_fatal(error, "could not open \"%s\"", argv[1]);
+        ovs_fatal(error, "could not open \"%s\"", ctx->argv[1]);
     }
     rpc = jsonrpc_open(stream);
 
@@ -289,7 +292,7 @@ do_request(int argc OVS_UNUSED, char *argv[])
 }
 
 static void
-do_notify(int argc OVS_UNUSED, char *argv[])
+do_notify(struct ovs_cmdl_context *ctx)
 {
     struct jsonrpc_msg *msg;
     struct jsonrpc *rpc;
@@ -299,18 +302,18 @@ do_notify(int argc OVS_UNUSED, char *argv[])
     char *string;
     int error;
 
-    method = argv[2];
-    params = parse_json(argv[3]);
+    method = ctx->argv[2];
+    params = parse_json(ctx->argv[3]);
     msg = jsonrpc_create_notify(method, params);
     string = jsonrpc_msg_is_valid(msg);
     if (string) {
         ovs_fatal(0, "not a JSON RPC-valid notification: %s", string);
     }
 
-    error = stream_open_block(jsonrpc_stream_open(argv[1], &stream,
+    error = stream_open_block(jsonrpc_stream_open(ctx->argv[1], &stream,
                               DSCP_DEFAULT), &stream);
     if (error) {
-        ovs_fatal(error, "could not open \"%s\"", argv[1]);
+        ovs_fatal(error, "could not open \"%s\"", ctx->argv[1]);
     }
     rpc = jsonrpc_open(stream);
 
@@ -322,12 +325,12 @@ do_notify(int argc OVS_UNUSED, char *argv[])
 }
 
 static void
-do_help(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
+do_help(struct ovs_cmdl_context *ctx OVS_UNUSED)
 {
     usage();
 }
 
-static struct command all_commands[] = {
+static struct ovs_cmdl_command all_commands[] = {
     { "listen", NULL, 1, 1, do_listen },
     { "request", NULL, 3, 3, do_request },
     { "notify", NULL, 3, 3, do_notify },
@@ -335,7 +338,7 @@ static struct command all_commands[] = {
     { NULL, NULL, 0, 0, NULL },
 };
 
-static struct command *
+static struct ovs_cmdl_command *
 get_all_commands(void)
 {
     return all_commands;